我们有一个应用程序,我们在其中创建了一个包含大多数业务逻辑和实用程序服务(日志记录,异常,缓存等)的服务层。我们必须提供一种方法来将此服务公开为UI组件的API。以下是我们的一些要求:
公开服务层的一种方法是在基于REST的WCF层下托管它。
另一种方法是在ASP.Net MVC项目的模型层中托管服务。 UI组件将托管在他们自己的MVC项目中。 UI组件视图中的Javascript将直接调用服务项目的控制器。
WCF应该是非常重量级的选择。另一方面,我对MVC方法并不太信服,因为我认为这不是它的目的。
请您在Microsoft世界中向我推荐一种方式来公开我们的服务层。
答案 0 :(得分:4)
模型不是服务。模型是保存数据的POCO。
您可以通过WCF服务公开您的服务,并让您的ASP.NET MVC应用程序使用它。如果您始终确定该服务将与客户端应用程序在同一个框上运行,则可以使用命名管道进行传输 - 然后与优势相比,WCF的开销很小。
答案 1 :(得分:4)
WCF似乎是去这里的方式。虽然WCF最初(在我的观点中)作为一个野兽开始,但多年来它已经被驯服了更好的HTTP和JSON支持以及更少的自定义配置(尽管仍然允许您基本上模拟服务的每个小方面)。
将您当前的服务层公开为REST服务是轻而易举的,并允许您的客户/您自己在支持HTTP的任何设备上轻松使用它。
请参阅:http://codebetter.com/glennblock/2010/11/01/wcf-web-apis-http-your-way/
答案 2 :(得分:1)
WCF似乎是微软的目标,并且有充分的理由。 WCF服务是最好的选择,因为您提到了第三方开发支持。因为这些Web服务是由WSDL定义的,所以它们是跨平台的,可以由非.NET应用程序使用。
它完美地隔离了您的服务层,供任何组件使用。