日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AServer - 基于Asp.net core Kestrel的超迷你http服务器

發布時間:2023/12/4 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AServer - 基于Asp.net core Kestrel的超迷你http服务器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

AServer是基于ASP.NET Core Kestrel封裝的一個超迷你http服務器。它可以集成進你的Core程序里,用來快速的響應Http請求,而不需要集成整個ASP.NET Core MVC 框架。

一:什么是ASever?

  AServer就像它的名字一樣,Just a server,它的功能非常簡單,它唯一的功能就是用來對Http請求做出響應。以前我們開發一個.NET程序,比如控制臺程序,Windows服務等,如果需要對外提供接口,我們通常會在程序里集成WCF,使用WCF對外提供RPC接口。但是現在是.NET Core的時代,我們已經沒有辦法選擇WCF了。而且這些需求往往很簡單,只是想要對外提供幾個接口,查詢一些數據,或者觸發一些功能,如果我們集成整個ASP.NET Core MVC框架又覺得是殺雞用牛刀的感覺。這個時候你或許可以選擇AServer。AServer很簡單,它僅僅是一個dll,這或許正是你想要的。

github地址:https://github.com/kklldog/AServer?歡迎star。

二:使用AServer

  如何使用AServer呢,非常簡單,讓我們看幾個示例代碼就明白了。假設我們現在有個跑定時任務的控制臺程序,這個程序需要對外提供3個Http接口:

  1.查詢所有任務

  2.新增一個任務

  3.刪除一個任務

  下面演示如何使用AServer來實現這3個接口。

  1.新建一個Core的控制臺程序

  

?

  2.從nuget安裝AServer

  

  3.實例化一個Server

  直接new一個Server對象,它默認會監聽本地5000端口。

static void Main(string[] args){var server ?= new Agile.AServer.Server();}

  4.實現查詢所有任務接口

  該接口的請求地址為/api/tasks,請求方法為GET,返回任務列表數組。

  5.實現新增任務接口

  該接口的請求地址為/api/tasks,請求方法為POST,如果新增成功則返回文本"ok"。

  6.實現刪除任務接口

  該接口的請求地址為/api/tasks/:taskId,請求方法為DELETE,如果刪除成功則返回文本"ok"。

 7.啟動服務器

  調用Server.Run()方法啟動服務器。

 8.測試

  至此,演示代碼編寫完了。運行這個控制臺程序,然后用postman來測試下這3個接口,是否能響應我們預期的結果。

  

  測試查詢任務接口

  

  測試新增任務接口

  

  測試刪除任務接口

  

  可以看到我們對這3個接口的測試都返回了預期的值,說明AServer正確的響應了我們的請求。

  9.通過繼承HttpHandlerController實現接口

  另外,還可以通過繼承HttpHandlerController來處理http請求。該方法更接近ASP.NET MVC慣用的方法。編寫一個class繼承自HttpHandlerController,對里面的方法添加[HttpHandler] attribute來指定請求地址跟方法。需要注意的是里面的方法我們約定了簽名:Task (Reqeust,Response)。

  下面的代碼演示了如果通過繼承HttpHandlerController來實現一系列汽車信息管理的api接口:

 10.Request/Response

  通過上面的演示代碼,不難發現,AServer對Http請求的處理都封裝在HttpHandler對象中。HttpHandler類有3個屬性,Method,Path,Handler。Method表示Http請求的方式,Path表示請求的路徑,Handler是一個Func,業務邏輯就寫在這里。Handler的這個Func的方法簽名為Task (Request,Response)。

其中Request封裝了本次Http請求的請求部分的參數,它會解析Http請求,把headers,queryStrings,params解析成dynamic對象,所以調用參數的時候跟寫JavaScript類似,如:

var name = req.Params.name; var id = req.Query.id; var contentType = req.Header.contentType;

Response則封裝了幾個Write方法,用來寫響應的內容,狀態碼,Header等內容,如:

resp.Write("ok"); resp.Write("NotFound", HttpStatusCode.NotFound, null); var headers = new List<KeyValuePair<string, string>>(); headers.Add(new KeyValuePair<string, string>("Content-Type", "charset=utf-8")); resp.Write($"user 001 be deleted .", HttpStatusCode.OK, headers); resp.WriteJson("{name:'kklldog'}");

?

三:總結

  對于AServer的介紹也差不多了。希望對同學們有幫助。AServer雖然功能很簡單,就是對Http請求做出響應。但是我也可以說AServer的功能很強大,因為它能對Http請求做出響應。因為從Http的本質上來說,AServer幾乎可以實現所有基于Http的功能。我們可以用它來實現restful api,可以用來實現各種管理系統,可以用來實現cms系統。。。

  不管使用ASP.NET MVC或者JSP或者node express等web框架開發bs/web系統的時候其實套路都是一樣的,概況一下就這么幾步:

  1.攔截請求(路由)

  2.解析請求攜帶的參數(url,headers,querystrings,body等)

  3.根據參數處理業務(查數據,持久數據等)

  4.根據業務處理結果做出響應(html,json,xml等)

  我們只要了解這個套路,不管用什么技術,什么框架,其實都是一樣的,只要查下api,弄明白怎么獲取http請求的參數,怎么做出響應。AServer也實現了這個套路。如果有心的話,對AServer實現過濾器,參數綁定,視圖引擎等功能,那基本上就是一個簡易的mvc框架了。當然如果你的業務復雜,請選用ASP.NET Core MVC,它功能強大,性能強悍;如果你只是需要實現幾個簡單的Http接口,可以考慮AServer來實現。

原文地址:?https://www.cnblogs.com/kklldog/p/agileaerver.html


.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結

以上是生活随笔為你收集整理的AServer - 基于Asp.net core Kestrel的超迷你http服务器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。