我们有 2 个系统,我们希望在它们之间交换消息。我目前正在设计应用程序,并且有两个选择。
系统 1 将消息推送到中间位置(FTP 或 SQS),系统 2(运行 BizTalk)从该位置读取消息并进行处理。
将 Schema/Orchestration 公开为系统 2 中的 Web 服务,系统 1 将使用该服务。
任何建议哪种方法在错误处理和可扩展性方面会更好。
我们有 2 个系统,我们希望在它们之间交换消息。我目前正在设计应用程序,并且有两个选择。
系统 1 将消息推送到中间位置(FTP 或 SQS),系统 2(运行 BizTalk)从该位置读取消息并进行处理。
将 Schema/Orchestration 公开为系统 2 中的 Web 服务,系统 1 将使用该服务。
任何建议哪种方法在错误处理和可扩展性方面会更好。
如果可以,请始终通过排队系统采用异步方法。这样,您的应用程序可以独立于后端运行。然后我会建议用于 Windows Server 的服务总线(更重的安装)、Windows Azure 服务总线(作为服务,在云中,需要互联网连接)或 MSMQ(包括存储和转发!)。这些提供了事务行为,可以被认为是非常可靠的。其他轻量级选项确实是通过文件交换或 FTP。
Web 服务或 REST 连接也很容易设置,但是您有同步行为,这有其好处:
因此,大多数情况下,答案是“视情况而定”。
对于您的特定应用,只有一种“最佳方式”,并且需要考虑许多条件。
最简单的方法是文件系统上的共享位置(操作系统文件系统与 FTP 无关紧要),尤其是在顺序不重要的情况下。
如果必须维护订单以保证交付要求,那么消息队列是一个不错的选择,MSMQ/WMQ。
当然,HTTP/SOAP 始终是一种选择。
实际上,这些方法中的任何一种都会在那里收到消息,因此您必须考虑每种协议的好处。