web介面是乙個應用系統常用的介面,本文所說的輕量級的web server是指應用系統不以web訪問為主,web介面提供輔助作用,例如,修改配置等,此時,對web server的要求是程式簡單、無或者很輕的併發、能嵌入到應用中最好。
linux上nginx的安裝依賴於pcre,這是乙個與perl相容的正規表示式庫。
對大部分人來說,nginx的最大的障礙是複雜的使用規則,特別是主配置檔案nginx.conf的編寫。
lighttpd是乙個德國人領導的開源軟體,它特點與nginx類似:高效、低耗,也有許多**使用它(youtube, wikipedia ,meebo)。它支援fastcgi, cgi, auth, 輸出壓縮(output compress), url重寫, alias等重要功能。
wrhttpd可以說是乙個更小的web server,只有幾十k,完全可以源**級嵌入到我們的應用中,它有兩個版本:
robin_w:目前這個版本只適合於windows平台,它的處理與robin_e類似,但採用的是cpp語言,因此從感覺上稍有不同(這個版本中多乙個cgibase類)。
wrlib目錄包含程式的主體檔案,main.c和cgi.c實際上是乙個應用(例子),www目錄是web server的主目錄,裡面有示例性的html以及其他資源檔案。
wrlib目錄下各檔案的說明如下。
analysis.c
對http請求的句法分析
server實現的主框架,包括初始化、偵聽、多執行緒處理及退出
mg_compat.c
一些檔案或socket操作的巨集,函式start_thread(跨平台的執行緒函式)
misc.c
主要定義了字元轉換函式
request.c
被http.c中的函式呼叫,實現對http請求的處理,當http請求沒有錯誤時,按要求呼叫cgi進行處理或者返回乙個檔案(html等)
wrhash.c
hash的實現
wrio.c
檔案io及網路io的實現
wrmpool.c
記憶體(快取)的管理
wrstring.c
對字串操作的一些擴充套件
程式大致的呼叫過程如下圖。
圖中虛線框中的東西需要自己寫,伺服器的應答主要在http.c和request.c中完成,其餘的檔案都是支撐性質的。值得注意的是,該伺服器是多執行緒的:主線程乙個,偵聽執行緒乙個,處理每個請求的執行緒若干。伺服器的執行引數在http.h中設定,不是將配置單獨寫到配置檔案中,大概為了簡單吧。1. 不同的要求採用不同的web sever,本文的重點在於server的簡單、易用,從這點上看,robin_e是合適的,它**很少,總**大致有2千行,因此即使全部看一遍,也不會太費勁。
2.robin_e能以源**的方式嵌入到我們的應用程式中,與我們的應用共享乙個程序。對穩定性要求高的web server來說,這樣可能不合適,但可以減少程式設計的複雜性,適用於不以web服務作為主要功能的場合。
(結束本文前,找到乙個複雜一些的web sever,叫mongoose,總共不超過2萬行**,且**集中到乙個檔案中,也便於部署或將其源**級嵌入到應用程式中)
一款輕量級的桌面WebServer通訊元件
背景 隨著網際網路的不斷發展,傳統的 web應用程式已經不能完全滿足使用者的需要。由於桌面應用程式相比 web應用程式可以實現更多的功能,並相比 web應用程式更容易訪問本地資源,所以一些界於 bs架構和 cs架構之間的桌面應用 如瘦客戶端 便應運而生,這些桌面應用在客戶機上以 winform 的形...
一款輕量級的桌面WebServer通訊元件
一款輕量級的 web 通訊元件 個人部落格 2007 7 南京背景 隨著網際網路的不斷發展,傳統的 web應用程式已經不能完全滿足使用者的需要。由於桌面應用程式相比 web應用程式可以實現更多的功能,並相比 web應用程式更容易訪問本地資源,所以一些界於 bs架構和 cs架構之間的桌面應用 如瘦客戶...
輕量級重量級
輕量級重量級某種程度上是以啟動程式需要的資源來決定。比如,ejb啟動的時候,需要消耗大量的資源,記憶體,cpu等,所以是重量級。而spring則不,所以是輕量級框架。量級主要是看對容器的依賴性所決定的,依賴性越小,越輕量.ejb往往內部做了很多服務,網上的說法是買一得三 而且你不想要就不行!比方說我...