Azure Web角色 - 混合MVC和WCF - 最佳实践

时间:2011-01-12 10:57:43

标签: asp.net-mvc wcf asp.net-mvc-2 azure

我正在寻找关于构建公开ASP.NET MVC 2 UI和WCF服务的Azure应用程序的一些建议。

两者都将通过互联网向消费者展示,而UI也会消耗WCF服务。

为了最大限度地降低小型部署的运营成本,并且能够扩展,我希望在同一Web角色中托管UI和WCF服务。虽然在其他情况下,我可能希望将WCF服务部署到他们自己的Web角色或工作者角色,以便可以独立扩展它们。

当UI和服务共同托管时,我非常确定我希望UI使用由同一Web角色实例托管的服务实例。发现负载均衡器的延迟并且潜在地去另一个主机以消耗我旁边的服务似乎没有多大意义。在这种情况下,我甚至想要使用WCF,还是直接使用服务类?但是,如果我这样做,如果我选择重新配置应用程序拓扑,则无法利用位置透明性。

我无法在Azure中找到有关共同托管的UI和WCF服务的更多指导。

我应该遵循哪些模式?

2 个答案:

答案 0 :(得分:2)

我同意使用WCF接口仍然是一个好主意,每当你需要分开配置时,让事情变得有效的改变应该是最小的。

在WCF中,您应该能够公开内部端点并通过127.0.0.1或localhost连接到它。这应该绕过数据中心边界的交叉,因此需要额外的费用和延迟。

答案 1 :(得分:1)

考虑将您的应用程序作为完整的IIS角色运行,并将服务和站点作为两个不同的站点/角色运行。这样,如果你需要在任何阶段拆分它,那只是配置。

添加到IgoreK,WCF的优点是实现的抽象。如果要运行单个实例,请回送 - 您甚至可以使用命名管道绑定来获得更好的性能。

如果您在任何时候都需要向外扩展,那么它只是一个配置更改,您可以通过负载均衡器进行http甚至tcp。