我一直在研究一个通过套接字传输xml一段时间的系统.我从来没有真正理解选择xml而不是自定义协议的真正优势.
但我确实看到很多开发人员(特别是原来的Web开发人员)设置了这种实现(xml over socket).
我明白这更“人性化”(这就是我一直听到的).
但,
> Xml携带了大量的字符,导致巨大的消息,实际上内容非常简单.
>邮件大小各不相同,因此您需要保证以特定字符或字符串模式终止邮件.
>解析xml时会有更多的开销
由于所有这些原因,当我可以使用固定大小的消息使用自定义协议设置我的系统时,我仍然怀疑考虑使用针对新系统的套接字XML.避免传输大量消息并且性能在客户端大小上解析xml.
这样想我错了吗?系统架构方面的“最佳”是什么?
问候
解决方法
设计决策都是关于权衡的.您已经列举了XML为您提供的内容 – 可读性和自我描述.它还带有描述语言(XSD),非常便携等.
但是这些优点伴随着你提到的缺点.那么让我们一个一个地解决它们:
赘言
是的,XML是冗长的,既是自描述的又是基于文本的.如果性能是一个问题,这只是一个真正的问题.是吗?积极的权衡取舍怎么样?
请注意,这里合理的替代方案是JSON,它同样可读但效率更高.
不同尺寸
是的,但这取决于连接层.如果您没有持久连接(例如,HTTP),或者您正在使用提供自己的“框架”(例如AMQP或JMS)的协议,那么这不是问题 – 传输层负责处理它.如果您打算重新发明这个轮子,那么不同的有效载荷会使协议变得更难.但协议(特别是在所有边缘情况下)都很难.
解析开销
这与详细程度直接相关.