我需要将第三方WebService集成到基于消息传递的体系结构中。我们正在使用NServiceBus。
在NServiceBus上的PluralSight课程中,建议在集成WebService时,为此集成创建特定的WebService网关端点。
第三方WebService具有用于下拉通知和确认这些通知的API方法。此WebService的客户端需要定期(例如每15分钟)拉一次通知,并在正确处理时确认每个通知。
建议的流程如下:
我的问题是:
干杯
答案 0 :(得分:2)
我不认为这是代码味道。我自己已经做过好几次了。这是确保与依赖项的交互成功发生的可靠方法。
我会依赖于被事件驱动的致谢。这将允许您的软件中有更多可扩展的点。例如:CreateCustomer
命令将发布CustomerCreated
事件。 UpdateCustomer
命令会发布CustomerUpdated
事件。
您可以让一个处理程序一般处理这两个事件并提交一个acknolwedgement AckHandler: IHandle<CustomerCreated>, IHandle<CustomerUpdate>
。
但回顾一下你的实际问题,我不相信这是代码味道。
(下次我建议一起创建一个单独的问题)
至于在Azure中托管,我可能会倾向于在WebJob中托管它们。 WebApp只是一个托管平台,可以托管WebSite和一系列WebJobs。它们更便宜,但控制力更低,但更容易扩展。
请记住,在需要水平扩展之前,可以通过调整每个主机的并发设置来垂直扩展,以找到它可以处理的正确数量的线程(NSB <5最多20个线程; NSB&gt; = 6是100个线程)。
您可以将它们全部合并到一起开始。