在当前项目中,我们一直使用 jms 将 xml 作为文本消息发送。我不明白他们为什么不简单地发送 Objectmessage,为什么有处理 xml 的开销?
所以问题基本上归结为为什么在 jms 中使用 xml ?
这一切都归结为对消息序列化格式的设计决策。
起初,Objectmessage 似乎是最有效的机制。但是,它在以下情况下效果不佳:
在 XML 中序列化消息并不能完全解决这些问题,但某种形式的人类可读消息格式可以进行调试。
最后,XML 并不是唯一的游戏。JSON 作为 XML 的替代品正变得越来越流行。Protocol Buffers是 Google 的消息传递协议,对一些问题和 Google 的解决方案有很好的概述。
在这种情况下使用 XML 的主要好处是您消除了对在通信两端使用相同软件堆栈的依赖。
我曾经遇到一个客户,他正在与一个关键供应商交换数据,他在一端创建他们的 SQL Server 数据库的每日映像,然后在另一端恢复它。结果:任何一方都无法升级到新版本的 SQL Server,除非对方也在同一天升级。
此外,正如 O'Connor 还提到的,XML 使得随着需求的变化扩展消息内容相对容易,而无需每个人都必须同时实现更改。