【发布时间】:2009-10-17 17:49:04
【问题描述】:
我知道已经有很多关于 SO 的讨论,包括 SOAP、膨胀、XML 和 REST 等替代机制。
情况是这样的。一个新的团队成员真的在谈论基于手工实现协议的难度的 SOAP。他推荐使用 gSOAP(项目全部使用 C++。)他说的是 WSDL 之类的东西可以清理大量杂乱的手工编码的 C++。
现在,我正在处理大多数使用基于 XML 的文本消息和 expat XML 库的网络。所以我有一些与修改消息格式或添加参数列表相关的编程工作(不多)。在发送端,我打包一个 XML 请求并通过一个普通的旧 TCP 套接字发送它。在接收方,我使用 DOM 或 SAX 解析 XML。等等。到目前为止它工作得很好。 XML 消息非常紧凑,平均最多只有几百个字符。我理解这些消息中的每一项。
我们希望使用 PHP 编码的网站可以访问产品的一部分(服务器)。这在一定程度上推动了这个想法,即 SOAP 接口对于脚本编写者来说将“更容易”。这个项目的每个人都相信 SOAP 是他们的救赎。
我认为像 gSOAP 这样的新大型库的引入对成熟项目的发展势头具有极大的破坏性。
我想知道的是,是否有一种不同且更紧凑的方式来执行 SOAP 为我们提供的功能。以及如何平衡 gSOAP 或其他 SOAP 工具的主张,使开发生活更轻松与严峻的现实。
IE,有人告诉我,WSDL 比使用 XML 库手动编码 C++ 更好、更容易、更熟练等。它将 C++ 对象的语义直接放入网络消息的声明中。问题是,我定义的许多 XML 消息在接收端并没有一对一地映射到单个不同的对象。
或者,我可能什么都不担心。
但是当我在这里扫描消息时,现实似乎与我在当地得到的说法相矛盾。
【问题讨论】:
-
我可以说您非常关心 SOAP 的开销/膨胀吗?并试图找出如何在没有这些缺点的情况下实现 SOAP?
-
在此之前我从未考虑过 SOAP。团队中的新人推荐 SOAP 是因为两个明显的原因:1) 他已经使用过它;2) 他不喜欢手动编码 XML 代码的想法,这种代码会撕裂字符串并将它们解析为数据值。跨度>
-
如果你想开辟一个渠道供其他人使用,你不必使用 SOAP,但最好是已经存在并适合你需要的东西。
-
我非常同意你的观点,特别是因为你已经有了一个可以工作的非 SOAP 系统。但是您是否考虑过不解析字符串,而是将数据中的all结构表示为XML 结构?这并不总是可行的,但如果你能做到,它可能是一个更好的选择。