我们有2个系统,我们希望交换消息。我目前正在设计应用程序,并得到了2个选择。
-
系统1将消息推向中间位置(FTP或SQS)和系统2(运行BizTalk)从该位置读取消息并处理它。
-
将模式/编排作为系统2中的Web服务,该系统将由系统1消耗。
在错误处理和可扩展性方面,哪种方法都会更好。
如果可以的话,请始终通过排队系统进行异步方法。这样,您的应用程序可以独立于您的后端运行。然后,我建议使用Windows Server的服务总线(较重的安装),Windows Azure Service Bus(作为服务,在云中,需要Internet连接)或MSMQ(包括存储和转发!)。这些提供了交易行为,可以被认为是非常可靠的。其他轻量级选项确实是通过文件交换或FTP。
Web服务或REST连接也很容易设置,但是您具有同步行为,具有其好处:
- 当您的消息通过BizTalk 传递时,您可以获得"实时" ACK
- 很容易设置并监视
因此,大多数情况下,答案是"取决于"。
对您的特定应用只有一种'最佳方法',并且有许多条件需要考虑。
最简单的方法是文件系统上的共享位置(OS文件系统与FTP并不重要),尤其是在订单不重要的情况下。
如果必须维护订单,则有保证的交货要求,则消息队列是一个不错的选择,MSMQ/WMQ。
当然,http/soap始终是一种选择。
实际上,这些方法中的任何一个都会在那里获取消息,因此您必须考虑每个协议的好处。