輕量級的web server

2021-06-12 05:53:04 字數 1677 閱讀 7902

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往往內部做了很多服務,網上的說法是買一得三 而且你不想要就不行!比方說我...