项目管理者联盟 | 中国工程管理网 | 中国研发管理网   会员中心 资料库 博客 圈子

PMI-ACP®认证

适合敏捷开发项目
敏捷项目管理最佳实践

网络课程

PMI-PBA®认证

重视项目商业分析
商业价值与需求分析能力

网络课程

NPDP®认证

产品管理国际认证
全球产品管理最佳实践

网络课

PMP®认证

单项目管理经典指南
年轻项目经理首选

北京 | 直播 | 录播

PgMP®认证

大型复杂项目全球标准
定位高级项目管理层

网络班

PfMP®认证

链接战略与项目
实现组织资源投资回报

全球直播

软考项目管理

信息系统项目管理师
系统集成项目管理工程师

计划 | 报名 | 经验

论坛
价值源于交流与分享
会员区:
登陆ID 密  码
功能区: 公告建议 | 帖子搜索 | 管理团队 | 荣誉版主 | 帮助手册






 项目型组织  项目管理  工程项目  科技项目  项目化管理  管理软件  资格认证  职业休闲
EPM体系与流程 综合集成管理 总承包管理 IT软件开发 项目型制造 P3E/P6 PMP | PgMP 职业发展探讨
组织与人力资源 进度,范围,成本 国际工程 生物制药 专业服务 微软PROJECT IPMP | PRINCE2 管理学堂
项目管理信息化 团队建设与沟通 房地产 汽车设计开发 生活项目 PowerOn专版 软考项目管理 英语角|读书版
多项目与大项目 质量与风险 监理与咨询 手机数码 文体娱乐 注册建造师 房车吃游
PMO建设与管理 采购与合同 工程设计 项目管理硕士 闲聊版|商务版
俱乐部北京 | 大连 | 福州 | 广州 | 杭州 | 南京 | 山东 | 上海 | 深圳 | 四川 | 天津 | 武汉 | 西安 | 郑州 | 申请成立 TOP榜精华 | 最新 | 最热 | 会员

版面信息

说明:失败的IT项目比比皆是,进度延迟,预算超支,客户需求多变,成员加班抱怨...IT项目(软件开发.,信息系统实施等)寻求新生

本版版主

camer
登录:2013/7/2
次数:867
注册:2003/3/3
发帖:2745
dorothy
登录:2016/12/15
次数:804
注册:2004/9/6
发帖:993
steveli2008
登录:2009/5/26
次数:464
注册:2003/5/12
发帖:1026
zhf_karen
登录:2015/6/2
次数:346
注册:2005/6/13
发帖:469

俱乐部导航

北京大连福州广州杭州
南京山东上海深圳四川
天津武汉西安郑州 

联盟·近期活动

社区热点

开放讲座|项目组合管理与PfMP认证
开放讲座|PgMP:项目管理思维与方法
开放讲座|《项目组合管理与PfMP认证
网络讲座|《项目组合管理与个人职业
开放讲座|《项目组合管理与PfMP认证
网络直播|产品经理的四大核心技能提
如何轻松拿下PgMP?免费学习机会--.
国际项目组合经理PfMP访谈:张富贵
由PMO评论主办的第十二届中国PMO大.
如果不参加这次直播你会痛失一次学.

精彩专题

如何做好项目沟通计划

软件项目质量管理

国际工程索赔与反索赔

更多:

推荐信息

·项目经理沙龙俱乐部
·推荐项目管理公开课程
·联盟VIP会员服务
·联盟99元大课堂
·建造师课程辅导免费试听

社区圈子

软件项目经理水.
圈主:camer
行业:IT软件

集团企业生态体.
圈主:ETPPM
行业:综合应用

深圳IT项目管理
圈主:lshcom
行业:综合应用

项目管理知识宝.
圈主:wenyu2010
行业:工程设计安装

项目经理职业生.
圈主:zhenjm
行业:综合应用

联系社区管理员

咨询电话 010-82273401/11
斑竹申请 admin@mypm.net


版权所有 © 2003-2004
京ICP证070584号 
BBS业务许可2007第353号 
最佳显示模式:1024*768像素
项目管理与PMP认证
软件系统开发中的数据交换协议 [发表于 2014/1/22]
状态 开放帖 浏览量 19155   
该帖子同步发自圈子:深圳IT项目管理 (访问该圈子)

在很多地方都有“数据交换”这个概念,本文所说的“数据交换” 是指在计算机网络中,一个系统把数据传递给另外一个系统。这非常类似于一个人要告诉另外一个人一件事情。
  当一个人要把一件事情告诉另外一个人的时候,我们可以通过电话、邮件、短信、IM工具或者当面说的方式来交流。这种方式类似于系统数据交换要通过 tcp、udp、管道等等的方式实现。当两个人交流的时候,我们需要一种共同的语言才能明白对方的意思,同样的,两个系统要交换数据,也需要定义一种双方都明白的协议,我们称为“数据交换协议”。
  数据交换协议
  数据交换协议的目的是让两个系统进行正确的数据交互。所以几乎各种开发语言都提供了方便使用的数据交换功能。比如说使用JAVA语言的开发的系统使用MySQL数据库存储数据,就是通过MySQL数据交换协议跟MySQL做数据交换;通过JAVA的RMI可以方便的做跨机器的分布式数据交换,RMI也就是一种数据交换协议。
  一般我们在不同的系统、不同的语言之间交换数据的时候,我们会选择一种通用的交换协议或者自己定义一种容易使用的交换协议。 WebService曾经非常流行, 在Web 2.0时代,轻量级的REST协议又开始受到追捧。那么究竟在我们的系统中应该选择什么样的协议呢?
  如何选择数据交换协议
  选择什么样的协议跟我们的应用场景有很大的关系。我们需要考虑我们开发是否方便、接口是否容易发布、是否需要考虑带宽占用成本、序列化和反序列化的性能、接口协议的扩展性等等。下面我们看下几个比较常用的交换协议实现。
协议 实现 跨语言 性能 传输量 RPC
xml 广泛 几乎所有 低 很大 N(可实现)
json 广泛 大量 一般 一般 N(可实现)
php serialize PHPRPC 大量 一般 一般 Y
hessian hessian 大量 一般 小 Y
thrift thrift 大量 高 小 Y
protobuf protobuf 大量 高 小 N(可实现)
ice ice 大量 高 小 Y
avro Apache Avro 少量 高 小 Y
messagepack messagepack 大量 高 小 Y
  上面表格列出了一些常用数据交换协议的一些特性的比较。这里并没有比较好坏,只是想说明不同数据交换协议是有区别的,所以我们需要在我们的应用场景中进行选择。
  开放式
  像微博,SNS这种开放平台、对静态html页面提供javascript接口调用的系统都属于这种类型 。这种类型的特点是:
调用方不完全可控,而且是针对公网的,你可能不知道是谁、是什么语言、是什么方式在调用你提供的数据接口;
接口访问量一般都非常大,要求具有很高的性能和吞吐量;
需要考虑安全问题,外部提交的数据可能不是合法的。
  所以在这种情况下,需要考虑数据传输的带宽消耗和数据交换协议的易用性,以及多语言支持程度。以前对于html页面使用的javascript接口调用一般都使用XML格式,最近几年几乎都转成了json格式了,因为json传输量更小,比XML更加容易使用。 而对于开放平台,由于使用的场景很多,所以需要提供多种交换协议格式。基本上都会提供XML和json。为了提高平台本身的性能和客户端的性能,也可以提供protobuf这种二进制交换协议并且增加压缩支持,以节省带宽传输和解析的性能消耗。
  内部服务
  对于一个大型系统来说,内部服务的数据交换无处不在。从最基本和常见的数据库数据交换、memcached缓存数据交换、消息队列的数据交换到系统之间使用的RPC服务框架等等,都可以算作内部服务的数据交换。内部服务的特点是不用考虑防火墙,不对外开放,速度快(基本无带宽成本)。
  内部服务的数据交换协议的选择空间非常大,一般需要考虑:
数据交换协议的性能
是否需要跨语言支持
数据交换协议的消息体大小
  持久化存储
  对于持久化存储来说,每一种数据交换协议其实都可以实现。一般需要根据应用场景考虑:
是否人工可阅读
存储的空间消耗
序列化和反序列化的性能
是否经过压缩
  跨语言
  假设我们的网站前端页面展示层使用PHP语言开发,中间业务逻辑使用JAVA语言开发,那么就涉及到跨语言数据交换的问题。只要系统不是单纯的使用一种语言,那么就必须考虑这个问题。事实上,考虑未来的扩展和需求变化问题,也最好考虑跨语言的数据交互协议。
  数据交换协议可升级
  在选择数据交换协议的时候,我们同样需要考虑类似于数据库表的?schema设计时的扩展问题。比如一个提供用户信息的数据交换协议接口,现在包含用户名、性别、住址的信息,在升级过程中,增加了一个最后登录的IP信息。如果不考虑数据交换协议升级带来的影响,很可能会导致以前的客户端出现异常或者旧的数据无法正确解析的问题。
  兼容协议的巧用
  兼容协议的巧用非常有用,新产品兼容提供现有成熟的数据交换协议,可以降低使用门槛和产品的开发速度。比如新浪开源的memcacheQ就使用了memcached协议。
  总结
  数据交换协议的各种通用开源实现非常多,数据交换协议只是一个非常宽泛的说法,其实只要实现了数据的序列化和反序列化 ,那么就可以说是一个可以交换数据的协议。数据交换协议的性能其实就是序列化和反序列化的性能,如果加上RPC,那么跟RPC实现本身的性能也有非常大的关系。
  我的新浪微博@sunli1223 ,欢迎与我讨论。
  参考链接:
java序列化和反序列化性能比较:https://github.com/eishay/jvm-serializers/wiki
Java跨语言调用实现方案 http://rdc.taobao.com/team/jm/archives/389

>>> 由论坛统一发布的广告:
楼主 帅哥约,不在线,有人找我吗?fayjie


职务 无
军衔 主帅
来自 四川省
发帖 1197篇
注册 2009/12/18
PM币 40960
经验 17390点

Re:软件系统开发中的数据交换协议 [回复于 2014/6/5]
不错!以后或许能借鉴点!
1楼 帅哥约,不在线,有人找我吗?偶然


职务 无
军衔 无军衔
来自 江苏省
发帖 1篇
注册 2014/6/5
PM币 29
经验 10点

Re:软件系统开发中的数据交换协议 [回复于 2014/6/19]
数据交换协议的目的是让两个系统进行正确的数据交互。所以几乎各种开发语言都提供了方便使用的数据交换功能。比如说使用JAVA语言的开发的系统使用 MySQL数据库存储数据,就是通过MySQL数据交换协议跟MySQL做数据交换;通过JAVA的RMI可以方便的做跨机器的分布式数据交换,RMI也就是一种数据交换协议。
一般我们在不同的系统、不同的语言之间交换数据的时候,我们会选择一种通用的交换协议或者自己定义一种容易使用的交换协议。 WebService曾经非常流行, 在Web 2.0时代,轻量级的REST协议又开始受到追捧。
www.sytm.net/dingwei
2楼 帅哥约,不在线,有人找我吗?sytm2014


职务 无
军衔 三等兵
来自 辽宁省
发帖 12篇
注册 2014/5/30
PM币 45
经验 28点

Re:软件系统开发中的数据交换协议 [回复于 2015/4/9]
rgegerg
3楼 帅哥约,不在线,有人找我吗?zhj375772132


职务 无
军衔 三等兵
来自 北京市
发帖 7篇
注册 2014/3/4
PM币 28
经验 35点

Re:软件系统开发中的数据交换协议 [回复于 2015/4/9]
rgerg
4楼 帅哥约,不在线,有人找我吗?zhj375772132


职务 无
军衔 三等兵
来自 北京市
发帖 7篇
注册 2014/3/4
PM币 28
经验 35点

Re:软件系统开发中的数据交换协议 [回复于 2017/2/17]
分享有益,多谢借鉴
5楼 帅哥约,不在线,有人找我吗?xtroger


职务 无
军衔 无军衔
来自 广东省
发帖 2篇
注册 2017/2/17
PM币 24
经验 11点

共1页  97 [ 第1页 ] 8:
  
!  您尚未登录,不能回复主题。    现在 登录  注册
关于联盟 | VIP会员 | 培训服务 | PMP认证 | PgMP认证 | 刊物出版 | 沙龙会议 | 人才服务 | 广告投放 | 联系我们 | 友情链接
建设运营:共创时网络
版权所有 京ICP证070584号 BBS业务许可2007第353号