Mozi.HttpEmbedded嵌入式 Web 服務(wù)器
Mozi.HttpEmbedded是一個(gè)基于.Net構(gòu)建的嵌入式Web服務(wù)器,為.Net App提供web服務(wù)功能。
嵌入式的目標(biāo)不是單片機(jī),而是.Net應(yīng)用程序。
此項(xiàng)目并不會(huì)實(shí)現(xiàn)非常豐富的大型Web服務(wù)器功能
項(xiàng)目基于.Net Framework 4.0開發(fā),也可轉(zhuǎn)換為.Net Core/.Net Standard項(xiàng)目
特點(diǎn)
HttpEmbedded在Socket之上使用異步單線程模型,構(gòu)建了一個(gè)HTTP服務(wù)器。
- 嵌入式
本項(xiàng)目可作為.Net應(yīng)用的內(nèi)嵌Web服務(wù)器,亦可作為單獨(dú)Web服務(wù)器
- 輕量化
項(xiàng)目編譯結(jié)果小,部署程序占用系統(tǒng)資源少
- 可用性
開箱即用,配置少,可控性高。同時(shí)遵從.Net平臺(tái)Web項(xiàng)目開發(fā)的典型規(guī)范。
- 低耦合
不改變現(xiàn)有業(yè)務(wù)邏輯,無(wú)需對(duì)現(xiàn)有代碼進(jìn)行改造,即可實(shí)現(xiàn)現(xiàn)有功能面向HTTP提供服務(wù)器
- 可控性
宿主程序?qū)eb服務(wù)高度可控
典型應(yīng)用場(chǎng)景
業(yè)務(wù)體系或功能已開發(fā)完成,期望在項(xiàng)目中加入一個(gè)Web服務(wù)器功能,同時(shí)不能對(duì)現(xiàn)有代碼進(jìn)行大規(guī)模改動(dòng)。
在經(jīng)典的Asp.Net開發(fā)中,Web服務(wù)的部署高度依賴于IIS,.Net Core項(xiàng)目則可基于Kestrel/IIS部署。 基于KESTREL或IIS部署的WEB項(xiàng)目,都基于Asp.Net體系。
原理及功能
-
HTTP協(xié)議 實(shí)現(xiàn)HTTP/1.1
-
通訊認(rèn)證 實(shí)現(xiàn)基本認(rèn)證(Basic)
-
Cookie管理 支持標(biāo)準(zhǔn)Cookie
-
HTTP請(qǐng)求方法 GET POST
-
路由 實(shí)現(xiàn)了URL管理,參見Router模塊
-
引用與依賴關(guān)系 依賴于.Net Framework
-
Payload壓縮 使用GZip壓縮
-
字符編碼 字符編碼部分使用UTF-8
功能與版本迭代
不定期對(duì)HttpEmbedded的功能進(jìn)行完善,解決各種BUG。HTTP標(biāo)準(zhǔn)功能繁多,需要一步步實(shí)現(xiàn)。
版權(quán)說明
本項(xiàng)目采用MIT開源協(xié)議,歡迎復(fù)制,引用和修改。
使用說明
HttpServer hs = new HttpServer();
//配置端口并啟動(dòng)服務(wù)器
hs.SetPort(9000).Start();
//開啟認(rèn)證
hs.UseAuth(AuthorizationType.Basic).SetUser("admin", "admin");
//開啟靜態(tài)文件支持
hs.UseStaticFiles("");
//路由映射
Router router = Router.Default;
router.Map("services/{controller}/{id}");
Console.ReadLine();
