Asp.net mvc 3 从ASP.NETMVC3调用WCF服务的最佳实践是什么?
我负责ASP.NETMVC3Web应用程序的解决方案体系结构,并希望确保遵循最佳实践。我以前曾经使用过MVC 3,但使用的是其他人提供的解决方案 我主要关心的是Web应用程序将使用WCF服务来检索和更新数据。我不认为直接从我的控制器方法调用WCF服务是最佳实践,但我不确定什么是好的替代方案(可能是存储库模式,这与WCF结合使用是否不寻常?)。我只是想知道是否有一个标准模式/实践我可以使用 此外,WCF服务是许多其他Web服务的包装器,因此它有自己的业务对象类。我不确定是否应该在MVC应用程序中的WCF服务类和模型类之间创建另一个抽象级别。例如,WCF服务有一个预订类,我是否需要在我的模型中为Web应用程序创建相同的类 任何帮助都将不胜感激。 谢谢 我的2美分 。。。我不认为直接从我的控制器调用WCF服务 方法将是最佳实践,但我不确定什么是好方法 替代方案是(可能是存储库模式[…]) 不,不要再做抽象了。直接使用您的服务,将代理实例注入控制器,然后直接从那里调用WCF方法。如果您愿意,您可以创建一个包装类来处理一些WCF错误 在不久的将来,您的应用程序是否允许在WCF和数据库(作为数据源)之间轻松切换?如果不是远离存储库模式-保持简单,愚蠢 此外,WCF服务是许多其他Web服务的包装器 因此它有自己的业务对象类 不要编写复制粘贴代码,因为很难维护它。如果需要更改某个服务中的一种类型,则必须在其他服务中执行相同的镜像更改Asp.net mvc 3 从ASP.NETMVC3调用WCF服务的最佳实践是什么?,asp.net-mvc-3,wcf,Asp.net Mvc 3,Wcf,我负责ASP.NETMVC3Web应用程序的解决方案体系结构,并希望确保遵循最佳实践。我以前曾经使用过MVC 3,但使用的是其他人提供的解决方案 我主要关心的是Web应用程序将使用WCF服务来检索和更新数据。我不认为直接从我的控制器方法调用WCF服务是最佳实践,但我不确定什么是好的替代方案(可能是存储库模式,这与WCF结合使用是否不寻常?)。我只是想知道是否有一个标准模式/实践我可以使用 此外,WCF服务是许多其他Web服务的包装器,因此它有自己的业务对象类。我不确定是否应该在MVC应用程序中的
相反,将所有通用业务对象分离到一个单独的项目(核心库)中,并在任何其他解决方案中重用该库 控制器负责获取/转换数据,因此它将通过代理与WCF服务交互。类似这样的内容(在VB.NET中): 您的WCF服务已经将“服务对象”转换为“业务对象”,因此您可以在UI层中将相同的“业务对象”视为“模型”。如果您有更轻的页面特定实体或JSON序列化实体,则可以根据需要创建其他模型
我通常建议在WCF服务上使用“服务适配器”,但在您的情况下,WCF服务似乎已经在这样做了。谢谢,我相信这可以回答我的问题:)
'TODO: You could extract the channel creation in a generic reusable method (Of T)
Dim endpoint = New EndpointAddress() 'TODO: Initialize
Dim binding = New BasicHttpBinding() 'TODO: Initialize
Dim factory = New ChannelFactory(Of IYourContract)(binding, endpointAddr)
Dim channel = factory.CreateChannel()
Dim result = channel.YourOperation()