我正在编写Web服务A并调用Web服务B.
验证输入到A后,我想返回成功代码,然后调用B。
我正在考虑的方式:
运行时上下文是由ASP.NET Web应用程序托管的Service.svc。
我该怎么做?
更新:我只是想说答案都很有用。我决定标记我使用过的那个。
答案 0 :(得分:2)
Code Project上的这个链接应该为您提供创建稳定Async Communication with Windows Communication Foundation所需的所有信息。
一本有很多处理这种沟通方式的书:
希望这会有所帮助。我会给你一些例子,但Code Project上的教程应该提供你需要的东西。
答案 1 :(得分:2)
一旦我验证了A的输入,我想返回一个成功代码,然后调用B。
在这种情况下,您应该将工作放入持久队列(MSMQ,Azure Bus等),然后才返回成功代码。另一个系统(不在ASP.NET中托管;即Azure辅助角色,Win32服务等)应从队列中检索工作并调用B.
这是唯一可行的方法。 Phil Haack有一个good blog post为什么在ASP.NET中做两个部分是个坏主意;它归结为回收。有关回收触发器here和here的更多信息。
答案 2 :(得分:1)
你的第二个想法很好。将异步部分发送到Windows服务。如果您需要可靠性,请使用消息队列进行。在任何情况下,您都可以使用WCF将请求发送到其他服务。
答案 3 :(得分:1)
问题并非特定于任何特定服务接口。通常,您的决定取决于您想要异步调用某些内容的原因:
对于每个后续框架发布,这些方法变得更容易> 3.5,我相信其他答案已经让你很好地了解了如何在c#中启动,继续和/或等待异步任务结果的具体细节。