【发布时间】:2012-10-08 09:28:42
【问题描述】:
我们使用以 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: 我看到过诸如Cross-platform, cross-language messaging system? 之类的问题,但它们似乎专注于一种适用于多种语言的特定工具。我实际上是在寻找一个可以由多个供应商实现或可以实现的符合标准的协议。
【问题讨论】:
-
无论您做什么,您都将介绍一些供应商或消息传递平台特定的功能。您可以改用电子邮件,因为它是跨平台的,但它是特定于 SMTP 的。
-
协议特定不是问题,只要协议是一个完善的标准。如果 SMTP 仅可从一个特定供应商处获得或因供应商而异,那将是一个问题
-
JMS 是一个建立接口,需要您为正在使用的服务器加载适当的驱动程序。您应该能够编写核心代码,这样就可以在不更改代码的情况下配置所用服务器的选择。
-
在 java 中是的,但不是来自 .NET,我们需要跨语言解决方案。
-
你能用你自己的通用接口包装驱动程序,以便只需要替换这个组件吗?