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