为什么 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 还在发展,后续肯定会越来越强大的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值