爲什麼 Linux 上的 Asp.NET 5 需要 Kestrel ?

諮詢區

  • Freeman Helmuth

當我在 Linux 上部署 ASP.NET 5 時,我試着瞭解整個 Web應用程序框架,所有的文檔我都看過,包括這篇 http://docs.asp.net/en/latest/conceptual-overview/aspnet.html#servers  都沒有找到我想要的答案。

爲什麼 Asp.NET 5 不能棄用 Kestrel 直接和 Nginx 集成?我一直都沒有明白,而且我也在深度思考爲什麼一定是下面這樣?


.NET Core(or mono) --> Kestrel --> Nginx

而且我發現 momo 上的 Asp.NET 和 Asp.NET MVC 已經直接支持 nginx 上的 fastcgi 了。https://www.mono-project.com/docs/web/fastcgi/nginx/

Kestrel 和 nginx 不都是一樣的 httpserver,只不過前者少了一些功能罷了。

回答區

  • agua from mars

ASP.NET Core 並不需要 Kestrel。

你說的是對的,Kestrel 僅僅是一個實現了一些簡單功能的 Http Server, 你可以在 Linux 或者 Mac 上無需開啓 Kestrel 的情況下跑 Asp.NET Core,但前提是你必須要有一個 Http Server 或者 fastCGI server。

Nginx 通常用於給靜態資源做反向代理,同時也可以給動態內容做 gzip壓縮, 這一塊上 Kestrel 並沒有這些特性,當然你也可以寫一個實現特定 Http 功能的 HttpServer。

  • agua from mars

真的,實際部署上你必須要 Kestrel,正如 Agua 所說,理論上:你可以將 Asp.NET Core 跑在 Kestrel 之外的 Http server 上,但前提是這些httpserver要支持 netcore。

然而到目前爲止,也只有 Kestrel 這麼唯一一個支持跑 netcore 的HttpServer,換句話說,目前還不存在用 .NET Core 寫的 FastCGI-Server 庫。

所以說,要想將 .NET Core 和 nginx,apache集成,你所能做的就是將它們的請求代理到 Kestrel 上。

點評區

Linux 和 Mac 平臺上不清楚,在 windows 平臺上可以棄用 Kestrel,將 Http.sys 直接集成到 Asp.NET Core,這是一點問題都沒有的, .net core 還在發展,後續肯定會越來越強大的。

本文分享自微信公衆號 - 一線碼農聊技術(dotnetfly)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章