程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言實現一種簡單的應用服務器內部數據結構的思路(一)

C語言實現一種簡單的應用服務器內部數據結構的思路(一)

編輯:關於C語言

 用C語言寫應用服務器的過程中,由於服務器通常要和多個外圍系統打交道,接受多個客戶端的請求,或調用其他應用的服務,中間可能涉及到多種通訊格式,所以在服務器內部維護一套與外界無關的數據格式是必須的。而在一般的業務開發中,經常需要變動字段,很難在前期確定需要的所有字段,所以內部結構的靈活性與可擴展性也是很重要的,而且底層的字段定義的長度,類型,或者添加新的字段時不應引起上層的修改。

    C語言中最簡單的內部接口可能就是采用一個結構體,這種方式實現最簡單,其實是語言內置,無需實現,而且訪問時存取效率很高;缺點就是結構是靜態編譯的,一旦修改就涉及到程序的重新編譯,而且在報文轉換過程中只能采用大量的重復編碼來拷貝數據,數據的對應關系也是靜態的。而比較靈活的數據存儲方式可能類似java中的Map接口,采用get和put方式,數據采用key->value的方式存儲,這樣靈活性與可擴展性非常好,上層應用編碼舒服,數據與具體的取數據的方法不再靜態的耦合在一起,但是可能涉及到一些內存的動態分配,內部實現要求較高,而且有些效率的問題。本文的思路是在保證上層應用編碼舒服上,采用比較簡單的思路來實現一種內部結構。

    在一般的開發過程中,一次開發所需要的數據是可以定下來的(下次需求的變更需要什麼數據是不定的),所以只要實現字段好添加就可以了,而對上層的應用的數據結構就采用get和put這種key->value的方式。這個思路的核心其實很簡單,只要維護一份配置文件,把需要的所有字段的key名字,需要存儲空間的大小保存在裡面,程序運行後加載這個文件,按照配置將各個字段的存儲位置分配好,並在內存中維護一份key和對應該數據的存儲地址的映射關系就ok了,在get時根據key找到對應的地址,將數據讀出來,put時也類似,在使用上與Map差不多易用,主要的區別就是對應的key必需事先在文件中配置,不然在存取時報錯。當然,在這個的基礎上必須結合實際做一些擴展才比較好用。

作者“OneThin的博客”

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved