我正在尝试设计一个系统,允许多个公共端点汇集到一个Web服务中. Web服务必须能够确定哪个端点是请求的预期目标.这是一个可能适合账单的小样本配置:
在此系统中,“反向代理”(缺少更好的术语)在传入请求到达Web服务之前为其添加HTTP标头.否则,代理对请求和响应完全透明.
我们是使用IIS7 / WCF的Windows商店.
目标是1)仅维护单个Web服务,而不是每个域一个,以及2)将域/网站管理与Web服务中的业务逻辑分离.也就是说,如果我们知道将始终使用HTTP标头中的密钥指定上下文,那么我们不必担心域更改或Request.Headers [“HOST”]的特定内容.
我的问题是:这是一种合理的方法吗?如果是这样,是否有一个应用程序可以完成“反向代理”的工作? (鱿鱼?IIS本身?)
感谢您的帮助!
解决方法
听起来好像你要做的就是有一个应用程序可以做两件完全不同的事情.在某个时刻,代码库和功能将重叠,但我不太了解您的应用程序,以帮助您.我有两种可能的解决方案:
>如果您要进入MVC方向,我会尝试将与视图相关的代码与控制器和模型分开.这将使您更清晰地分离业务逻辑.一种可能的方法是将视图放入2个单独的目录中,然后包含来自共享第3个目录的代码.这为您提供了一个处理后端逻辑的共享库,同时干净地分离了表示逻辑.>我不会害怕HTTP Host标头.这是HTTP / 1.1所要求的,所有现代浏览器都使用它.哎呀,虚拟主机完全依赖它,你很难找到一个IIS或Apache管理员,他们会告诉你不要在生产中使用虚拟主机.当然,最大的缺点是,如果你在应用程序端进行头检查,你可能遇到一些非常难看的if / case语句.反向代理设置唯一的做法是查找主机并添加除主机之外的另一个标头.因此,您只需使用反向代理为您的架构添加更多标头和复杂性.