从另一个调用一个WCF服务时要考虑的事项

时间:2011-08-02 09:26:52

标签: wcf web-services asmx wcf-binding

我们正在将一组WSE服务迁移到WCF平台。

通过安全HTTP调用新的WCF服务。 (https

我想从另一个WCF服务调用一个WCF服务的操作合同。这两种服务主要托管在同一个IIS中,但它们可以位于不同的IIS服务器上。

  1. 在这种情况下,我是否需要处理一些事情(目前我显然不知道)?
  2. 在这种情况下是否有任何特殊的呼叫机制?
  3. 当呼叫是同步的还是异步的时,呼叫机制是否会改变?
  4. 你能否提出一些在这种情况下容易获得的绑定类型?

3 个答案:

答案 0 :(得分:4)

1。)如果服务在同一个盒子上,使用命名管道,除非你有任何令人信服的理由不相互通信。虽然WCF本身并不关心你在做什么,只要地址,绑定和契约都匹配(看看我在那里做了什么?),.NET就会建立网络连接。你使用的越少越好。 (有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/fb6y0fyc.aspx

2。)如#1中所述,如果他们在同一个盒子上说话,则使用命名管道,除非有充分的理由不这样做。

3。)您能否提供一些关于您或您计划做什么的更详细信息?很多内容都是为你构建的,所以假设你熟悉异步方法的实现并使用异步回调,简单的答案是肯定的,它与同步调用一个操作不同,但这是预期的。或者你的意思是IsOneWay = true?如果是这种情况,调用机制是相同的,但可能存在许多其他陷阱(例如故障)

4。)命名管道在同一个盒子上,否则为BasicHttp(除非你需要WS的任何附加功能)。

答案 1 :(得分:1)

  

但它们可以位于单独的IIS服务器上

在这种情况下,您要么不能使用Windows身份验证(如果您使用它),要么必须在域上设置一些特殊的委托内容才能使其正常工作。 Windows身份验证不会在不同服务器之间“跳转”。 Here's some info on that,有很多关于这个主题的阅读材料。

如果他们停留在同一台服务器上,或者您没有使用Windows身份验证,那么它应该不是问题。

  

当呼叫是同步的时,呼叫机制是否会发生变化   异步?

无所谓,服务端都是一样的。我会说如果客户端调用X和X调用Y,X也可以同步调用Y,因为它无法返回到客户端,直到Y完成。 (如果X调用Y和Z,则X进行异步调用可能更有意义。)

  

你能否提出一些可以随时使用的绑定类型   这个案子?

如果您以前使用过WSE,那么BasicHttpBinding将是最接近您正在做的事情,并且看起来非常熟悉它输出的内容。这也是最简单的合作方式。

答案 2 :(得分:0)

因为WCF服务方法调用另一个WCF服务,所以不应该有任何特殊需要。只要他们使用正确的服务合同,数据协定,端点和绑定设置,WCF服务就不会“关心”其他应用程序类型正在调用其方法。

确保两个服务方法都及时返回,并且不会导致执行长时间阻塞。