ASP.NET Core服务器综述
来源:互联网 发布:obs直播软件ipad 编辑:程序博客网 时间:2024/05/26 05:52
ASP.NET Core应用通过一个进程内的HTTP服务器实例实现运行,这个服务器实例侦听HTTP请求并将请求作为组成HttpContext的一组请求功能集暴露给我们的应用程序。
ASP.NET Core搭载两个服务器实现:
Kestrel是一个基于libuv的跨平台HTTP服务器,libuv是一个跨平台的异步I/O库WebListener是一个基于HTTP.SYS内核驱动的“Windows专用”HTTP服务器
Kestrel
Kestrel是包含在ASP.NET Core新项目模板中默认的web服务器。如果你的应用只接收来自内部网络的请求,你可以只使用Kestrel本身。
如果你将你的应用部署在公共网络上,我们建议你使用IIS,Nginx或者Apache作为反向代理服务器。一个反向代理服务器接收来自网络的HTTP请求并且在经过一些初步处理后将请求传递到Kestrel服务器。过程如下图所示。
对edge deployments(从公共网络上接触到流量的部署方式)使用反向代理最重要的一个原因就是安全性。因为Kestrel相对较新,对抵御安全攻击至今还没有一个完整的功能补充。安全性处理包括但不限于适当的超时,大小的限制,以及并发连接限制等问题。有关何时使用Kestrel与反向代理的更多信息,请参见Kestrel。
IIS with 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。
Nginx with Kestrel
有关如何在Linux使用Nginx作为对Kestrel的反向代理服务器的更多信息,请参考Publish to a Linux Production Environment。
Apache with Kestrel
有关如何在Linux使用Apache作为对Kestrel的反向代理服务器的更多信息,请参考Using Apache Web Server as a reverse proxy。
WebListener
如果你在Windows上运行你的ASP.NET Core应用,你可以会遇到以下场景——你既想要在公共网络上部署你的应用,又不能使用IIS,这时,WebListener会是一个可供替代的选择。
当你只想要在内网中部署你的应用时,WebListener可以被用来代替Kestrel,特别是当你需要Weblistener服务器支持功能中的某项而Kestrel恰好不支持的时候。
对于内部网络场景,为了能达到最好的性能表现,我们通常推荐Kestrel服务器,但是在另一些场景中,你可以想要使用某项仅WebListener支持的功能。关于WebListener功能的更多信息,请参考WebListener。
ASP.NET Core 服务器基础组件说明
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
和IHttpResponseFeature
接口。
- ASP.NET Core服务器综述
- ASP.NET Core服务器综述
- ASP.NET Core WebListener 服务器
- ASP.NET Core的Kestrel服务器
- ASP.NET Core的Kestrel服务器
- 01、ASP.Net Core 2.0 Web服务器 和 IIS解耦
- ASP.NET Core 网站发布到Linux服务器
- ASP.NET Core 介绍
- ASP.NET Core
- Asp.net Core demo
- ASP.Net Core
- ASP.NET Core
- ASP.NET Core 日志
- ASP.NET Core
- ASP.NET Core
- Asp.Net Core-配置
- Asp.Net Core-身份验证
- ASP.NET Core
- 筛法求素数
- Volley网络框架详解
- linux 如何杀掉 tty终端
- [LintCode]407.加一
- LeetCode-13Sum
- ASP.NET Core服务器综述
- Java实现:利用栈进行后缀表达式计算实例
- Python的基础知识点(二)
- 自定义复选框,复选框样式修改,重写复选框
- CCF之Z形扫描
- 帧动画的实现
- AutoPilot02(去哪儿2017校招真题) 无法AC
- linux设备和驱动加载的先后顺序
- 场景文字检测之TextBoxes