首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kestrel - IIS | Apache是否是微服务的理想运行时宿主进程,而不是队列支持的Windows服务?

Kestrel和IIS/Apache都可以作为微服务的运行时宿主进程,但它们在不同的场景下有不同的适用性。

Kestrel是一个跨平台的、轻量级的Web服务器,由ASP.NET Core提供支持。它专注于处理HTTP请求,并且在性能方面表现出色。Kestrel适用于需要快速响应的微服务,尤其是在Linux或Docker等容器化环境中。它支持HTTP/1和HTTP/2协议,并且可以与反向代理服务器(如Nginx)配合使用,以提供负载均衡和SSL终止等功能。

IIS(Internet Information Services)是微软的Web服务器软件,它提供了丰富的功能和广泛的扩展性。IIS适用于Windows环境下的微服务部署,尤其是在需要与其他Microsoft技术(如ASP.NET、.NET Framework)集成的情况下。IIS支持多种协议(如HTTP、HTTPS、FTP)和多种身份验证方式,并且具有强大的管理工具和监控功能。

Apache是一个开源的、跨平台的Web服务器软件,它是互联网上最流行的Web服务器之一。Apache适用于各种操作系统,并且具有高度可配置性和可扩展性。它支持多种模块和插件,可以实现各种功能,如URL重写、反向代理、缓存等。Apache在微服务中可以作为运行时宿主进程,特别是在需要与其他开源技术(如PHP、MySQL)集成的情况下。

队列支持的Windows服务是一种常见的微服务部署方式,它通过消息队列实现服务之间的解耦和异步通信。Windows服务可以作为后台进程运行,并且可以通过Windows服务管理器进行监控和管理。它适用于需要长时间运行的任务和对实时性要求不高的场景。

综上所述,Kestrel、IIS和Apache都可以作为微服务的运行时宿主进程,选择哪种取决于具体的需求和环境。如果需要跨平台和高性能,可以选择Kestrel;如果需要与Microsoft技术集成,可以选择IIS;如果需要开源和可配置性,可以选择Apache。对于队列支持的Windows服务,适用于需要解耦和异步通信的场景。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET Core 进程内(InProcess)托管(6)《从零开始学ASP.NET CORE MVC》:

Core中的进程内(InProcess)托管模型 什么是Kestrel服务器 当一个 ASP.NET Core 应用程序执行的时候,.NET 运行时会去查找 Main()方法,因为它是这个应用程序的起点...内部Web服务器是Kestrel, 外部Web服务器可以是IIS,Nginx或Apache。 使用InProcess托管,只有一个Web服务器,承载asp.net Core应用程序的IIS。...因此,在内部和外部Web服务器之间,他们的代理和请求不没有性能的损失。 什么是Kestrel Kestrel是ASP.NET Core的跨平台Web服务器。....NET Core支持的所有平台和版本都支持它。它默认包含在ASP.NET Core中作为内部服务器。...Kestrel本身可以用作边缘服务器,即面向互联网的Web服务器,它可以直接处理来自客户端的传入HTTP请求。 在Kestrel中,用于托管应用程序的进程是dotnet.exe。

1.6K20

ASP.NET Core服务器综述

ASP.NET Core搭载两个服务器实现: Kestrel是一个基于libuv的跨平台HTTP服务器,libuv是一个跨平台的异步I/O库 WebListener是一个基于HTTP.SYS内核驱动的“...Windows专用”HTTP服务器 Kestrel Kestrel是包含在ASP.NET Core新项目模板中默认的web服务器。...如果你的应用只接收来自内部网络的请求,你可以只使用Kestrel本身。 ? 如果你将你的应用部署在公共网络上,我们建议你使用IIS,Nginx或者Apache作为反向代理服务器。...IIS with Kestrel 当你使用IIS或者IIS Express作为对ASP.NET Core的反向代理时,ASP.NET Core应用将运行在由该IIS工作进程分离出的一个进程中。...当你只想要在内网中部署你的应用时,WebListener可以被用来代替Kestrel,特别是当你需要Weblistener服务器支持功能中的某项而Kestrel恰好不支持的时候。 ?

2.9K50
  • Docker最全教程——从理论到实战(二)

    能够在 IIS、Nginx、Apache、Docker 上进行托管或在自己的进程中进行自托管我们的应用。 性能是.NET Core的一个关键特性,这里有必要介绍下。...Kestrel 可以单独使用,也可以与反向代理服务器(如 IIS、Nginx 或 Apache)一起使用。...在没有 Kestrel 或自定义服务器实现的情况下,不能使用 IIS、Nginx 和 Apache。 ASP.NET Core 设计为在其自己的进程中运行,以实现跨平台统一操作。...IIS、Nginx 和 Apache 规定自己的启动过程和环境。 若要直接使用这些服务器技术,ASP.NET Core 必须满足每个服务器的需求。...注意: Kestrel 可以单独使用,也可以与反向代理服务器(如 IIS、Nginx 或 Apache)一起使用。在docker容器中,我们推荐使用Kestrel。

    1.5K30

    Docker最全教程——从理论到实战(二)

    能够在 IIS、Nginx、Apache、Docker 上进行托管或在自己的进程中进行自托管我们的应用。 性能是.NET Core的一个关键特性,这里有必要介绍下。...Kestrel 可以单独使用,也可以与反向代理服务器(如 IIS、Nginx 或 Apache)一起使用。...在没有 Kestrel 或自定义服务器实现的情况下,不能使用 IIS、Nginx 和 Apache。 ASP.NET Core 设计为在其自己的进程中运行,以实现跨平台统一操作。...IIS、Nginx 和 Apache 规定自己的启动过程和环境。 若要直接使用这些服务器技术,ASP.NET Core 必须满足每个服务器的需求。...注意: Kestrel 可以单独使用,也可以与反向代理服务器(如 IIS、Nginx 或 Apache)一起使用。在docker容器中,我们推荐使用Kestrel。

    1.4K30

    ASP.NET Core的Kestrel服务器

    的跨平台ASP.NET Core web服务器,libuv是一个跨平台的异步I/O库。...如果你将你的应用部署在公共网络上,我们建议你使用IIS,Nginx或者Apache作为反向代理服务器。...另一个需要反向代理的场景是,你有多个需要在单独的服务器上运行并分享同一端口的应用。因为Kestrel不支持在多进程间分享同一端口,所以应用并不能直接和Kestrel合作。...如果你需要为不同的ASP.NET Core应用在同一端口上绑定不同的主机名,请使用WebListener或者诸如IIS,Nginx或Apache这样的反向代理服务器。...on a Mac Using Visual Studio Code 本教程在本地仅使用Kestrel,在将该应用部署到Azure之后,它将在Windows上使用IIS作为反向代理服务器。

    5K50

    《ASP.ENT Core 与 RESTful API 开发实战》(第3章)-- 读书笔记(上)

    : 配置 Kestrel 服务器作为默认的 Web 服务器来负责处理 Web 请求与响应 使用当前目录作为应用程序的内容目录,该目录决定了 ASP.NET Core 查找内容文件的位置 从以 ASPNETCORE...,通过设置不同的环境,能够使应用程序在运行时获取相应的配置,从而具有不同的行为和逻辑 内部提供3个环境: Development:开发 Staging:预演 Production:生产 Kestrel...是轻量级、托管的、开源且跨平台的 Web 服务器,它作为 ASP.NET Core 的组成部分,能够使 ASP.NET Core 应用程序运行在任何平台上 当 Kestrel 作为 ASP.NET Core...的服务器时,它会在 ASP.NET Core 的进程内运行,并负责监听 HTTP 请求以及对每一次的请求返回 HTTP 响应 在实际生产环境部署应用程序时,推荐使用主流的 Web 服务器(如 IIS...和 Apache 等)放在 Kestrel 之前作为反向代理服务器,增加应用程序的安全性,也提供了负载均衡、过滤请求和 URL 重定向等功能 IWebHostBuilder 接口有多个扩展方法,其中有一个很重要的是

    90810

    如何在ASP.NetCore增加文件上传大小

    换句话说,您可以在 IIS、Ngnix 和 Apache Web 服务器上托管应用程序。...Kestrel 可用作独立服务器或被其他服务器反向代理,如 IIS、Nginx 或 Apache。没有单一的解决方案可以覆盖所有的部署选项来增加请求大小限制。根据不同的部署选项,解决方案也不尽相同。...1、托管在 IIS 上(有凯斯特雷尔或没有凯斯特雷尔) 2、托管在 Kestrel 上(作为独立或与 Ngnix 和 Apache 服务器一起托管) 2 在 IIS 上 还能记得在 ASP.NET 中,...该值是一个可空的长值。将它设置为 null 会禁用该限制。现在你可能会想,为什么这对 windows 不起作用,因为 IIS 也使用 Kestrel。...原因是,这个设置对于运行在 IIS 后面的 Kestrel 来说是无效的,在 IIS 后面应用的是正常的 web.config 限制。

    4.9K10

    ASP.NET Core 进程外(out-of-process)托管(7)《从零开始学ASP.NET CORE MVC》

    进程外(out-of-Process)托管 有2个Web服务器 ,内部Web服务器和外部Web服务器。 内部Web服务器是Kestrel, 外部Web服务器可以是IIS,Nginx或Apache。...kestrel直面互联网 Kestrel 还可以与反向代理服务器 (如 IIS、Nginx 或 Apache) 结合使用。 ?...因为Kestrel使用 "进程外(out-of-process)托管", 结合反向代理服务器是一个不错的选择, 因为它提供了额外的配置和安全性层。它可能会更好地与现有基础设施集成。...由于我们已将应用程序配置为使用进程外托管,所以当前情况下,IIS Express 已经在充当反向代理服务器了。 IIS Express接收传入的HTTP请求并将其转发给Kestrel进行处理。...使用进程外托管无论您是否使用反向代理服务器,Kestrel服务器都是作为托管应用程序的服务器同时处理请求的,也就是我们最开始说的自托管。

    1.5K50

    ASP.NET Core模块概述

    支持的Windows版本: Windows 7和Windows Server 2008 R2和更高版本 查看或下载代码示例 ASP.NET Core 模块做了什么 ANCM是一个原生的IIS模块,它挂接到...因为ASP.NET Core应用运行在某个IIS工作进程分离出的一个进程中,ANCM也能进行进程管理。当接收到第一个请求的时候,ANCM会为该ASP.NET Core应用启动进程。...ANCM也有重启崩溃进程的功能。和运行在IIS进程中,通过WAS(Windows Activation Service)进行管理的传统ASP.NET 应用,在本质上是相同的。...转寄Windows身份认证tokens。 怎么在ASP.NET Core应用中使用ANCM 这一节提供了对IIS服务器和ASP.NET Core应用设置过程的概述。更详细的信息,请参考发布到IIS。...这种机制有利于例如在MacOS上开发测试程序并部署到运行IIS的服务器的场景。当在Mac上运行时,Kestrel以web服务器的身份存在,但是当应用部署到IIS环境时,它会自动搭接ANCM和IIS。

    1.7K80

    ASP.NET Core 8 在 Windows 上各种部署模型的性能测试

    比如如果是部署在 IIS 下,那么 In Process 会比 Out Process 快;如果是 Self Host 那么使用 HttpSys 服务器会比 Kestrel 快。...InProcess 模式 InProcess 模式将 ASP.NET Core 应用程序直接部署在 IIS 中,与 IIS 工作进程相同的进程中运行。...SelfHost Kestrel 模式 Kestrel 模式是 ASP.NET Core 的内置 Web 服务器,可以独立运行而无需依赖其他外部服务器。...同时,SelfHost Kestrel 模式的性能优于 SelfHost HttpSys 模式,这也与一般的预期不同,因为 HttpSys 是运行在内核态的服务器。...这样的差异可能受多种因素影响,包括硬件配置、操作系统版本、IIS的版本等,毕竟这些产品都是10年前的产物,而 ASP.NET Core8 是 2023 年的全新产品。

    39110

    宿主

    什么是宿主     ASP.NET Core应用程序需要在宿主中执行.宿主必须实现IWebHost接口,这个接口暴露了功能和服务的集合,以及Start方法。...服务器负责接收HTTP请求。确保应用程序服务和服务器可用并正确配置也是宿主职责一部分。可以把宿主看成是服务器的包装。宿主被配置为使用一个特定的服务器;服务器并不知道它的宿主。...协议(“http://”或“https://”)必须包含在每个URL里,前缀由配置好的服务器解释;服务器之间支持的格式有所不同。...UseIISIntegration()       如果应用程序需要使用IIS,需要构建宿主时调用UseIISIntegration方法。注意这不是像UseKestrel那样配置一个服务器。...为了让ASP.NET Core使用IIS,必须同时指定UseKestrel和UseIISIntegration。Kestrel被设计为在代理后运行而不应该直接部署到互联网。

    1.1K30

    ASP.NET 5 Beta 8 发布

    ASP.NET 5 Beta 8的一个重大更新就是IIS 宿主模型,统一了宿主模型,Beta7之前的模型是通过一个叫做"Helios" 实现另一套的宿主机制,两个完全不同的宿主模型为 ASP.NET 5...导入了大量的复杂性和不一致性,在 IIS 中承载 ASP.NET 5 应用程序的现在使用 IIS HttpPlatformHandler转发到 ASP.NET 5 Kestrel 服务器。...HttpPlatformHandler 是一个本机 IIS 模块,需要管理员在 IIS 的服务器上安装(安装程序: x86, x64)。...新的宿主模型带来的好处包括: IIS应用程序池不需要运行托管代码,类似于在IIS上运行PHP那样,根本不会在IIS上加载CLR 不再需要安装Windows的asp.net组件 IIS上可以同时运行...ASP.NET 4.x模块和HttpPlatformHandler HttpPlatformHandler支持给每个进程设置环境变量 Visual Studio 中的 ASP.NET 5 项目模板已经更新

    1.5K90

    ASP.NET Core 5 在IIS,Nginx,Caddy下的性能测试

    曾经的结论 Rick Strahl 在 原文* 中测试了 Windows 下 ASP.NET Core 2.2 在 Kestrel、IIS InProcess、IIS Out of Process 中的性能...结论是 IIS InProcess > Kestrel > IIS Out of Process。...注意,在理想环境下,最好不要使用性能测试工具测试localhost地址,因为操作系统本身分配调度测试工具和Web服务器之间网络资源会有一定的影响。...Rick 的测试中,IIS In Process 的性能竟然能超越 Kestrel,他曾经表示意外。今天 IIS In Process 还是被 Kestrel 吊打了,这好像还挺合理的。...但是我没想到的是,同样用 Kestrel,Windows 服务器的性能竟然能吊打 Linux,我表示意外,毕竟说好的 Windows 性能差,说句政治正确的话,这一定不是 Linux 的问题,很可能是

    2.5K20

    ASP.NET Core跨平台技术内幕

    ASP.NET Core设计初衷是开源跨平台、高性能Web服务器,其中跨平台特性较早期ASP.NET是一个显著的飞跃,.NET现可以理直气壮与JAVA同台竞技,而ASP.NET Core的高性能特性更是成为致胜法宝...一般不支持外部对内部网络的访问请求; 当一个代理服务器能够代理外部网络的主机,访问内部网络,这种代理服务器被称为反向代理服务器 。...平台 [ 管控应用、转发请求] 由ASP.NET Core Module(插入在IIS Pipeline中的原生组件,下面简称ACM)一手操办,w3wp.exe、dotnet.exe的互动关系是通过父子进程维系...下图脚本力证dotnet.exe进程是w3wp.exe创建出来的子进程: ?...约定 携带该Token的请求为合法的转发请求 与ACM夫唱妇随的是UseIISIntegration()扩展方法,完成如下工作: ① 启动Kestrel服务在http://localhost:{ASPNETCORE_PORT

    1.2K10

    ASP.NET Core托管和部署Linux实操演练手册

    一、课程介绍 ASP.NET Core 是一种全新的跨平台开源 .NET 框架,能够在 IIS、Nginx、Apache、Docker 上进行托管或在自己的进程中进行自托管。...作为一个.NET Web开发者,我最伤心的时候就是项目开发部署时面对Windows Server上贫瘠的解决方案,同样是神器Nginx,Win上的Nginx便始终不如Linux上的所幸.ASP.NET...作为.NET程序员大多数工作无法脱离Windows,习惯于图形化的工作环境,特别对刚接触Linux系统来说感觉使用很不习惯, 所谓工欲善其事,必先利其器,毕竟我们程序员的精力是有限的 ,把有限的时间投入到有价值的事情上去...2、asp.net core web服务器HTTP.sys和Kestrel区别以及特点 3、asp.net core两种托管模型以及如何选择?...2.2、asp.net core web服务器HTTP.sys和Kestrel以及特点 2.3、asp.net core两种托管模型以及如何选择 1)、Inprocess(进程内托管) 2)、Outofprocess

    91220

    ASP.NET Core 性能对比评测(ASP.NET,Python,Java,NodeJS)

    以下是本次对比测试的任务目标: 编号 对比方 系统环境 宿主环境 测试目标 1 ASP.NET Core vs ASP.NET Core Windows Kestrel vs IIS 相同平台不同宿主间性能差距...2 ASP.NET Core vs ASP.NET Windows IIS vs IIS 相同平台相同宿主不同框架间性能差距 3 ASP.NET Core vs ASP.NET Windows Kestrel...可能是由于IIS进一步的http封装导致的吧,毕竟IIS提供了那么多的其他功能。 以下是Windows的性能监视器,两个的曲线图差不多我就放一个了: ?...这个结果说明了,在同样Windows+IIS环境中,ASP.NET是具有优势和竞争力的,可以预见 ASP.NET 应该还不会淘汰的太快。...总结 以下是测试结果的汇总统计: 编号 对比方 系统环境 宿主环境 测试结果(QPS) 1 ASP.NET Core vs ASP.NET Core Windows Kestrel vs IIS 45.6k

    5.5K70

    ASP.NET Core 进程内与进程外的性能对比

    所以请记住: ASP.NET Core 2.X 及以前默认是进程外托管 ASP.NET Core 3.X 默认为进程内托管 我最近查询了下,应该说最早.NET Core 就不支持进程内,所以也是慢慢迭代到支持进程内的...只有一个 Web 服务器,它是承载我们的应用程序的 IIS 服务器,如图是进程内托管图。 ?...进程内模型不使用 Kestrel,而是使用 IISHttpServer()直接在 IIS 应用程序池内部托管的新 Web 服务器实现,该实现与传统的 ASP.NET 被引入 IIS 的方式有些相似。...同一个应用程序实现 100%兼容,无论是部署在 Windows 还是 Linux 上,Kestrel 的主要机制是可以处理所有平台上的 HTTP 请求。...它还可以检查服务器的 HTTP 响应,并检查 Web 服务器 Kestrel 或 Microsoft IIS 作为 Web 服务器: ASP.NET Core2.X 进程外(OutOfProcess)

    1.7K31
    领券