德克云技术联盟

标题: 德克云技术核心——报文(DFMsg) [打印本页]

作者: 李昭    时间: 2014-7-15 17:22
标题: 德克云技术核心——报文(DFMsg)
       任何一个技术都有其核心内容,德克云技术也不例外,现下将德克云技术的核心之一——报文(DFMsg)稍作总结,便于开发人员快速理解并在项目开发过程中善用这一技术,提高项目建设速度,增强项目适应性。虽然DFMsg从最初诞生到现在的发展过程并不是一帆风顺,但是经过不断的探索和实践及DECO团队不断的努力,目前DFMsg今年过一年多的磨练,逐步走向和成熟和实用。近期项目《陕西省政府行政审批事项系统》的快速开发完成,DFMsg最新版本和其思想的优势功不可没。
       首先将DFMsg的全称暴漏一下:DECO FrameWork Message,即DFCO框架消息。
       DFMsg目前历经三个版本:
       1.0版本:初始版本,现已废弃。
       2.0版本:诞生了关键字概念的版本,现在还在某些项目中使用。
       2.1版本:明确了公共关键字,并规定了使用规则、数据标准。当前最新版本为2.1.5版:PPT说明文档请参照: DF报文数据标准V2.1.5.pptx (497.79 KB, 下载次数: 2670)

       上面PPT对DFMsg的描述主要集中在细节上,在此对ppt中未描述清楚的部分以问答形式阐述如下:

       1、为什么DFMsg的基本格式是json?
            答:在最初确定最基础数据交互形式的时候,我们选择了HTTP协议。针对当前项目主要以BS形式开发的情况,HTTP协议其应用面较广,而且目前HTTP协议的跨平台性、跨语言性都是我们不错的选择,从开发角度来说,开发人员掌握这种协议的难度也不大。在HTTP协议确定后,我们选择了XML、JSON作为数据交互的最初选择范围,但考虑到XML的冗余性和比较高,我们最终确定了JSON作为数据交互的基本格式。

       2、DFMsg和JSON有区别么?
            答:有。报文的基本格式是JOSN格式,但是DFMsg是强化了数据规则的JSON,它继承了JSON但是具备了JSON所没有的一些思想、概念和特性。表现如下:
            1)、DFMsg引入了“关键字”,基本的json里面是没有“关键字”这个概念的,而从报文2.1开始,DFMsg就具有了关键字的概念。正如PPT中所描述的DFMsg具有20多个关键字,这些关键字不同于一个简单的key,他们都能够被前后台的程序解析、打包成实体对象,从而拥有自己独特的特性和处理方式。例如:user+pwd+orgid能够在DECO云中唯一标识一个用户;datarow(行数据)对象能够被DFMsg对象自由放入一个dt(二维数据表格)对象或者sdt(简单二维数据表格)对象,并可以随时被单独取出来;sdt能够剔除dt中的冗余信息,构造成为更短的数据载体……
           2)、DFMsg重要的是一种数据标准,而非一种简单的数据格式。为什么这么说呢?就像一辆汽车,低档次的标准设计出来的是夏利,高标准设计出来的是宝马,有的人可能问,两种都是车,怎么能区别出标准的好坏呢?高标准要求宝马的车皮必须是5毫米以上的钢板,而低标准要修3毫米钢板就可以了,当发生车祸的时候,宝马里面的乘客受伤的几率会比夏利的受伤几率小很多。在重要的时候确保安全和稳定或更好的性能,这就是标准的意义,举这个例子的意思是:标准只有从设计角度去看,才能找到其意义所在。你如果问我,低标准能不能用,我说他能用,但是以能不能用就判断一个标准的存在价值,是没有意义的。
                   回到DFMsg这种数据标准上来,他在“标准”方面的意义之一,就是统一各项目的输入输出数据标准以及数据格式,使各项目的开发、移植之间由于人员不同、理解不同造成的数据传输问题得以解决,减小工作量,提高开发效率和移植难度。例如当前我们在掌管销售项目中遇到的问题,前期开发人员用的数据传输是JSON格式没错,但是他们在初期没有形成统一的标准,有的人对数据错误的关键字定义是"resultCode",有的又是“error”,这些开发人员离职后,后面接着开发的程序员就难以把握原来的数据标准,稍作修改就出错。
            3)、DFMsg具有一定的自由度。对于DFMsg没有确定为关键字的key,开发人员可以自定义key值,并没有禁止,这是为了开发的自由度。就像任何一个标准一样,DFMsg这种标准告诉大家的是我可以怎么样去用,而不是禁止你怎么去用。这样的标准才有生命力。同JSON相比,只是DFMsg的规则多了那么一点点而已。
            4)、DFMsg的某些关键字构建的对象,是可以和silverlight等工具兼容的。例如silverlight中图表的数据源,就是SDT格式的数据。这样,DFMsg的前后台解析程序包,就可以方便地增加绑定行为,为控件组件的交互奠定良好的基础。

       3、DFMsg在DF(DECO FrameWork)中的位置?
         答:DFMsg这种标准一定要理解成一种“载体”。就像送海鲜的卡车一样,无论东风卡车还是铃木,他的车厢里面装的始终是海鲜这种“数据”,到了它的终点,他就要把海鲜卸下来,送到仓库。我们的DFMsg到了后台,它就可以通过DFMsg包将数据传递出来,你愿意把它分类成鱼类、还是保持原来的一团DFMsg,都是你的自由。只有明白这一层,才能明白我们的DFAM、服务内部其实都需要这种载体来传递数据,在处理请求、响应的时候,尽可能地使用DFMsg。这样能通过程序的统一性能保障请求、响应发送数据的统一性,便于项目移植及维护。
              因此,DFMsg是具有穿透性的DF核心。

        4、DFMsg解析包目前为1.0.0.1版本。DFMsg.jar包提供下载: DFMsg1.0.0.1.jar (36.58 KB, 下载次数: 1249)

        


      






欢迎光临 德克云技术联盟 (http://www.decoclouds.com/)