2

ASP.NET WebAPI 既可以托管在 IIS 中(作为 Web 角色),也可以自托管(作为辅助角色)

var server = new HttpSelfHostServer(config);
server.OpenAsync().Wait();

以上让我想起了 Node.JS。无论如何,我试图列出这两种方法之间的所有技术权衡。我不是在寻找关于您更喜欢哪些权衡的意见- 从技术角度来看这些权衡是什么。现在,在我们的实际 API 调用(=Azure SQL + API 调用背后的重型数字处理)中,我发现在自托管模式下,每个 API 调用的响应时间快了大约 8%。但是,我担心放弃 IIS 会在以后再次咬我们。

那么,在采用 WebAPI 自托管路线时避免使用 IIS 时会丢失哪些主要权衡或功能?

4

1 回答 1

2
  • 您失去了 IIS 的所有功能(日志记录、应用程序池扩展、站点的限制/配置)......您必须自己构建您想要的每一个功能
  • HttpContext?你失去了它,因为 ASP.NET 为你提供了它。所以,我可以看到让身份验证等事情变得更加困难
  • 网络部署?你会失去那个
  • IIS 在 IIS 8 中有一些关于处理请求和预热服务的不错的特定功能

这实际上取决于您的应用程序。您将不得不重新编写您需要的每个功能。Node.js 提供了执行 Nginx 服务器所没有的东西(Express)的模块......除了(事件循环异步架构),这就是它更快的原因。

我知道这不是您的问题的一部分,但您提到了 8% 的性能增益......该增益是因为您没有涉及 IIS 管道。当你编写自己的代码来模仿你失去的 IIS 功能时,你最终会失去这种性能

您是否尝试过 Windows 2008 R2/IIS 8?这包括对 IIS 7.x 的“免费”性能提升:http: //blog.bitdiff.com/2012/06/performance-comparison-iis-75-and-iis-8.html

于 2012-11-14T21:15:57.853 回答