我正在设计一个包含各种REST服务的分布式应用程序。最近我一直在讨论是否使用ASP.NET MVC 4 Web API或OData实现我的REST服务。 Web API似乎有一天会成为我需要的东西,但现在它只有一半被烘焙。具体来说,它只是部分实现了OData样式的URI查询,并且没有开箱即用的超媒体。
所以这迫使我再看看OData。我非常喜欢URI查询功能和用于延迟加载的结构超媒体;我想我会在我的应用程序中大量使用这些功能。但是,Atom Pub规范似乎效率极低。
我最近读过post about an efficient format for OData提及“密集的JSON”,但这样的事情似乎并不存在。这是真的?即使没有密集的JSON这样的东西,普通的JSON仍然比Atom Pub更有效,对吗?
是否有任何我希望使用Atom Pub over JSON的情况?
答案 0 :(得分:1)
在OData的语义级别上,ATOM和JSON之间应该没有什么区别。此外,大多数OData服务器(肯定是WCF数据服务)都支持这两种服务器,因此它可以选择使用哪一个客户端。正如Pablo的博客文章所提到的,要获得最佳的有效负载大小,您应该启用HTTP压缩。它在ATOM和JSON上都很好用。
阅读JSON往往更快(XML解析有点贵),但如果您关心客户端的CPU消耗,那就是这样。如果我没记错的话,上次看到这些数字时,ATOM和JSON的压缩有效载荷大小并没有那么不同。
ATOM PUB通常更容易在客户端中使用,它具有良好的XML或ATOM库而不是JSON。反之亦然。但除此之外,应该没有多大区别。