这篇文章主要讲解了“ASP.NET Core服务器是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ASP.NET Core服务器是什么”吧!
ASP.NET Core应用通过一个进程内的HTTP服务器实例实现运行,这个服务器实例侦听HTTP请求并将请求作为组成HttpContext的一组请求功能集暴露给我们的应用程序。
ASP.NET Core搭载两个服务器实现:
Kestrel是一个基于libuv的跨平台HTTP服务器,libuv是一个跨平台的异步I/O库
WebListener是一个基于HTTP.SYS内核驱动的“Windows专用”HTTP服务器
Kestrel是包含在ASP.NET Core新项目模板中默认的web服务器。如果你的应用只接收来自内部网络的请求,你可以只使用Kestrel本身。
如果你将你的应用部署在公共网络上,我们建议你使用IIS,Nginx或者Apache作为反向代理服务器。一个反向代理服务器接收来自网络的HTTP请求并且在经过一些初步处理后将请求传递到Kestrel服务器。过程如下图所示。
对edge deployments(从公共网络上接触到流量的部署方式)使用反向代理最重要的一个原因就是安全性。因为Kestrel相对较新,对抵御安全攻击至今还没有一个完整的功能补充。安全性处理包括但不限于适当的超时,大小的限制,以及并发连接限制等问题。有关何时使用Kestrel与反向代理的更多信息,请参见Kestrel。
当你使用IIS或者IIS Express作为对ASP.NET Core的反向代理时,ASP.NET Core应用将运行在由该IIS工作进程分离出的一个进程中。在该IIS进程中,存在着一个特殊的IIS模块,它被用来协调反向代理的关系。它就是ASP.NET Core模块。ASP.NET Core模块的主要功能包括启动ASP.NET Core应用,当应用崩溃时处理重启,向应用传送HTTP流量。更多的信息,请参考ASP.NET Core Module。
有关如何在Linux使用Nginx作为对Kestrel的反向代理服务器的更多信息,请参考Publish to a Linux Production Environment。
有关如何在Linux使用Apache作为对Kestrel的反向代理服务器的更多信息,请参考Using Apache Web Server as a reverse proxy。
有关如何在Linux使用Jexus作为对Kestrel的转发服务器的更多信息,请参考 Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持
如果你在Windows上运行你的ASP.NET Core应用,你可以会遇到以下场景——你既想要在公共网络上部署你的应用,又不能使用IIS,这时,WebListener会是一个可供替代的选择。
当你只想要在内网中部署你的应用时,WebListener可以被用来代替Kestrel,特别是当你需要Weblistener服务器支持功能中的某项而Kestrel恰好不支持的时候。
对于内部网络场景,为了能达到最好的性能表现,我们通常推荐Kestrel服务器,但是在另一些场景中,你可以想要使用某项仅WebListener支持的功能。关于WebListener功能的更多信息,请参考WebListener。
IApplicationBuilder
在Startup
类中的Configure
方法暴露了IFeatureCollection
类的ServerFeatures
属性。Kestrel和WebListener服务器都只提供了一个单一的功能,IServerAddressesFeature
,但是不同的服务器实现可能会显示额外的功能。
IServerAddressesFeature
可以用来找出哪些服务器实例端口在运行时被绑定。
ServerFeatures
的注释为“Gets the set of HTTP features the application's server providers”。
你可以创建自定义服务器实现以用来替代Kestrel或者WebListener。Open Web Interface for .NET(OWIN) guide 说明了怎么去实现一个Nowin-based IServer。你可以自由地实现你的应用所需的功能接口,但至少必须支持IHttpRequestFeature
和IHttpRequestFeature
接口。
感谢各位的阅读,以上就是“ASP.NET Core服务器是什么”的内容了,经过本文的学习后,相信大家对ASP.NET Core服务器是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。