【问题标题】:Building a web service to be consumed by multiple platforms - what format should i use?构建一个可供多个平台使用的 Web 服务 - 我应该使用什么格式?
【发布时间】:2011-04-19 03:36:45
【问题描述】:

我们正在寻求创建一个 Web 服务,以便为单个数据存储上的无状态数据事务提供功能。该服务将被运行多个潜在环境的应用程序使用 - 至少是 windows .net、php 和 java,但可能更多。

来回传递数据的最佳格式是什么? “最佳”我认为是易于消费和强类型内容之间的最佳格式。一方面,SOAP 会告诉您您需要了解的有关服务的所有信息,但需要在客户端进行大量处理才能解析。另一方面是 JSON,因为它的格式极简且易于解析,但显然客户端需要对它应该期待什么数据有一个很好的了解。

其中一种解决方案会比另一种更理想吗?还有其他格式可以考虑吗?

作为后续,您可以推荐哪些框架来实现服务器端的格式?我们的服务器操作系统是 linux,因此 php 或 java 将是首选解决方案,但也可以考虑使用类似 node.js 的替代平台。 .NET 世界中的 WCF 之类的东西是理想的,因为您可以编写一次业务逻辑,然后让表示框架同时以多种格式提供它。

【问题讨论】:

  • 为什么一定要使用linux服务器?托管很便宜。不要将解决方案基于您拥有的服务器的操作系统。
  • 我们的客户是一家 linux 商店。这个项目只是已经运行 50 多个 linux 服务器的更大解决方案的一部分。 IT 人员不想同时维护一台 Windows 服务器。
  • 对 linux 的看法...单声道确实不是一个选项,因为 WCF 部分非常不成熟。好吧,我白天是一个 .net 人,晚上是 PHP。一个 PHP 解决方案对于 REST 来说并不难破解。

标签: java php .net web-services node.js


【解决方案1】:

正如@WhiteFang34 所建议的那样,REST 对您来说是一种非常容易访问的协议。尽管它不是一个标准,但它在大多数现代编程语言中被广泛使用并有据可查。

REST 仅仅定义了每个 HTTP 方法应该做什么,但是你仍然需要决定使用什么格式。 JSON 和 XML 是最流行的,但根据我的经验,JSON 在大多数情况下使用起来要容易得多。

【讨论】:

  • JSON 仅在您拥有少量数据时才适用。 XML 可能很冗长,但数据序列化要好得多。
  • @CrazyDart,你能详细说明一下吗?我使用过大量的 JSON 文件,这些文件很容易且准确地反序列化,以及难以解析的复杂 XML 文件。选择序列化格式最终应由数据和用例决定。
  • 谢谢,胡安。我非常熟悉 REST,以及 JSON 和 XML 的选项。我的问题是人们推荐数据序列化以在多个平台上使用的格式,以及为什么。
  • @jaminto 您介意再详细说明一下吗?你的意思是,如何最好地用 JSON 表示你的对象?或者还有什么我可能遗漏的东西?
  • 为了说明我的观点,取一个 10,000 长的字节数组并用两者序列化它。 JSON 的大小是 XML 的两倍。我知道 JSON 很简单,但您只需编写一次反序列化,就可以永远受益。也就是说......对于小事,JSON 更小。这一切都取决于数据。
【解决方案2】:

如果您使用 WCF REST 4.0 模板,您可以在同一服务上获取 REST 和 SOAP 端点。它很容易。我认为 RESTful 是处理大多数事情的最佳方式。

REST 的好处在于它易于使用。它可能需要更多的工作来消耗,但它工作得非常干净。 SOAP 更难使用,但是一旦你把它连接起来,大多数框架都可以很好地使用它。就我自己而言,我在跨多个平台使用 SOAP 服务时从来没有这么幸运过。

【讨论】:

  • @JuanD 指出您需要知道 REST 的序列化...这实际上取决于实现... WCF REST 4.0 模板将以请求的形式返回对象。 .. 如果您发送 XML 或 JSON 的内容类型,它将返回一个类似类型的对象。
  • 再次强调,WCF 是我将(并且已经)用于基于 Windows 的环境,但正如问题所述,我们需要在 linux 上运行的东西。
【解决方案3】:

您应该考虑使用REST。它在网络服务中很受欢迎。我建议阅读A Brief Introduction to REST,它通过 REST 进行应用程序到应用程序的通信。还有RESTful Web services: The basics。 Java 有很多 REST 解决方案可供选择:

  1. Apache CXF
  2. Jersey
  3. RESTEasy
  4. Restlet
  5. Spring (docs)

还有大多数人都遵守的JAX-RS API(除 Spring 之外的所有这些 API)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 2011-09-25
    • 2010-09-13
    • 2012-03-19
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多