【问题标题】:Nested WCF Service Call does not work?嵌套的 WCF 服务调用不起作用?
【发布时间】:2011-09-13 23:06:09
【问题描述】:

我有许多 WCF 服务,它们被 ASP.NET MVC 应用程序中的某个功能调用。

  1. MVC 应用调用 Contract-Service(WCF 服务)
  2. Contract-Service 在其处理调用 Contract-Buy-Service (WCF 服务)
  3. Contract-Buy-Service 调用 SAM-Utility-Service(WCF 服务)

当我从 Contract-Buy-Service 运行我的 TDD 测试用例时,它工作得非常好。因为电话从 Contract-Buy-Service 转到 SAM-Utility-Service。但是当电话从 合同服务 => 合同购买服务 => SAM-实用程序服务 我总是收到配置中找不到 SAM-Utility-Service 端点的错误。

在contract-buy-service 和contract-service 中都有SAM-Utility-Service 的服务参考。我已检查该服务是否已托管并且已启动并正在运行。当我尝试通过浏览器查看时,我可以获得 WSDL。

谁能告诉我为什么服务调用没有经过多个层,或者我在这里做错了什么?

谢谢!

【问题讨论】:

  • 一般来说,单元测试根本不应该调用任何服务。利用服务契约(它们是接口)来模拟服务这一事实。
  • 是的,这就是我实现单元测试的方式。我在 Visual Studio 2010 中使用测试项目类型,它具有对合同的 DLL 引用而不是服务引用。我正在使用服务工厂开发 WCF 服务。谢谢
  • 那么你应该更新你的问题。当您运行 TDD 测试时,您根本没有调用服务。

标签: wcf endpoint wcf-endpoint


【解决方案1】:

首先,我认为 Contract-Service 不需要服务参考或任何有关 SAM-Utility-Service 的知识。除非它需要直接与该服务进行通信以进行其他操作——在这种情况下,我建议使用另一个服务端点无论如何——它不应该知道 Contract-Buy-Service 正在做什么。这会导致您的服务更紧密地耦合,从而消除了面向服务的主要好处之一。

问题的原因可能是多方面的(WCF 总是如此)。但是,由于错误的选择、错误的使用或交易的错位,我也遇到过类似的问题。

假设,例如,Contract-Service 和 Contract-Buy-Service 参与交易。 SAM-Utility-Service 也可能需要一个事务,但需要一个新事务。如果第二个事务没有正确地参与到第一个事务中,那么第一个事务可能不允许它提交或者可能不会自己提交。

第一步可能是让所有三个在没有任何交易的情况下协同工作。

【讨论】:

  • 柯克,感谢您的回答。 Contract-Service 也需要与 SAM-Utility-Service 进行通信以进行其他 Contract-Service 服务操作,而不涉及 Contract-Buy Service。我现在要做的是为 SAM-Utility Service 创建另一个端点,并使用来自 Contract 和 Contract-Buy Service 的单独端点。我希望这能解决问题。
猜你喜欢
  • 2010-12-12
  • 2011-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-03
  • 2013-03-10
  • 2011-08-09
  • 1970-01-01
相关资源
最近更新 更多