目前,大部分公司都有自己的开发平台,有的是将开源的框架经过不断的修改整理完善而来的(列如:NHibernate,Entity Framework,spring.net等),也有的是根据实际的项目需要专门开发的,这就需要有过硬的技术能力。到现在为止,我也将做的多个项目进行整合不断完善,基本实现了一个简单的开发平台,和大家分享一下我的设计思路和平台的结构,希望大家能指出不足之处。
做一个平台的目的无非是为了提高开发的效率,降低开发的成本。为了提高效率就必须将项目中的公共部分的代码抽象出来,将实现相似功能的程序共通化,减少重复代码的使用,并使程序易于扩展,适应变化。我的平台中实现了以下功能:
一.集成数据库的访问
作为一个程序员,如果每次实现对数据库的操作都要重复编写代码来定义和操作数据库连接对象Connection,事物处理对象Transaction,sql语句执行对象Command等等,那就很愚蠢的做法。我见过的公司都对数据库的访问做了处理,有一些使用的是ORM框架,连sql语句都不需要写,就能实现对数据库的增删改查。但是这种框架也有一些缺点,在实现复杂的多表查询时,不好实现,而且在性能方面也有一点不足。我在这个平台中没有使用ORM技术,而是将对数据的访问进行了共通化,分别实现了对oracle,DB2,sqlserver数据的访问,还可根据需要扩展对其他数据库的访问。访问数据库时只需要传入sql语句,相应的参数,并设定是否启用事物就能实现对数据库的访问。
设计图如下:
也有的框架是使用Linq To Sql 实现对数据库的访问,这样能节省很多代码,不需要写sql语句。但是使用这种方法也有缺点:
1.Linq To Sql 实现对数据库的访问的性能不是很好。
2.当数据库要从sqlServer换为oracle等其他数据库时改动量会很大。
二. 集成日志的处理
现在有很多优秀日志工具包,如Log4等,也很好用。但我在这个平台中没有用这些现成的日志工具包,而是采用了自己开发的日志包。主要记录三种日志:
1.异常日志, 能把发生异常的详细信息记录下来,用于查找异常发生的原因。
2.sql语句执行日志,用于记录执行的sql语句,sql语句执行的时间,参数等信息。
3.debug跟踪日志,用于记录一些指定的信息(如登陆用户进行的操作,某个特殊变量的值,某个函数执行的时间等)。
这些功能都能通过配置文文件中的开关来开启或关闭。
三.提供大量共通类库
提供图片处理,Excel,word,Txt文件处理,文件传输处理,压缩解压缩处理,Json处理,加密解密处理,自定义控件等等的类库。这样在平台需要实现一些特殊的功能时,只需要调用相应的方法就能实现。
四.集成通用的功能
如权限的管理,菜单的设定等一些通用的功能。
五.动态表单设计器
通过表单设计器,可根据需要设计表单的布局等信息,并将表单的信息用xml的形式保存到数据库。当需要对表单的布局,样式等进行修改时,可直接从数据库中读取xml文件进行修改。这样当页面发生不涉及应用逻辑的变化时,不用修改代码,直接通过设计器修改页面即可。页面保存后会根据模板生成相应的html页面或aspx页面,当访问页面时,根据设计的权限判断是否能访问,如果能访问,则转到相应的页面中,然后根据权限显示页面的状态。
六.动态报表设计器
用于设计报表的布局等信息,并将报表的信息用xml的形式保存到数据库中。当需要对报表的布局,样式,数据源等信息进行修改时,可直接读取xml进行修改。