ASP.NET Core服务器综述

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本身。

frameborder="0" scrolling="no" style="border-width: initial; border-style: none; width: 965px; height: 173px;">

如果你将你的应用部署在公共网络上,我们建议你使用IIS,Nginx或者Apache作为反向代理服务器。一个反向代理服务器接收来自网络的HTTP请求并且在经过一些初步处理后将请求传递到Kestrel服务器。过程如下图所示。

frameborder="0" scrolling="no" style="border-width: initial; border-style: none; width: 658px; height: 167px;">

对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。

Jexus with Kestrel

有关如何在Linux使用Jexus作为对Kestrel的转发服务器的更多信息,请参考 Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持

WebListener

如果你在Windows上运行你的ASP.NET Core应用,你可以会遇到以下场景——你既想要在公共网络上部署你的应用,又不能使用IIS,这时,WebListener会是一个可供替代的选择。

frameborder="0" scrolling="no" style="border-width: initial; border-style: none; width: 658px; height: 167px;">

当你只想要在内网中部署你的应用时,WebListener可以被用来代替Kestrel,特别是当你需要Weblistener服务器支持功能中的某项而Kestrel恰好不支持的时候。

frameborder="0" scrolling="no" style="border-width: initial; border-style: none; width: 658px; height: 167px;">

对于内部网络场景,为了能达到最好的性能表现,我们通常推荐Kestrel服务器,但是在另一些场景中,你可以想要使用某项仅WebListener支持的功能。关于WebListener功能的更多信息,请参考WebListener。

ASP.NET Core 服务器基础组件说明

IApplicationBuilderStartup类中的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。你可以自由地实现你的应用所需的功能接口,但至少必须支持IHttpRequestFeatureIHttpRequestFeature接口。

原文地址:http://www.cnblogs.com/Wddpct/p/6123644.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327639.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux中usb设备名,Linux 中识别 USB 设备名字的 4 种方法

摘要: 对于初学者来说,在 Linux 系统里你必须掌握的技术之一就是识别出插入系统里的各种设备。这也许是你的系统硬盘、外部的存储设备或者是可移动设备,比如 USB 设备或 SD 闪存卡等。 现如今,使用 USB 设备来传输文件是十分常见的…

探究Java File类中list()、listFiles()的使用及区别,认识和使用匿名内部类

转载自 探究Java File类中list()、listFiles()的使用及区别,认识和使用匿名内部类 内容概要: 1、认识File类; 2、File的构造函数; 3、list()及其重载方法的使用,匿名内部类的两种使用方式; 4、list…

自动配置原理---SpringBoot

自动配置原理 配置文件到底能写什么?怎么写? SpringBoot官方文档中有大量的配置,我们无法全部记住 分析自动配置原理 我们以**HttpEncodingAutoConfiguration(Http编码自动配置)**为例解释自动配置原理;…

Docker 部署dotnetcore

安装docker 系统还是之前centos 7.1 https://www.docker.com/products/docker#/linux yum update 创建源: /etc/yum.repos.d/docker.repo tee /etc/yum.repos.d/docker.repo <<-EOF [dockerrepo] nameDocker Repository baseurlhttps://yum.dockerproject.org/repo/main/…

虚拟机安装windows ghost版本系统记录完整过程

重点 1.磁盘一定要分成2个 2.直接安装第一个盘 就是进入CD后选1 自动安装 https://blog.csdn.net/hanzl1/article/details/79298787 虚拟机安装windows ghost版本系统记录完整过程 NO如果 2018-02-09 15:26:08 15193 收藏 5 分类专栏&#xff1a; windows 虚拟机 版权 …

linux下kill指令默认信号,Linux基础命令之kill命令

相信大家在使用Linux的过程中都会遇到过某个程序出错导致系统锁死的情况&#xff0c;按照常规的思维我们会通过重启来重新启动系统。然而事实上在Linux中并不需要进行重启就能够完成出错程序的关闭操作。在Linux中我们可以通过使用"kill"命令来强制终结它。那么到底它…

Supervisor 守护 dotnetcore 程序

环境准备 1.设置nginx 服务开机启动 systemctl enable nginx.servic 2.安装Supervisor yum install python-setuptools easy_install supervisor 3.配置Supervisor mkdir /etc/supervisorecho_supervisord_conf > /etc/supervisor/supervisord.conf#指定配置文件supervisord…

import javax.servlet.ServletRequest 关于IDEA javax.servlet.http.HttpServletRequest 不存在 解决方案

https://blog.csdn.net/a290450134/article/details/80964726 关于IDEA javax.servlet.http.HttpServletRequest; 不存在 解决方案 渊丹 2018-07-09 08:32:08 16576 收藏 8 分类专栏&#xff1a; 学习笔记 工具配置 版权 昨天从eclipse导入了一个web项目到idea&…

centos 7 部署 dotnetcore+Angular2 实践

1.准备 服务器: 腾讯云主机(Centos 7.1) http://www.qcloud.com/ 项目:aspnetcoreangular2开源项目模版 https://www.npmjs.com/package/generator-aspnetcore-angular2 该项目使用webpack 打包Angular2, 内网涉及到npm请使用tnpm 2.环境安装 (1)安装dotnetcore https://www.mi…

Python函数之计算规则图形的面积

来个直接的吧&#xff0c;看代码; #codingutf-8 from __future__ import unicode_literals import sys reload(sys) sys.setdefaultencoding(utf-8)#圆形 def yuan():rinput("请输入圆的半径:".decode(utf-8).encode(gbk))print 圆的面积是&#xff1a;,return 3.14*…

FinTech浪潮已到,五大金融场景将迎变革

FinTech是FinanceTechnology的缩写&#xff0c;可译为“金融科技”&#xff0c;与“互联网金融”一词相比&#xff0c;它更能突出科技的重要性。FinTech所带来的&#xff0c;不仅仅是升级金融领域的各种服务&#xff0c;而是一场革命&#xff0c;是金融领域的颠覆性未来。 FinT…

linux下q和q 的区别,linux命令中q、wq、q!的区别

Linux中没这个命令&#xff1b;只是在vi中有这个指令&#xff1b;q表示退出&#xff1b;w表示保存退出&#xff1b;q!表示强制退出。linux命令是对Linux系统进行管理的命令&#xff0c;对于Linux系统来说&#xff0c;无论是中央处理器、内存、磁盘驱动器、键盘、鼠标&#xff0…

spingmvc 通过xml配置redis jedispol 有密码 通过xml配置redis中的 jedispool(有密码)

https://blog.csdn.net/programmer_hard/article/details/103700334 通过xml配置redis中的 jedispool(有密码) programmer_hard 2019-12-25 15:55:16 209 收藏 分类专栏&#xff1a; java 版权 从git上拉了个项目一直报错, 看了下原因是因为redis一直没连接上. 于是看了下…

MVC自动配置原理---SpringBoot

MVC自动配置原理 官网阅读 在进行项目编写前&#xff0c;我们还需要知道一个东西&#xff0c;就是SpringBoot对我们的SpringMVC还做了哪些配置&#xff0c;包括如何扩展&#xff0c;如何定制。 只有把这些都搞清楚了&#xff0c;我们在之后使用才会更加得心应手。途径一&…

idea合并分支 idea git 合并分支

当前在dev上面 将dev_yjb合并到dev上面 idea git 合并分支 awesome_go 2018-07-12 16:22:20 50149 收藏 52 分类专栏&#xff1a; git idea git的使用&#xff08;四&#xff09;git建立分支与合并分支 作者&#xff1a;马育民 • 2017-11-10 17:05 • 阅读&#xff1a;10…

.NET Core New csproj 如何发布可执行文件

一、前言 .NET工具链在最新的Preview3版本中&#xff0c;引入了新的MSBuild项目系统&#xff0c;项目文件又回归了.csproj的XML文件来管理&#xff0c;项目文件、包引用、程序集引用、.NET Core工具集、发布内容定义等内容。本文主要将主要讨论&#xff0c;如何在新的项目系统中…

java.util.Stack类简介

转载自 java.util.Stack类简介 Stack是一个后进先出&#xff08;last in first out&#xff0c;LIFO&#xff09;的堆栈&#xff0c;在Vector类的基础上扩展5个方法而来 Deque&#xff08;双端队列&#xff09;比起Stack具有更好的完整性和一致性&#xff0c;应该被优先使用…

.NET Core 首例 Office 开源跨平台组件(NPOI Core)

前言 最近项目中&#xff0c;需要使用到 Excel 导出&#xff0c;找了一圈发现没有适用于 .NET Core的&#xff0c;不依赖Office和操作系统限制的 Office 组件&#xff0c;于是萌生了把 NPOI 适配并移植到 .NET Core 的想法。 NPOI 的介绍不多说了&#xff0c;不了解的可以看一下…

员工管理系统---SpringBoot

目录结构 全部代码 package com.kuang.config;import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;//拦截器 public class LoginHandlerInterceptor implements Hand…