`
isiqi
  • 浏览: 16589381 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

软件系统开发中的数据交换协议

阅读更多

当一个人要把一件事情告诉另外一个人的时候,我们可以通过电话、邮件、短信、IM工具或者当面说的方式来交流。这种方式类似于系统数据交换要通过 tcp、udp、管道等等的方式实现。当两个人交流的时候,我们需要一种共同的语言才能明白对方的意思,同样的,两个系统要交换数据,也需要定义一种双方都明白的协议,我们称为“数据交换协议”。
数据交换协议
数据交换协议的目的是让两个系统进行正确的数据交互。所以几乎各种开发语言都提供了方便使用的数据交换功能。比如说使用JAVA语言的开发的系统使用 MySQL数据库存储数据,就是通过MySQL数据交换协议跟MySQL做数据交换;通过JAVA的RMI可以方便的做跨机器的分布式数据交换,RMI也就是一种数据交换协议。
一般我们在不同的系统、不同的语言之间交换数据的时候,我们会选择一种通用的交换协议或者自己定义一种容易使用的交换协议。 WebService曾经非常流行, 在Web 2.0时代,轻量级的REST协议又开始受到追捧。那么究竟在我们的系统中应该选择什么样的协议呢?
如何选择数据交换协议
选择什么样的协议跟我们的应用场景有很大的关系。我们需要考虑我们开发是否方便、接口是否容易发布、是否需要考虑带宽占用成本、序列化和反序列化的性能、接口协议的扩展性等等。下面我们看下几个比较常用的交换协议实现。

上面表格列出了一些常用数据交换协议的一些特性的比较。这里并没有比较好坏,只是想说明不同数据交换协议是有区别的,所以我们需要在我们的应用场景中进行选择。
开放式
像微博,SNS这种开放平台、对静态html页面提供javascript接口调用的系统都属于这种类型 。这种类型的特点是:
1、调用方不完全可控,而且是针对公网的,你可能不知道是谁、是什么语言、是什么方式在调用你提供的数据接口;
2、接口访问量一般都非常大,要求具有很高的性能和吞吐量;
3、需要考虑安全问题,外部提交的数据可能不是合法的。
所以在这种情况下,需要考虑数据传输的带宽消耗和数据交换协议的易用性,以及多语言支持程度。以前对于html页面使用的javascript接口调用一般都使用XML格式,最近几年几乎都转成了json格式了,因为json传输量更小,比XML更加容易使用。
而对于开放平台,由于使用的场景很多,所以需要提供多种交换协议格式。基本上都会提供XML和json。为了提高平台本身的性能和客户端的性能,也可以提供protobuf这种二进制交换协议并且增加压缩支持,以节省带宽传输和解析的性能消耗。
内部服务
对于一个大型系统来说,内部服务的数据交换无处不在。从最基本和常见的数据库数据交换、memcached缓存数据交换、消息队列的数据交换到系统之间使用的RPC服务框架等等,都可以算作内部服务的数据交换。内部服务的特点是不用考虑防火墙,不对外开放,速度快(基本无带宽成本)。
内部服务的数据交换协议的选择空间非常大,一般需要考虑:
1、数据交换协议的性能
2、是否需要跨语言支持
3、数据交换协议的消息体大小
持久化存储
对于持久化存储来说,每一种数据交换协议其实都可以实现。一般需要根据应用场景考虑:
1、是否人工可阅读
2、存储的空间消耗
3、序列化和反序列化的性能
4、是否经过压缩
跨语言
假设我们的网站前端页面展示层使用PHP语言开发,中间业务逻辑使用JAVA语言开发,那么就涉及到跨语言数据交换的问题。只要系统不是单纯的使用一种语言,那么就必须考虑这个问题。事实上,考虑未来的扩展和需求变化问题,也最好考虑跨语言的数据交互协议。
数据交换协议可升级
在选择数据交换协议的时候,我们同样需要考虑类似于数据库表的?schema设计时的扩展问题。比如一个提供用户信息的数据交换协议接口,现在包含用户名、性别、住址的信息,在升级过程中,增加了一个最后登录的IP信息。如果不考虑数据交换协议升级带来的影响,很可能会导致以前的客户端出现异常或者旧的数据无法正确解析的问题。
兼容协议的巧用
兼容协议的巧用非常有用,新产品兼容提供现有成熟的数据交换协议,可以降低使用门槛和产品的开发速度。比如新浪开源的memcacheQ就使用了memcached协议。
总结
数据交换协议的各种通用开源实现非常多,数据交换协议只是一个非常宽泛的说法,其实只要实现了数据的序列化和反序列化 ,那么就可以说是一个可以交换数据的协议。数据交换协议的性能其实就是序列化和反序列化的性能,如果加上RPC,那么跟RPC实现本身的性能也有非常大的关系。

分享到:
评论

相关推荐

    附件2:QGDW11778—2017面向对象的用电信息数据交换协议_增补备案20181107.pdf

    该文件名为“QGDW11778—2017面向对象的用电信息数据交换协议_增补备案***.pdf”,是一个关于智能电能表开发与数据交换的国网标准协议文档。该文档不仅提供了数据交换的基本协议规范,还包含了面向对象设计思想,...

    udx手机数据交换协议

    UDX(Unified Data Exchange)手机数据交换协议是中国信息产业部为了解决跨平台手机之间进行短信、电话本、彩信和邮件等信息互传问题而制定的一种通信标准。这一协议的目的是提供一个统一的框架,使得不同品牌和操作...

    不同CAD系统中产品数据交换方法.pdf

    宏参量法是另一种产品数据交换方法,它利用了参数化建模技术,通过定义变量和规则来创建模型,使得一个CAD系统的模型能够在另一个系统中被重新参数化,从而实现数据交换。与STEP标准相比,宏参量法对特定的产品设计...

    MCGS组态软件与VB数据交换的实现

    总的来说,《MCGS组态软件与VB数据交换的实现》这份文档为读者提供了在工业自动化系统开发中整合MCGS和VB的实用技巧,是理解这两种技术协同工作的宝贵资源。通过深入学习和实践,开发者可以更加熟练地利用这些工具...

    H-0010-20-43060 迈瑞病人数据共享协议开发指南[中文电子档].pdf

    其中“协议层次”部分涉及到HL7(Health Level 7)协议的标准,这是一种医疗行业内部用于数据交换的国际标准。HL7底层协议负责基本的通信和数据格式,而HL7协议层则是在此基础上的更高层级的协议。文档还指出了字符...

    软件开发及技术服务协议.docx

    技术要求可能涉及软件在Linux平台上的运行,J2EE架构的采用,C/C++语言的数据交换,以及系统的安全性和可扩展性。系统应具备数据容错纠错和日志机制,以确保数据一致性、完整性和灾难恢复能力。软件设计需遵循面向...

    KepOPC工业互联网数据交换平台

    同时提供MQTT发布订阅功能,支持基于websocket的web数据应用,最终形成区别于组 态软件的HMI及MES系统,很好地填补了工业自动化数据到互联网、云IoT架构平台的跨平台数据交换和过渡,为工业大数据平台提供现场基础...

    地球空间数据交换格式

    5. 兼容性和互操作性:标准鼓励开发人员遵循统一的接口和API设计,确保不同系统间的兼容性,实现跨平台的数据交换。 6. 安全与隐私:尽管该标准未直接涉及,但数据交换应遵循相应的安全规定,保护数据不被非法获取...

    KepOPC工业互联网数据交换平台V2.4.9

    同时提供MQTT发布订阅功能,支持基于websocket的web数据应用,最终形成区别于组 态软件的HMI及MES系统,很好地填补了工业自动化数据到互联网、云IoT架构平台的跨平台数据交换和过渡,为工业大数据平台提供现场基础...

    异构数据交换共享软件系统(PMSS)技术研发总体设计方案.doc

    异构数据交换共享软件系统(PMSS)技术研发...这个总体设计方案是异构数据交换共享软件系统开发的核心指导文件,它为项目提供了全面的技术蓝图,确保系统能够有效地解决异构数据交换的问题,实现数据的有效共享和利用。

    HART协议与软件开发

    2. **成本效益**:无需额外的布线或设备改造,即可在现有基础设施上实现智能设备的数据交换,降低了升级成本。 3. **增强功能**:不仅支持基本的过程控制参数传输,还能进行设备诊断、校准、配置等高级操作,提高...

    自己做的一个数据交换的东西

    标题中的“自己做的一个数据交换的东西”表明这是一个个人开发的数据交换解决方案,可能是一个软件或工具,用于在不同的数据源之间进行数据迁移、整合或者同步。描述中的“data swap”进一步确认了这个项目的核心...

    基于WebService数据交换的研究和实现

    【标题】:“基于WebService数据交换的研究和实现” 【描述】:WebService是一种基于互联网的、用于应用程序之间进行交互...通过深入研究和实践,我们可以更好地理解和利用这一技术,提升软件系统的互操作性和灵活性。

    网络协议分析与软件编程

    网络协议是计算机网络中数据交换的规则,它定义了通信双方如何组织和交换信息。在网络协议分析中,我们关注的是如何理解和解析这些规则,以理解网络通信的过程。这通常涉及到使用网络嗅探工具,如Wireshark,来捕获...

    大疆 NazaM v2 gps数据协议

    这个GPS数据协议是NazaM v2飞控与外部设备或自定义应用进行数据交换的关键,通过串口通信方式,我们可以利用这些数据开发自己的嵌入式应用。 串口通信是一种常见的数据传输方式,适用于短距离、低速率的通信需求。...

    面向电子政务的数据交换平台设计

    在XX省的电子政务建设中,这些目标是设计数据交换平台的核心指导原则。 系统平台选型是构建电子政务数据交换平台的关键步骤。选择适合的平台能够确保数据的安全性、稳定性和可扩展性。这通常涉及对操作系统、数据库...

    地面站开发,VS软件c#语言,匿名科创地面站协议

    匿名科创地面站协议可能是一种自定义的通信协议,用于地面站和飞行器之间的数据交换。这种协议可能包含了加密和解密机制,以确保数据的安全传输,防止未授权的访问。协议的设计可能涉及以下几个关键部分: 1. **帧...

Global site tag (gtag.js) - Google Analytics