01、NetCore2.0优化之Web服务器 与 IIS解耦
在Asp.Net Core 2.0中,是如何实现跨平台的?不使用IIS了,在linux上的WebServer是什么?

------------------------------------------------------------------------------------------------------------

写在前面:这是一个系列的文章,总目录请移步:NetCore2.0技术文章目录

------------------------------------------------------------------------------------------------------------

 
一、历史问题
ASP.NET Core出现之前,ASP.NET应用的Web服务器都是IIS。它强依赖于IIS,不具有扩展性;又因为IIS只有Windows版本,没有如Linux等版本,造成了ASP.NET Web应用只能运行在Windows操作系统上。
 
二、OWIN规范的出现
OWIN(Open Web Interface fro .NET),这个规范定义了一组接口,用来解耦Web服务器和Web应用程序。它规范和定义了Web服务器和Web应用程序之间的相互调用关系。也就是说,只要实现了OWIN接口的Web服务器都可以支持ASP.NET Web应用程序的运行了。
OWIN规范的详细情况可访问:http://owin.org/
 
三、ASP.NET Core默认提供的Web服务器
目前实现了OWIN接口的WEB服务器有很多,比如Katana、Kestrel等。ASP.NET Core默认提供的WEB服务器是Kestrel,它是跨平台的,可以运行在Linux或者Windows操作系统上。
 
四、ASP.NET Core 2.0下的Web服务器使用姿势
  • 经典模式
使用Kestrel做SelfHost(自宿主)模式:Kestrel 没有安全、缓存等功能,因此不应该把 Kestrel 暴露到公网。
      
  • 反向代理模式
也可以使用 IIS、Nginx 做反向代理服务器:反向代理收到Http Request后,经过预处理后,再转发给 Kestrel,由反向代理服务器进行缓存、安全等处理。
      
 
  五、在代码中指定Kestrel为WebServer
 1 using Microsoft.AspNetCore.Hosting;
2
3 namespace MyWeb
4 {
5 class Program
6 {
7 static void Main(string[] args)
8 {
9 var host = new WebHostBuilder()
10 .UseKestrel() // 指定WebServer为Kestrel
11 .UseStartup<StartUpB>() // 配置WebHost
12 .Build();
13
14 host.Run(); // 启动WebHost
15 }
16 }
17 }
注:UserXXX是现在很流行的用法,一般是底层提供了一个插件框架(依赖倒置DI),并约定了一些接口规范,上层根据需要实现这些接口规范,通过UseXXX的方式注册到插件框架中。参考:05、NetCore2.0插件框架之Web应用启动流程源码初窥

01、NetCore2.0优化之Web服务器 与 IIS解耦的更多相关文章

  1. ASP.NET 4.0尚未在 Web 服务器上注册 解决方法

    使用VS2010创建web应用程序时出现如下提示ASP.NET 4.0尚未在 Web 服务器上注册.为了使网站正确运行,可能需要手动将 Web 服务器配置为使用 ASP.NET 4.0,按 F1 可了 ...

  2. Win10 兼容性 Visual studio web应用程序 ASP.NET 4.0 尚未在 Web 服务器上注册

    系统升级到windows10 ,Visual studio 创建web应用程序时出现如下提示ASP.NET 4.0尚未在 Web 服务器上注册.为了使网站正确运行,可能需要手动将 Web 服务器配置为 ...

  3. Windows 10 下ASP.NET4.0尚未在Web服务器上注册

    系统换成Win10后,打开VS2012出现如下问题: 网上查找了,大部分都是 C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319 并管理员运行aspnet_ ...

  4. 在IIS7.5上添加.NET4.0程序的虚拟目录时提示ASP.NET 4.0尚未在 Web 服务器上注册

    使用VS2010创建web应用程序时出现如下提示: ASP.NET 4.0尚未在 Web 服务器上注册. 解决方法: 首先IIS应用程序池添加 net framework4.0版本. 接着找到C:\W ...

  5. 02、NetCore2.0优化之Nuget包

    02.NetCore2.0优化之Nuget包 在NetCore2.0中的包是如何管理的?如何存储的?微软做了哪些优化工作? -------------------------------------- ...

  6. ASP.NET 4.0尚未在 Web 服务器上注册

    ASP.NET 4.0尚未在 Web 服务器上注册 解决方法 使用VS2010创建web应用程序时出现如下提示ASP.NET 4.0尚未在 Web 服务器上注册.为了使网站正确运行,可能需要手动将 W ...

  7. 解决Win10 中打开VS2012 出现“ASP.NET 4.0 尚未在 Web 服务器上注册”

    系统升级为win10后,在使用vs2012打开原来的项目时,会出现“ASP.NET 4.0 尚未在 Web 服务器上注册”的问题,如图: 想到在win8.1系统下,也出现过同样的问题,就直接使用命令提 ...

  8. IISExpress.无法启动IIS Express Web 服务器.Starting IIS Express... IIS Express is running

    x 提示: 无法启动IIS Express Web 服务器. 来自IIS Express的输出: Starting IIS Express... IIS Express is running 总结: ...

  9. win7下.NET 2.0未在web服务器上注册的问题(转)

    转自:http://blog.sina.com.cn/s/blog_6d15b547010192hx.html 电脑装了win7操作系统,装上vs2008后运行dotnetnuke项目后出现" ...

随机推荐

  1. weka实际操作--构建分类、回归模型

    weka提供了几种处理数据的方式,其中分类和回归是平时用到最多的,也是非常容易理解的,分类就是在已有的数据基础上学习出一个分类函数或者构造出一个分类模型.这个函数或模型能够把数据集中地映射到某个给定的 ...

  2. http.request的请求

    var http=require('http'); var request=require('request'); var body = { "data":{ "id&q ...

  3. 源码实现 --> strcmp

    比较字符串大小 函数 int strcmp(const char *string1, const char *string2); 比较字符串string1和string2大小. 返回值< 0,  ...

  4. 如何让shell脚本自杀

    有些时候我们写的shell脚本中有一些后台任务,当脚本的流程已经执行到结尾处并退出时,这些后台任务会直接挂靠在init/systemd进程下,而不会随着脚本退出而停止. 例如: [root@maria ...

  5. 如何正确使用Java异常处理机制

    文章来源:leaforbook - 如何正确使用Java异常处理机制作者:士别三日 第一节 异常处理概述 第二节 Java异常处理类 2.1 Throwable 2.1.1 Throwable有五种构 ...

  6. runtime.getruntime.availableprocessors

    1:获取cpu核心数: Runtime.getRuntime().availableProcessors(); 创建线程池: Executors.newFixedThreadPool(nThreads ...

  7. JAVA基础之字符串和面向对象

    * [String 类] * 1. String类位于java.lang包中,java.lang是java的语言包,使用时无须导包,自动导入. * * 2.拿到一个字符串对象: * ①字面量声明:St ...

  8. [福大软工] W班 软工实践原型设计—成绩公布

    作业地址 https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1715W/homework/909 作业要求 详见作业地址 存在问题 1. ...

  9. java-JProfiler(一)-安装以及简介

    一.下载 下载http://www.ej-technologies.com/download/jprofiler/files 目前网上有9.2版本的使用方式,10.暂时还无法完美使用 可以下载zip包 ...

  10. Beta敏捷冲刺每日报告——Day5

    1.情况简述 Beta阶段Scrum Meeting 敏捷开发起止时间 2017.11.6 00:00 -- 2017.11.7 00:00 讨论时间地点 2017.11.6 早9:30,电话会议会议 ...