有人可以建议实施以下方案的最佳方式。
顺便说一下,这两个是WCF服务。
答案 0 :(得分:0)
取决于。
websvc2.webmethod2()是否关心对websvc1.webmethod1()的调用是否失败?如果是这样,那么我建议在循环中进行500次调用必须同步完成,因为调用者需要知道调用是否失败。这可以用多线程完成,但是没有多大意义,因为这里的瓶颈不会是你调用websvc1.webmethod1()的速度有多快,但是websvc1.webmethod1()处理调用的速度有多快。
如果没有,那么在我看来,建议您将websvc1.webmethod1()作为单向调用,并使用排队绑定。
为此,请将服务操作合同标记为:
[ServiceContract]
interface IWebSvc1
{
[OperationContract(IsOneWay = true)]
void WebMethod1()
}
并尽可能使用内置netMsmqBinding来防止服务泛滥。如果您不使用排队绑定,您仍然可以通过tcp / http实现一种方式,但由于可用性,您可能会遇到更高的失败呼叫风险。如果在wcf中使用单向,则调用者将不知道服务上的失败。