ASP.NETCore的Kestrel服务器
什么是Kestrel服务器
Kestrel是开源的(GitHub提供的源代码),事件驱动的异步I / O服务器,用于在任何平台上托管ASP.NET应用程序。这是一个监听服务器和一个命令行界面。您将侦听服务器安装在Windows或Linux服务器上,并在计算机上安装命令行界面(安装.netcore会自动一整套安装)。
它是与ASP.NET Core一起由微软推出的。所有ASP.NET Core应用程序都使用新的MVC框架和Kestrel Web服务器。这些新的应用程序可以运行在完整的.NET Framework或.NET Core上。
Kestrel Web服务器的概述
Kestrel被认为是较新的ASP.NET应用程序的首选Web服务器(请参阅这篇文章与IIS比较, why you need both)。它j机遇libuv library,与node.js使用的库相同。Libuv支持事件驱动的编程风格。它的一些核心工具包括:
- 非阻塞网络支持
- 异步文件系统访问
- 计时器
- 子进程
它允许ASP.NET Core应用程序在其他跨平台的Web服务器(如Jexus,Nginx和Apache)上轻松运行,而无需解决不同的启动配置。通过使用Kestrel作为进程内服务器, 即使有跨平台支持,应用程序也将具有一致的处理(Startup (Main(), Startup.ConfigireServices(), Startup.Configure())
Kestrel Web服务器的工作原理
应用程序通常是为了响应人的行为而编写的。使用事件驱动的编程,有一个循环来监听事件。然后触发一个回调函数。为了减少SYS调用的数量,所有其他工作都在标准.NET工作线程的托管代码中执行。
Kestrel提供了一个事件循环和基于回调的I / O通知。Libuv管理从操作系统收集和监视事件。此外,用户可以在事件发生时注册回调。所以,Kestrel使用libuv进行I / O工作,并支持运行多个事件循环。
由于它轻巧,Kestrel不允许你进行SSL termination,URL重写或GZip压缩,但是相同的轻量级设计使他比起其他服务器会更快。实际上,它比静态和纯文本操作的node.js快6倍。
Kestrel的好处
Kestrel支持.NET Core支持的所有平台和版本。此外,它默认包含的ASP.NET Core新项目模板中,可以提供更好的请求处理的性能。在Visual Studio中创建新项目时,项目会自动配置为在Kestrel中运行。
如前所述,这不是一个功能齐全的网络服务器,但这正是为什么它很快。如果您觉得需要速度,Kestrel就是答案 - 特别是因为它被设计用于ASP.NETCore的生产。
你可以做的是在一个功能更全面的网络服务器(如IIS或NGNIX)之后运行它。您可以使用HttpPlatformHandler在IIS 后面运行它,或者在Visual Studio 后面使用HttpPlatformHandler在IIS Express 后面运行它。而且,您需要在ASP.NET Core项目中支持它,以便开发人员可以在任何支持的平台上方便地运行它们。
现在,即使您不是跨平台的,也可以直接从web服务器命令行上运行ASP.NET。
由于Kestrel不是一个全功能的Web服务器,您应该让web程序在在IIS或NGNIX 之后运行(IIS;Jexus或者NGINX代理web程序,提供转发到Kestrel的形式工作)。它旨在使ASP.NET尽可能快,但其管理安全性和提供静态文件的能力有限。如果您使用的是Kestrel作为web服务器的ASP.NET Core,则 可以利用 Prefix来实现强大的代码分析功能。
What is Kestrel Web Server? How It Works, Benefits, and More
ASP.NETCore的Kestrel服务器的更多相关文章
- ASP.NET Core的Kestrel服务器
原文地址----Kestrel server for ASP.NET Core By Tom Dykstra, Chris Ross, and Stephen Halter Kestrel是一个基于l ...
- ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解
ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解 1.1. 名词解释 1.2. Kestrel基本工作原理 1.2.1. Kestrel的基本架构 1.2.2. Ke ...
- [转帖]ASP.NET Core的Kestrel服务器
ASP.NET Core的Kestrel服务器 https://cloud.tencent.com/developer/article/1023247 在这篇文章中: 何时使用Kestrel和反向代理 ...
- [转帖]ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解
ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解 https://www.cnblogs.com/vipyoumay/p/7525478.html ASP.NET C ...
- ASP.NET Core的Kestrel服务器(转载)
Kestrel是一个基于libuv的跨平台ASP.NET Core web服务器,libuv是一个跨平台的异步I/O库.ASP.NET Core模板项目使用Kestrel作为默认的web服务器.Kes ...
- AServer - 基于Asp.net core Kestrel的超迷你http服务器
AServer是基于ASP.NET Core Kestrel封装的一个超迷你http服务器.它可以集成进你的Core程序里,用来快速的响应Http请求,而不需要集成整个ASP.NET Core MVC ...
- Asp.Net Core 3.0 Kestrel服务器下 高性能 WebSocket Server
最近研究.net core 的各种高性能类型,内存池之类的东西,基于kestrel 服务器的websocket ,写个例子练下手 把原生的Websocket用ArrayPool<T>,Me ...
- 为ASP.NetCore程序启用SSL
紧接着上一篇搭建连接MySql的三层架构的ASP.NetCore2.0的WebApi的案例,这篇来实现为ASP.NetCore启用SSL支持 由于ASP.NetCore默认服务器Kestrel不像ii ...
- Asp.NetCore轻松学-部署到 IIS 进行托管
前言 经过一段时间的学习,终于来到了部署服务这个环节,.NetCore 的部署方式非常的灵活多样,但是其万变不离其宗,所有的 Asp.NetCore 程序都基于端口的侦听,在部署的时候仅需要配置侦听地 ...
随机推荐
- php 抽象类abstract
程序中,有些类的作用只是用来继承,无须实例化: 为了满足类的这种需求,php提供了抽象类的概念 ,关键词abstract: 抽象类原则: 抽象类不能被实例化 有抽象方法的类一定是抽象类:类必须要abs ...
- centos6.5 redis搭建
redis安装1.wget http://download.redis.io/redis-stable.tar.gz2.tar -zxvf redis-stable.tar.gz3.cd redis- ...
- C#学习笔记-迭代器模式
什么是迭代器模式? 迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示. 何时使用迭代器模式? 当需要访问一个聚合对象,而且不管这些对象是什么都需要 ...
- 第一个 spring-boot 程序
本例使用 maven 作为项目管理工具 新建 pom.xml 文件,添加 spring-boot-starter-web 依赖: <dependency> <groupId>o ...
- Makefile的伪目标
1.Makefile伪目标的格式: .PHONY : cleanclean: rm xxxx 2.Makefile伪目标的作用: 第一种情况: 如果我们需要书写这样的一个规则:规则所定义的命令不是去创 ...
- 详细介绍Spring 5的那些新特性与增强
Spring5 是一个重要的版本,距离SpringFramework4差不多四年.在此期间,大多数增强都是在 SpringBoot 项目中完成的.在本文中,我们将很快了解到Spring5发行版中的一些 ...
- mvc中传入字典的模型项的类型问题
刚项目一直报这个错,找了一会发现忘了给他模型项了,我把这个小问题纪录下来,希望你们别犯这个小错
- flask-信号
flask中的十个内置信号:request_started = _signals.signal('request-started') # 请求到来前执行 request_finished = _sig ...
- 洛谷 P3377 【模板】左偏树(可并堆)
洛谷 P3377 [模板]左偏树(可并堆) 题目描述 如题,一开始有N个小根堆,每个堆包含且仅包含一个数.接下来需要支持两种操作: 操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或 ...
- 洛谷 P1028 数的计算【递推】
P1028 数的计算 题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理: 1.不作任何处理; 2.在它 ...