我有一个ASP.NET MVC项目需要托管在两个不同的服务器上.我知道这看起来很奇怪,但这是我客户的要求.
详细说来,我将有2个负载平衡服务器
Web服务器 - 向公众公开(域将指向此服务器的公共IP)
App Server - 与内部基础架构(Active Directory,数据库,安全性等)通信
我正在考虑创建另一个层(ASP.NET Web API),以便Web服务器仅提供HTML页面,应用服务器将包含业务逻辑并公开要调用的所有客户端(Web,移动)的端点.Web Server将通过RESTFUL服务与App Server通信.
还有更好的方法吗?任何解决方案将不胜感激.
提前致谢,
这是一种相当正常的做事方式 - 让Web服务器专注于提供服务页面,让后端服务器使用应用程序业务逻辑进行艰苦的工作.如果它大量使用大数据吞吐量,我会考虑使用单独的Web,应用程序和数据库服务器制作三层.
Web API也是两个服务器之间通信的不错选择,但如果您发现需要超越基本的REST操作,则可能值得考虑将WCF作为替代方案.让它运行起来是一个更大的开销,而且绝对不适合胆小的人!
编辑
因此,您需要做的是将所有当前业务逻辑从现有控制器中移出,并放入将位于第二台服务器上的相应Web API控制器集中.如果您小心,您应该能够将MVC控制器方法直接复制到Web API控制器中并添加适当的路由属性.您的数据库(如果有的话)也需要坐在第二台服务器上.
完成后,所有MVC控制器都会调用第二台服务器上运行的Web API.除了基本的调整之外,MVC控制器不应对您的数据进行任何处理,以使其看起来很好(保持控制器清洁无论如何都是好的做法).
这应该让您基本了解您需要做什么.如果您需要更具体的任何步骤,请大声说,我会看看我是否可以详细说明.