上个周末我去了一个技术的沙龙,主要的内容是关于开源软件框架应用与软件架构。很有意思的一个讲座以后还要再去听。目前我国的软件有很多的平台和编程语言,比如.net j2ee等,在每个语言里面还有相应的框架,比如struts,aop。。。我们的编程一般不用从头开始,而是运用某一种平台,给予某一种框架,进行开发,现在的框架比较多,也不能都应用,在应用中要注意的问题就是,最好直接继承自pojo对象,我们用起来直接用就好,而不用实现他的某一个特定的接口。
在o/r mapping的层面上,有几个比较好的开源的工具,比如说jdo,caster,hibernate,这些东西相比较Entity Bean来说是比较light-weight的,比较简单。在这个层面上我们有很多的选择,很多中间件和平台都有这方面的产品。比如我们的bv平台,他就是使用ContentManager,ContentList,Content,BVI_GenericDBManager这样的东西来进行我们的最底层的数据库操作的。其实说白了,这些东西就是语言中的抽象出来的object和relationship database之间的互操作。最最常用的就是直接使用sql语言,在此之上,我们人为的对于系统进行分级,这数据库和对象之间的操作很自然的就是这一级。我们在定一个类的时候,比如一个Person类,我们同时定义她的PersonManager和PersonContainer这样子的类,我们在manager里面可以抽象出Person的增删改等等操作,比如添加一个person到数据库,我们直接调用p.Save();就可以了,甚至我们可以对它进行更加深层次的抽象,这时候就需要我们放弃对于数据库的概念,这时候数据库对于编程序的人就是透明的了,程序人员只用调用相应的函数就好了。这时候数据库就是一个更大规模的Container,container.Add(person);就可以了。其实,我们还可以有很多其他的Container,这些container都是装载在内存中的,可以形成各自相应的集合,相互之间是无关的,这些只是初步。我们可以继承Person类,甚至可以定义一个IPerson的接口,这样对于我们实现其多态来还是比较有益的。在这样的基础上我们就能实现更加面向对象,更加抽象的环境。
一个同学告诉我,在.net的比较简单的应用中,没有data representation layer这个层次的东西了,都用aspx直接调用存储过程。。。各村有个村的高招。