我正在制作一个只需要提供 json 并且需要可扩展的 Web 服务。
我的印象是,Nginx 是一个比 IIS 7.5 更具可扩展性的 Web 服务器,而且与 IIS 相比,管理起来极其简单。此外,Nginx 可以很容易地使用上游模块在多个 json 服务之间进行负载平衡。
由于我只需要提供 json,我觉得 ASP.NET 和 IIS 有点矫枉过正。我只需要一些非常简单的路由和一个简单的 authcookie 机制,我可以轻松地自己编写。
现在我正在使用MVC3,但当我只提供Json服务时,我觉得它太臃肿了,而且我对我必须编写自定义Auth属性来制定默认拒绝策略、必须创建一个HttpModule来破解这一事实感到非常恼火围绕 WindowsForms 身份验证对未经授权的请求的默认重定向,通常需要阅读和学习很多内容才能保持对框架的控制。我也考虑过WCF,但我之前的。对此的经验是,有太多的臃肿和配置来满足我的需求,并且有太多的东西需要了解以保持控制。
当我只需要处理一些 Http 以获得简单、快速且可扩展的异步 json 服务时,我更喜欢简单性并希望避免“框架开销”。所以我正在考虑这样的设置:
您对这个架构有何看法?
编辑:实际上我认为使用 fastcgi 从 nginx 到 Windows 服务而不是代理 http 请求会更有性能?你有什么想法?
IHttpHandler
,它的扩展性非常好,并且您描述的大多数问题都会“消失”...它使您可以完全控制整个请求/响应处理...一个很好的教程,请参阅 http://www.dotnetperls.com/ashx
我的感觉是,配置一个简单的 Web 应用程序就足够了,该应用程序有一个返回相关 Json 响应的请求处理程序。
您可能想考虑优化 ASP .NET 管道。您可以在此处阅读有关此内容以及其他 ASP .NET 优化的更多信息。如果从处理的角度来看请求处理是轻量级的,您可能还需要提高线程限制。引用的文章中也对此进行了介绍。
从 Nginx 的角度来看,您可能需要检查工作线程的数量是否与您的 CPU 数量相匹配。
希望这有帮助。