我没有网络服务经验。从历史上看,我使用专有通信协议构建客户端 - 服务器系统(即使它们恰好是XML)。我只花了几个小时看着Axis2,它让我的脊椎发抖。 WS的学习曲线吓到了我,看到所有XML环绕这么少的功能让我想知道它是否值得这么麻烦。
您如何决定是否需要使用Web服务或自定义通信协议?每种方法的优点/缺点是什么?它们最适合哪些用例?
请发布明确的指南,而非发表意见:)
答案 0 :(得分:4)
构建RESTful Web API;然后,如果使用其他方法(SOAP,XML-RPC等),您将获得许多自动缓存和其他好处
有关详细信息,请参阅this post
另一个好处是,如果您为要使用的代码构建RESTful API,您可以让用户也可以利用它 - 它们通常可以用于您从未梦想过的产品。
答案 1 :(得分:1)
W3C定义的“Web服务”意味着使用SOAP over HTTP。在大多数情况下,SOAP严重过度杀伤;当你向全世界提供公共服务时,它是非常合适的(IMO),例如用于与你的网站互动的API。
其他任何东西(尤其是内部私有通信)很少需要比XML-RPC更复杂的东西。只有在性能成为问题时,您才应该考虑更精简的协议; XML-RPC非常简单且受到广泛支持,因此开发和调试的简便性足以弥补使用膨胀的XML的性能损失。
答案 2 :(得分:1)
请记住,有许多框架可以使编程Web服务变得非常简单。在VB / C#世界中,.Net让人感到高兴。我不确定其他语言的具体框架,但我相信大多数人至少有一个。
Web服务的实现和重用的标准化和简单性使它们非常具有吸引力。如前所述 - 是的,它们使通信非常冗长。如果您担心这一点,为什么不计算您实际将要传输的数据量。有可能,凭借当前的网络和互联网速度,它将是微不足道的 - 即使有XML开销。
答案 3 :(得分:1)
我总是使用自定义数据格式作为最后的手段,而不是第一个。你使用什么广泛使用的方法,但你不太可能在Web服务模型上出错。
可维护性和可扩展性是主要的好处。使用广泛使用的技术,您的解决方案将更容易让其他人理解,另外您可以使用consumers和providers来准备推送库。
答案 4 :(得分:0)
我最近破坏了我的自定义协议习惯。我现在在服务器端使用Apache,而libCurl和libxml2在客户端上加载和解析用C ++编写的XML。
服务器端可以是PHP或用更严肃的语言编写的CGI。取决于你想做什么。
答案 5 :(得分:0)
Webservices具有一定的标准优势,因此您从未听说过的程序可能会使用您编写的Web服务。使用HTTP可以帮助他们通过代理和其他网络障碍进行通信,而无需您进行任何额外的工作。 XML虽然相当冗长和丑陋,但在调试时比二进制数据更容易阅读。
当您通过网络传输内容时,xml的序列化/反序列化不太可能成为性能的限制因素。这可能有点麻烦,虽然为你做这件事的图书馆会有很多帮助。
答案 6 :(得分:0)
在我个人(古怪的家伙)意见中,网络服务只应用作向第三方(即其他公司,组织外的人员等)提供某些内部信息的方式。当然,这也是 最初预期的XML目的。 : - )
如果您可以访问与包含应用程序所需信息的数据库的直接连接 - 那就是要走的路。它更快更简单 - 在应用程序开发中意味着“更好”和“减少错误”。
答案 7 :(得分:0)
SOAP和XML - “所有XML环绕这么少的功能让我想知道它是否值得这么麻烦。”
共。 SOAP非常重,并且在很大程度上解决了整个Java技术堆栈中对静态绑定的需求。
另一方面,REST的重量要轻得多。此外,使用JSON或REST与YAML的REST非常轻量级,并且非常易于实现。它建立在现成的HTTP协议之上。REST要求您定义资源(通过URI命名),以及基于规范CRUD规则(GET,POST,PUT和DELETE)的事务。非常简单和规范。