ERP/MIS开发 工作多年后积累的五种信息化软件开发模式
工作几年后的积累,经历大大小小的数个项目开发,积累了以下几种软件开发的模式和方法。
全部以Northwind数据库为例子,来比较几个开发方式的主要区别和着重点,更详细的内容请参看博客文章。
这里的开发模式,仅仅以代码的书写方式来比较。比如使用LLBL Gen框架,则大部分的时间在开发业务逻辑;
基于ASP.NET应用代码生成器的方式,适合于项目初期,一点点的加表,加字段,与数据读写相关的代码则可以直接的从代码生成器中拷贝代码;基于Repository Factory的方式,会大量应用到存储过程;基于Code Smith的方式,先拷贝一分标准的项目的demo代码,以获取项目的基础结构,再根据需要,从需求中分离出数据读写要求,拷贝代码。
1 基于LLBL Gen的ORM开发方式
创建SQL Server的数据库连接,使用集成认识方式
添加需要进行数据读写的实体,建立实体与数据库表的映射关系。
新建立一个Windows Forms的项目,给窗体添加一个DataGridView控件,在窗体的FormLoad事件中写如下代码
DataAccessAdapter adapter=new DataAccessAdapter();
EntityCollection<CustomersEntity> customer = new EntityCollection<CustomersEntity>();
adapter.FetchEntityCollection(customer,null);
dataGridView1.DataSource = customer;
项目结构图如下
2 基于代码生成器的开发方式
这种方式是基于单个文件或数据表来设计的,所以需要自己手动添加项目结构。
项目的结构如下
这一步骤要求可以用企业库配置文件编辑工具编辑配置文件。
这种模式,本质上还是Db-script 的方式,拼凑SQL语句,发送到数据库中以进行数据读写。
3 微软轻量级代码生成器 Repository Factory
有微软的企业库,再配上这款代码生成工具,开发速度也很快.
最终的数据访问代码,看起来是这个样子
ICustomersRepository repository = RepositoryFactory.Create<ICustomersRepository>("Northwind");
List<Customers> customers = repository.GetAllFromCustomers();
dataGridView1.DataSource = customers;
请参考文章《微软轻量级代码生成器 Repository Factory》来了解这种模式的开发步骤。
4 基于Code Smith模板的开发方法
自己手写的代码生成器,ASP.NET应用代码生成器,常常经不起需求的变化,升级生成的模板代码也会遇到阻碍。
比如,要给生成的实体加上序列化支持,则需要改动代码并重新编译,自认识Code Smith后,才明白模板生成的威力
这是一套ERP/MIS的模板,Build All.cst可以生成所有项目所需要的文件,从Model实体,到数据访问接口Contract和SqlClient实现,再到Web UI和Windows UI,可以自动化生成的地方都用模板来生成。
曾经在ERP/MIS开发中,写过一个批量生成模板的插件工具,Smith Builder
这种模式需要一个非常标准的demo,来表达模板中的各个方法的含义和作用。通过改善template或者改善demo,从两方面来改进项目开发的效率,也值得推荐。
如果对Smith Builder的源代码感兴趣,可到epn.codeplex.com的Source Code中下载它的源代码。
5 基于Mindscape NHibernate Designer的NHibernate开发方式
在项目中应用了NHibernate作为ORM框架读写数据,再配合Mindscape NHibernate Designer提供的Model-First或Database-First开发方式,也能达到快速开发。
Mindscape NHibernate 使用标准的NHibernate方法来开发数据库应用,作为可视化工具,它改进了数据库字段与实体属性的映射方法,没有用xml文件存储,而直接内嵌到代码中。请参考文章《ERP MIS开发 Mindscape NHibernate + MySQL 快速开发入门》了解更多的细节。
再到后来接触LLBL Gen后,也了解它提供的NHibernate框架
因为已经熟悉了LLBL Gen Runtime的API接口和方法,所以并没有实际应用LLBL Gen 的NHibernate框架到项目开发中。把代码从一种ORM框架移植到另一种ORM框架,应该说是一种恶梦。何况现在还有更流行的Entity Framework。
请参考文章《ERP MIS开发 LLBL Gen NHibernate + MySQL 快速开发入门》了解更多细节。
总结:我故意打乱了我使用这些模式开发项目的顺序,也就是无法看出它是什么时候应用到项目中去的。不同的学习阶段有不同的理解,探索,于是会努力寻找一些开发的模式,供自己的团队成员参考。还有更多的技术,比如Entity Framework没有应用过,更新的太快了;Linq to SQL也没有应用到项目中就out了;ASP.NET MVC也一直没有在项目中使用过……故意把这些我并不了解和熟悉技术引出来,打击一下自己,是为了引出最后一句结论:无论应用何种技术或方法,把公司的任务按时做完,及时交付项目,就是应用了最好的技术和方法。