0

我需要从 ASP.NET MVC 应用程序调用 WCF 服务。设计 ASP.NET MVC 和 WCF 服务通信的更好方法是什么?

  1. 控制器保留对 WCF 服务的引用,并在需要时调用服务方法。

  2. 控制器 使用 DI 容器(例如 unity)来解析 WCF 服务实例。它仍然在控制器类中完成。

  3. 创建一个专门设计用于与 WCF 服务通信的服务中介类。控制器调用中介类。

当一个服务被多个控制器使用并且一个控制器可能调用多个服务时,考虑一个相当复杂的场景

4

3 回答 3

2

控制器可以将您在生成客户端代理时获得的 ServiceContract 接口作为构造函数参数。然后指示您的 DI 框架将适当的实例注入其中(这将是实现服务合同接口的代理)。

所以基本上你的应用程序有一个服务层,它被抽象在一个接口(服务契约)后面,但它的实现位于其他地方(在远程 WCF 服务中)。

恕我直言,您不需要创建服务中介类,除非您的 WCF 服务逻辑对于您的 Web 应用程序来说当然是不够的,并且您需要将更多的业务逻辑放入其中。在这种情况下,调解员可以提供帮助。

于 2013-11-01T15:29:09.663 回答
0

Given the Service is used by multiple controllers, I think creating a service layer would be optimal. Abstracting the WCF implementation to service layer gives the flexibility of unit testing service layer and controller actions independently. Also keeps the controllers independent of service changes.

于 2013-11-01T16:50:25.947 回答
0

此外,服务中介类甚至可以将消费者与服务完全分离(甚至是接口)。服务合同和实施(例如合同方法名称)可以在不影响客户端的情况下更改。

于 2013-11-01T15:44:17.517 回答