Send As SMS

2005-12-27

基于easyajax的MDA开发的一些想法

Model Driven Application 一直是我比较关注的一个技术,不过,我对MDA的正统理论始终是不得要领,也从来没有对一个实际的MDA框架有过了解。对于基于UML德MDA,我一直都不太感冒。

在我的理想境界中,MDA的模式就是我们将业务逻辑(包括数据结构)这样的开发体完成后,MDA框架可以帮我们完成剩下的任务,比如说用户界面(这往往是 最花费时间的开发任务),虽然不一定很好,适用,但起码可以使用,然后我们可以针对这些不适用的地方把进行开发工作。不需要额外的开发工具(我现在讨厌所 谓的建模工具),也不需要声称一堆无聊的代码(其实,真的不知道正统的MDA框架为什么这么热衷于生成中间代码)。在我看来,MDA的Model其实就是 一些数据,可以被一些通用的模式匹配上,从而做相应的自动处理。就像组件可以根据不同的输入数据执行不同的动作一样,MDA也完全可以利用组件的概念,这 是这时输入的信息就是模式本身。

easyajax 的技术模式,再WEB开发上比较良好的回归到了传统的UI组件模式,一个简单的MDA模式可以这样设计:

1、对于每一个 对象,我们需要的是浏览它的状态(显示)以及执行其容许的操作,前者涉及的是对象的状态显示(对应属性),后者涉及的则是对象的动作(方法)。
2、对于需要进行现实的信息,我们可以将属性映射到一些预先设定的数据结构,这些数据结构可以通过固有的组件显示出来。典型的Record数据结构、RecordSet数据结构。
3、有的时候,一个对象的行为不仅仅是这个对象的方法,在这种情况下,有一种可以扩展的方式,比如说,通过Rule Engine就是一个很好的模式,由规则引擎根据对象的当前状态,决定它可以执行一些什么样的操作。

具体而言,在 easyajax 中,我们可以进行这样的开发:
1、easy.DynamicRecord 可以用来显示/编辑一个 Record
2、easy.DynamicRecordSet 可以用来显示/编辑一个RecordSet。
3、easy.DynamicData 可以用来显示/编辑一个更为General的对象,包括:简单的属性、嵌套的子对象、数组等。
4、对于服务器上的一个对象,可以作为一个 Record/RecordSet/Javascript对象返回,前端界面可以对其进行显示。
5、对于对象的一个方法,我们可以产生一个DynamicForm,来输入这些参数,然后Pass到服务端。

这种MDA的成功推出,对WEB软件的快速开发会具有极为重要的作用,虽然这些动态的用户界面可能不会作为最终的UI制品,但可以最大化的让软件达到一个Baseline,作为迭代开发的一个基础。

0 Comments:

张贴评论

<< Home