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

6
我们正在将一组WSE服务迁移到WCF平台。
新的WCF服务是通过安全的HTTP协议(https)调用的。
我想从一个WCF服务中调用另一个操作契约。这两个服务大多数情况下都托管在同一个IIS中,但它们也可以位于不同的IIS服务器上。
1.在这种情况下,我需要注意一些事情(我目前显然不知道的)吗?
2.在这种情况下是否有任何特殊的调用机制?
3.当调用是同步的和异步的时候,调用机制是否会改变?
4.您能否建议一些在这种情况下可用的绑定类型?
3个回答

4

1.) 如果服务在同一台计算机上,则使用命名管道与彼此通信,除非您有充分的理由不这样做。虽然WCF本身并不关心您正在做什么,只要地址、绑定和契约都匹配(看到我做了什么吗?),但是当涉及到建立网络连接时,.NET会关心。使用的越少越好。(有关更多详细信息,请参见http://msdn.microsoft.com/en-us/library/fb6y0fyc.aspx

2.) 如第1点所述,如果它们在同一台计算机上通信,请使用命名管道,除非有充分的理由不这样做。

3.) 您能提供更多关于此的细节或您计划要做什么的信息吗?很多内容已经为您构建完成,因此假设您熟悉实现异步方法和使用异步回调,简短的答案是是的,它与同步调用操作不同,但这是可以预料的。或者您是指IsOneWay = true吗?如果是这种情况,调用机制相同,但可能会有许多其他问题(例如故障)

4.) 在同一台计算机上使用命名管道,在其他情况下使用BasicHttp(除非您需要WS的其他功能)。


你的意思是我需要在 Web.Config 文件中添加一个端点吗?然后从代码中使用该端点?怎么做呢?我对 WCF 还很陌生。 - Learner
如果你没有端点,那么你就无法与你的服务进行通信 :) 因此,端点是必需的,而且是将其放入你的 web.config 文件中。 - dotnetnate
哦,我的意思是Web.Config是正确的文件,或者其他配置文件可能会出现。在代理类的情况下,我们可以在代理类上获取“Url”属性,并指向特定的服务端点。然而,我如何从其他服务指向特定的端点,因为我没有任何东西可以将URL设置为端点。所以我缺少了一些东西。我正在阅读相关书籍,但如果您能提供信息,那就太好了。 - Learner

1
但它们可以在不同的IIS服务器上。在这种情况下,如果您正在使用Windows身份验证,则无法使用它,或者您必须在域上设置一些特殊的委托内容才能使其正常工作。Windows身份验证不会在不同的服务器之间“跳跃”。这里有一些相关信息,关于这个主题有很多阅读材料。
如果它们保持在同一个服务器上或者您没有使用Windows身份验证,那么这应该不是问题。
调用机制在调用同步和异步时是否会改变?不应该有影响,在服务端都是一样的。我会说,如果客户端调用X并且X调用Y,那么X可能会同步调用Y,因为在Y完成之前它无法返回给客户端。(如果X调用Y和Z,则X进行异步调用可能更有意义。)
您能建议一些在这种情况下可用的绑定类型吗?

如果您之前使用过 WSE,那么 BasicHttpBinding 将是最接近您所做的事情,并且在输出方面看起来非常熟悉。它也是最简单的一个。


0

因为一个 WCF 服务方法调用另一个 WCF 服务,所以不需要任何特殊的内容。只要使用正确的服务契约、数据契约、终结点和绑定设置,WCF 服务就不关心其他应用程序类型调用其方法的情况。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接