.NET_STAR

打造技术团队,愿与您共同开创事业!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

以前公司一直用petshop4.0精简架构,但代码量比较大,如果要改动一个方法参数则接口层、数据库层、逻辑层都得改动联系性比较紧密
但又看不出来这样做的好处,我用最普通的三层(数据+逻辑+表示)也一样能实现,为什么一定要加一个接口和工厂层
大概分几下几层:

MSoft.Mat………………………………  网站
MSoft.Mat.BLL…………………………  逻辑
MSoft.Mat.DALFactory………………… 工厂反射
MSoft.Mat.IDAL………………………… 接口
MSoft.Mat.SQLServerDAL……………… 数据
MSoft.Mat.DBUtility…………………  数据库连接
MSoft.Mat.Model…………………………实体

与最普通的三层大概就是多了接口和工厂层,就是因为这两层对数据库移植带来了方便性
比如现在是SQLSerser数据库,现在需要移植到Oracle数据库,则数据库层多出一层(如下):

MSoft.Mat………………………………  网站
MSoft.Mat.BLL…………………………  逻辑
MSoft.Mat.DALFactory………………… 工厂反射
MSoft.Mat.IDAL………………………… 接口
MSoft.Mat.SQLServerDAL……………… 数据(SQL)
MSoft.Mat.OracleDAL………………    数据(Oracle)
MSoft.Mat.DBUtility…………………  数据库连接
MSoft.Mat.Model…………………………实体

 

 
因为工厂反射调用的程序集名称是动态配置(一般在web.config配置)的,即:MSoft.Mat.SQLServerDA和MSoft.Mat.OracleDAL是动态的,而通过所要实例化类和接口的名称是相同的,所以数据库移植只需要改动数据库层就能达到效果(当然了数据库连接字符串也是要改动)
当我们在各种数据层类都做好了,比如初步打算是Sqlserver、Oracle、Mysql数据库之间的移植,则我们可以定义数据类,如下:

MSoft.Mat………………………………  网站
MSoft.Mat.BLL…………………………  逻辑
MSoft.Mat.DALFactory………………… 工厂反射
MSoft.Mat.IDAL………………………… 接口
MSoft.Mat.SQLServerDAL……………… 数据(SQL)
MSoft.Mat.OracleDAL………………    数据(Oracle)
MSoft.Mat.MysqlDAL………………     数据(Mysql)
MSoft.Mat.DBUtility…………………  数据库连接
MSoft.Mat.Model…………………………实体

那么通过改动配置文件中程序集名称变量(例如:要移植到Oracle数据库,则webconfig中 变量=“MSoft.Mat.OracleDAL”),即可达到数据库移植的效果
这只是我自己的一个理解,如果有不对之处还望大家纠正

好了,先写到这吧。要辞职转行了!也许这是最后几次写技术博客了,不知道以后还有没有机会再写DotNet技术博客

posted on 2009-07-02 08:42  雷明  阅读(873)  评论(6编辑  收藏  举报