最近越来越发现自己对于架构方面知识的浅薄;求教各位高手……1、最近看网上的一些例子:三层架构一般是这样的
SQLServerDAL的类、OracleDAL的类
分别继承自IDAL得类BLL层通过用IDAL对象;反射到具体的数据库访问类如:(Projcet.IDAL.ICategory)Assembly.Load(path).CreateInstance(className)这样做到 更换数据库时只需要新加一个数据库具体的访问类;修改配置文件2、还有就是System.Data.Common这个类可以建立一些针对所有数据库都适用的DAL层问题:
不知道这两种结构的区别、优劣、
还有就是System.Data.Common里面的一些如DbFactory类 实现的原理是否也是反射呢?
SQLServerDAL的类、OracleDAL的类
分别继承自IDAL得类BLL层通过用IDAL对象;反射到具体的数据库访问类如:(Projcet.IDAL.ICategory)Assembly.Load(path).CreateInstance(className)这样做到 更换数据库时只需要新加一个数据库具体的访问类;修改配置文件2、还有就是System.Data.Common这个类可以建立一些针对所有数据库都适用的DAL层问题:
不知道这两种结构的区别、优劣、
还有就是System.Data.Common里面的一些如DbFactory类 实现的原理是否也是反射呢?
第二种呢?如果第二种是反射 那三次结构 就没有必要搞个SqlServerDAL与IDAL直接搞一个DAL就可以了啊 反正可以所有数据库通用!
在BLL通过接口调用DAL方法
Model,实现业务实体。
IDAL,实现接口。
SQLServerDAL,实现接口里的方法。
web.config里的配置信息,为SQLServerDAL的程序集。
DALFactory,返回程序集的指定类的实例。
BLL,调用DALFactory,得到程序集指定类的实例,完成数据操作方法。
WEB,调用BLL里的数据操作方法。
在大项目开发中,主要是系统架构,看看petshop
这个原理我也看过Petshop 就是我上面提到的第一种方式啊我的问题是 System.Data.Common类既然可以解决所有的数据库数据库访问 何必要写SqlServerDAL与IDAL层呢 直接用System.Data.Common类构建一个DAL层就可以了啊 而且以后换Oracle数据库的时候这个DAL也可以通用;所以我就弄不清楚 既然这样一个简单的方案可以实现 ;为什么还要弄那么多东西呢?
还是另有玄机??
也可使用ORM
System.Data.Common下的类。要实现三层架构也可以使用企业库的数据访问层,很方便。
三层架构里DAL层提供了IDAL接口,这样就实现了BLL和DAL的分离。建议你看看接口编程\设计模式方面的知识。
我觉得吧:参数是肯定一样啊 一个SQL语句 在Oracle、SQL SERVER里面应该是一致的参数吧Dbparameter其次关于不同数据库sql语言的不同 ,这种差异肯定是可以避免的啊 不然SQL SERVER 2000和SQL SERVER 2005的某些函数也一样不能兼容的
我说的意思不是只是在mssql各版本下,Oracle的sql语句有的就跟mssql的不一样。还有mssql的。参数,指的是参数名,有的带@,有的不带
企业库里就封装了,所有参数名,都不需要再加上@。至于语句,就不行了当然有的语句它们是能用的,不能用的就不行了。
我说的意思不是只是在mssql各版本下,Oracle的sql语句有的就跟mssql的不一样。还有MySQL的。