关于使用Nginx代理webbrequest到基于.net HttpListener的Json服务的想法

本文关键字:HttpListener Json 服务 net Nginx 于使用 代理 webbrequest | 更新日期: 2023-09-27 18:13:42

我正在做一个webservice,只需要服务json,它需要可扩展。

我得到的印象是Nginx是一个比IIS 7.5更具可扩展性的web服务器,与IIS相比,它非常容易管理。此外,Nginx可以很容易地使用上游模块在几个json服务之间进行负载平衡。

因为我只需要服务json,我觉得ASP。Net和IIS太过分了。我只需要一些非常简单的路由和一个简单的authcookie机制,我可以很容易地自己编写。

现在我正在使用MVC3,但感觉它是臃肿的,当我只服务Json,我非常恼火的事实,我不得不编写自定义认证属性,使默认拒绝策略,不得不做一个HttpModule hack around windowsfrom的身份验证的默认重定向未经授权的请求,一般需要阅读和学习很多,以保持在框架的控制。我也考虑过WCF,但我的前任。这方面的经验是,有太多的膨胀和配置,以满足我的需求,有太多的东西要知道,以保持控制。

我更喜欢简单,当我只需要处理一些简单,快速和可扩展的异步json服务的Http时,我想避免"框架开销"。所以我正在考虑这样的设置:

  • 一个linux系统上的Nginx web服务器,它在异步json服务之间进行负载平衡并代理web请求。
  • json服务被编写为Windows服务,使用HttpListener对web请求进行异步处理。

你对这个架构有什么想法?

编辑:实际上我认为这将是更高性能使用fastcgi从nginx到windows服务,而不是代理http请求?你是怎么想的?

关于使用Nginx代理webbrequest到基于.net HttpListener的Json服务的想法

只要实现一个ASHX -基本上是IIS的IHttpHandler,它可以很好地扩展,你描述的大多数问题只是"消失"…它使您可以完全控制整个请求/响应处理…要获得一个很好的教程,请参见http://www.dotnetperls.com/ashx

我的感觉是,配置一个简单的web应用程序,有一个返回相关Json响应的请求处理程序就足够了。

你可能想看看如何优化asp.net管道。你可以在这里阅读更多关于这个和其他asp.net优化的内容。如果从处理的角度来看,请求处理是轻量级的,那么您可能还需要提高线程限制。这在参考的文章中也有涉及。

从Nginx的角度来看,你可能想要检查工作线程的数量是否匹配你的CPU计数。