(声明:本系列只想给大家介绍.net框架,并不是语法和类的使用的讲解,所以只能概括的描述一下所提到的类,如果有疑问可以到MSDN上面去查)
ADO.net类库有两种完全不同的方式来实现数据访问:连接式和断开式.ADO.NET没有提供单一的方式和不同的数据库进行通信,而是提供了多种数据提供器,这样的好处是可以将某种类型数据库的特性发挥出来.我们来看看ADO.NET中的核心类。
IDbConnection:定义配置某个数据库连接的一些成员。如连接字符串,超时,连接状态等。
IDbCommand:定义命令以及所执行的操作。如ComandText,ExecuteReader,ExecuteNonquery,Parameter等。
IDbDataParameter:他继承了IDataParmeter并扩展了他,定义了DbType,Direction,ParameterName,Value等。
IDbDataAdapter:继承自IdataAdapter,IdataAdapter中主要来完成数据的映射,然后IDbDataAdapter扩展了IdataAdapter,加入了,Delete,select,Update,Insert这四个IDbCommand命令。GOF23中的Adapter(适配器)模式在这里被使用,SqlAdapter等类就是用来适配各种已经有了详细接口的DB。
IDataReader:IDataReader继承了IDataRecord并对其扩展,Idatarecord用来定义读取强类型化的数据,Getint16,GetDateTime之类,Idatareader加入了读取对象的常用行为,Next,Depth等。
图中Dbconnection,DbCommand等抽象类分别继承了上述的接口,并实现了一些任何数据库都公用的方法而已,这里不再赘述。
他们之间的协作关系如图:
在这里就要讲到题目所示的架构模式中的数据源架构模式和领域逻辑模式,MS在这里用了什么模式呢,首先我们来了解一下数据源都有哪几种架构模式:
1.表数据入口:一个表实例处理数据库表中的所有行.(Adapter中承载了一张表,他就代表数据库,可以对数据进行填删改查等操作)
2.行数据入口:访问表中单条记录地对象,一行一个实例.(DataReader,这里的行数据只能读取,而不能修改.每一次Reader.Next(),就会返回一个数据行.)
3.数据影射器(ORM):.net中没有这种模式,ORM本身就很复杂,这里就不讲解了.
在.net中有表数据入口和行数据入口,这两种模式的实现是为了满足一些应用,行数据可以更好的面向对象,表数据操作起来直观.
领域逻辑模式,也就是所谓的业务罗基层,它有以下几种架构模式:
1.事物脚本:也就是使用过程来实现业务逻辑.老ASP的写法,就是这种过程性的编程.
2.领域模型:合并了行为和数据的对象模型,比如你建立了一个Person类,里面包括他的名字,这就是数据,然后你的业务逻辑是给他改名字,就会做一个改名字的方法.这就是简单的领域模型.
3.表模块:处理数据库表或视图中的所有业务逻辑的一个实例,他通常需要平台的支持,而.NET中的DataSet就是这种模式的应用。
我们可以用Dataset来完成我们的业务逻辑,一个很方便的应用.