`
ske3
  • 浏览: 10114 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

我的两年研发工作之路(三)——CDF的诞生

阅读更多

    在确立了平台的基本特性之后,就开始具体的设计、开发工作了。当时,摆在我们面前的第一个问题就是:用什么东西来放展示层的扁平化的数据?如果是结构化的数据,我们可以使用对象来存放数据。那么扁平化的数据应该怎么处理呢?我第一个想到的就是.Net里的DataSet类型。因为我在大学里,以及刚毕业的时候,并不是从事JAVA的,而是从事.Net应用开发的,所以对.Net的一些特性比较清楚。

   乍看之下,用DataSet来作为扁平化数据存储的容器,没有什么问题。但是,与我们的整体架构一整合,就出了问题。

    因为,在整体架构里我们为客户端和服务端进行明确的职责分工,服务端只为客户端提供原始的数据,不因为客户端展示层渲染效果的不同而给不同的数据;而客户端的职责是获取服务端提供的原始数据,经过一定处理后,转化成不同的HTML代码,已各种方式进行渲染;客户端与服务端通过AJAX进行通信。这样的分工,导致各个层的职责很明确,服务端只负责根据业务抽取Service Interface(类似于SOA的设计理念,无非走的不是SOAP协议);而客户端只负责同一数据在不同页面上以不同的方式进行渲染。

    这样的架构就导致我们需要在页面层,通过javascript脚本语言去操作数据,那么DataSet在页面层的表现形式是什么?最终没有想通,就放弃了该方案。

    但是,在这样的分析过程中,我们确立了一点:在页面层使用JSON为数据承载的容器。想通这点,我们就全部清晰了。只要JSON对象能与JAVA层的对象进行自动转换不救可以了嘛!OK,一条路打通了。

    但是,这还不是我们最终的方案。因为,我们考虑:如果我们面向组件的方式进行软件开发,同时为提高组件的复用度,那么就要在开发组件时,抛开具体的业务;那么会有什么结果呢?结果只有一个,不同的组件会定义自己特有的对象;然后当我们将N个组件组装一起时,组件与组件之间的特有对象的转换将变得异常的复杂、繁琐。

    此时,我们就想起了Tibco公司的GUI组件中用的一个通用数据格式(CDF),它的英文全称是Common Data Format。如果,有人研究过这个格式的,就知道其实它就是用XML定义的一种格式。这种通用数据格式的做法,其实就是将强类型对象,转化为弱类型对象,然后在数据总线上使用弱类型对象,而对具体的组件来说,其中数据总线上获取弱类型对象,然后将弱类型对象转化成强类型对象之后,进行逻辑处理,最后再将逻辑处理的结果转化为统一格式的弱类型对象,再重新放到数据总线上,供其他组件使用。这种方式,规定了组件“吃”的和“拉”的东西在格式上的一致性,然后在通过数据总线进行传递。这样,就让组件集成的工作变得轻松、快乐,也极大的增强了组件的通用新。

   我们将Tibco的CDF进行一点的变化后,变成了我们的CDF格式。也定义以下规范:

   1、在页面层,使用javascript脚本语言操作对象时,使用JSON。

   2、在JAVA中,使用POJO。

   3、组件之间使用CDF进行通信。

   4、平台提供CDF、JSON、POJO之间自动转换的工具。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics