热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

谷歌协议缓冲区vsjsonvsXML-googleprotocolbuffersvsjsonvsXML

Iwouldliketoknowthemerits&de-meritsof我想知道它的优点和缺点GoogleProtocolBuffers谷歌协议缓冲区

I would like to know the merits & de-merits of

我想知道它的优点和缺点

  • Google Protocol Buffers
  • 谷歌协议缓冲区
  • JSON
  • JSON
  • XML
  • XML

I want to implement one common framework for two application, one in Perl and second in Java. So, would like to create common service which can be used by both technology i.e. Perl & Java.

我想为两个应用程序实现一个通用框架,一个用Perl,另一个用Java。因此,我们希望创建可以被Perl和Java这两种技术使用的公共服务。

Both are web-applications.

都是网络应用程序。

Please share me your valuable thoughts & suggestion on this. I have seen many links on google but all have mixed opinions.

请分享你的宝贵意见和建议。我在谷歌上看到过很多链接,但都有不同的观点。

1 个解决方案

#1


240  

Json

Json

  • human readable/editable
  • 人类可读/可编辑
  • can be parsed without knowing schema in advance
  • 可以在不事先知道模式的情况下进行解析吗
  • excellent browser support
  • 优秀的浏览器支持
  • less verbose than XML
  • 那么冗长的XML

XML

XML

  • human readable/editable
  • 人类可读/可编辑
  • can be parsed without knowing schema in advance
  • 可以在不事先知道模式的情况下进行解析吗
  • standard for SOAP etc
  • SOAP标准等
  • good tooling support (xsd, xslt, sax, dom, etc)
  • 良好的工具支持(xsd、xslt、sax、dom等)
  • pretty verbose
  • 很详细的

Protobuf

Protobuf

  • very dense data (small output)
  • 非常密集的数据(小的输出)
  • hard to robustly decode without knowing the schema (data format is internally ambiguous, and needs schema to clarify)
  • 不了解模式就很难进行健壮的解码(数据格式在内部是不明确的,需要模式来澄清)
  • very fast processing
  • 非常快的处理
  • not intended for human eyes (dense binary)
  • 不适合人眼(密集的双星)

All have good support on most platforms.

它们在大多数平台上都有很好的支持。

Personally, I rarely use XML these days. If the consumer is a browser or a public API I tend to use json. For internal APIs I tend to use protobuf for performance. Offering both on public API (either via headers, or separate endpoints) works well too.

就我个人而言,我现在很少使用XML。如果消费者是浏览器或公共API,我倾向于使用json。对于内部api,我倾向于使用protobuf来提高性能。提供公共API(通过头文件或单独的端点)也可以很好地工作。


推荐阅读
  • Flowable 6.6.0 表单引擎在Web应用中的集成与使用
    本文档提供了Flowable 6.6.0版本中表单引擎在Web应用程序中的配置和使用指南,包括表单引擎的初始化、配置以及在Web环境下的具体实现方法。 ... [详细]
  • 本文探讨如何利用Java反射技术来模拟Webwork框架中的URL解析过程。通过这一实践,读者可以更好地理解Webwork及其后续版本Struts2的工作原理,尤其是它们在MVC架构下的角色。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 本文探讨了如何在Node.js环境中,通过Tor网络使用的SOCKS5代理执行HTTP请求。文中不仅提供了基础的实现方法,还介绍了几种常用的库和工具,帮助开发者解决遇到的问题。 ... [详细]
  • 本文探讨了浏览器的同源策略限制及其对 AJAX 请求的影响,并详细介绍了如何在 Spring Boot 应用中优雅地处理跨域请求,特别是当请求包含自定义 Headers 时的解决方案。 ... [详细]
  • 详细指南:使用IntelliJ IDEA构建多模块Maven项目
    本文在前两篇文章的基础上,进一步指导读者如何在IntelliJ IDEA中创建和配置多模块Maven项目。通过详细的步骤说明,帮助读者掌握项目模块化管理的方法。 ... [详细]
  • 详解 | 日志系统ViseLog的基本使用与功能
    本文详细介绍了日志系统ViseLog的使用方法及其核心功能,旨在帮助开发者更好地理解和利用这一工具,提高开发效率。 ... [详细]
  • 本文探讨了使用Filter作为控制器的优势,以及Servlet与Filter之间的主要差异。同时,详细解析了Servlet的工作流程及其生命周期,以及ServletConfig与ServletContext的区别与应用场景。 ... [详细]
  • Java EE CDI:解决依赖关系冲突的实例
    在本教程中,我们将探讨如何在Java EE的CDI(上下文和依赖注入)框架中有效解决依赖关系的冲突问题。通过学习如何使用限定符,您将能够为应用程序的不同客户端提供多种接口实现,并确保每个客户端都能正确调用其所需的实现。 ... [详细]
  • Android中解析XML文件的实践指南
    本文详细介绍了在Android应用开发中解析XML文件的方法,包括从本地文件和网络资源获取XML文件的不同途径,以及使用DOM、SAX和PULL三种解析方式的具体实现。 ... [详细]
  • ServletContext接口在Java Web开发中扮演着重要角色,它提供了一种方式来获取关于整个Web应用程序的信息。通过ServletContext,开发者可以访问初始化参数、共享数据以及应用资源。 ... [详细]
  • 本文探讨了在渗透测试中信息收集阶段使用的几种端口扫描技术,包括nmap、masscan、socket、telnet及nc等工具的应用与比较。 ... [详细]
  • 本文介绍如何创建一个专门用于处理浮点数的JSON处理器,并将其注册到JSON配置器中,以实现对浮点数的精确控制和格式化输出。 ... [详细]
  • 本文详细介绍了 Java 中 freemarker.ext.dom.NodeModel 类的 removeComments 方法,并提供了多个实际使用的代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • MapReduce原理是怎么剖析的
    这期内容当中小编将会给大家带来有关MapReduce原理是怎么剖析的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1 ... [详细]
author-avatar
李-诗-妍_519
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有