Networking 关于将XML用作应用程序级协议的问题

Networking 关于将XML用作应用程序级协议的问题,networking,network-programming,protocols,Networking,Network Programming,Protocols,我想知道是否可以使用XML作为应用程序级协议。XML将位于TCP协议之上,这两个应用程序只需要知道如何解析XML 但问题是,XML不够紧凑。在使用TCP发送XML负载之前,我应该使用某种算法来压缩它吗?如果我压缩它,那么压缩/解压缩成本将涉及两端。真是进退两难。有什么好的建议吗?还是我走错了路 非常感谢。如果您需要一种简单的方式来指定消息的外观,我想说的是,您可以在消息中使用直接的XML,而不必担心压缩或任何事情(XML并不是非常快)。如果您需要更快、更紧凑的东西,请查看或(我个人更喜欢协议缓冲

我想知道是否可以使用XML作为应用程序级协议。XML将位于TCP协议之上,这两个应用程序只需要知道如何解析XML

但问题是,XML不够紧凑。在使用TCP发送XML负载之前,我应该使用某种算法来压缩它吗?如果我压缩它,那么压缩/解压缩成本将涉及两端。真是进退两难。有什么好的建议吗?还是我走错了路


非常感谢。

如果您需要一种简单的方式来指定消息的外观,我想说的是,您可以在消息中使用直接的XML,而不必担心压缩或任何事情(XML并不是非常快)。如果您需要更快、更紧凑的东西,请查看或(我个人更喜欢协议缓冲区,但每个人都不像我……)

例如,如果您需要使接口易于与许多不同的客户端(例如Web服务)进行互操作,那么使用XML可能是一种很好的方法。另一方面,如果你总是负责通信的两端,你总是可以做一些快速开始的事情,然后在以后进行优化。

定义“足够紧凑”,你是否测量到它对于你的应用程序来说太慢了?避免

与任何协议一样,在各个方向都存在权衡。XML为您提供了一种众所周知的跨平台格式,其中包含几乎任何语言的库,能够表示所有类型的结构化数据。XMPP对此进行了选择,并对带宽受限的设置使用可选压缩。在XMPP世界中使用替代表示的实验很少被证明是值得的

JSON是XML的一个缩影,但仍然提供了许多优势。虽然它缺少名称空间,但它相当简单,而且库几乎和XML库一样常见。不过,JSON是基于文本的,在某些情况下可能仍然冗长

最后一个明智的选择是二进制协议。这样做的好处在于,您可以专门针对您的应用程序对其进行定制和优化。缺点是您必须自己编写解析和序列化,尽管有一些工具可以自动完成这项工作,比如Google的项目

最终,所有这些都适用于不同的地方,选择取决于应用程序开发人员,他们应该为给定的项目使用哪一个