我们使用以 Java 为中心的工具,该工具在内部使用 JMS 并与外部 Java 软件进行通信。我们现在必须为 C# 应用程序设置一个新接口。我们的 JMS 提供程序提供了一个应该可以工作的 C# 实现,但我不完全确定 JMS 是在这种情况下要走的路。它将在 C# 应用程序中引入新的特定于供应商的依赖项,用于实现细节和客户端支持。
一些谷歌搜索让我找到了 STOMP,它似乎是一个已建立的线级协议,由多个支持 JMS 的消息代理(hornetq、activemq、...)支持,但 C# 中似乎明显缺乏实际客户端(以及 java 到在一定程度上)。如果不深入研究,我也不完全确定对“文本”的强调在哪里起作用?它不支持二进制对象吗?
另一种解决方案可能是 AMQP,它是另一种线级协议,但 1.0 规范尚未发布,我们厌倦了实施已有 4 年历史的 0.9.1 规范,因为 1.0 似乎发生了很大变化。
考虑到安全性、支持、事务性、标准合规性、可移植性,哪种解决方案最适合语言间异步消息传递……请注意,具有适当 WS-* 的soap 不是此特定接口的选项。
EDIT1:我见过诸如跨平台、跨语言消息传递系统之类的问题?但他们似乎专注于一种适用于多种语言的特定工具。我实际上正在寻找一种符合标准的协议,该协议可以由多个供应商实现或可以实现。