第一部份:工厂模式
一、项目名称及描述:
(
实现步骤为:
4-3-6
-5-2-1)
1 、 WEB =表示层
2 、 BLL =业务逻辑层
3 、 IDAL =数据访问层接口定义
4 、 Model =业务实体
5 、 DALFactory =数据层的抽象工厂 ( 创建反射 )
6 、 SQLServerDAL = SQLServer 数据访问层 / oracleDAL = Oracle 数据访问层
DBUtility 数据库访问组件基础类
1 、 WEB =表示层
2 、 BLL =业务逻辑层
3 、 IDAL =数据访问层接口定义
4 、 Model =业务实体
5 、 DALFactory =数据层的抽象工厂 ( 创建反射 )
6 、 SQLServerDAL = SQLServer 数据访问层 / oracleDAL = Oracle 数据访问层
DBUtility 数据库访问组件基础类
二、项目引用关系
1 、 Web 引用 BLL 。
2 、 BLL 引用 IDAL , Model ,使用 DALFactory 创建实例。
3 、 IDAL 引用 Model 。
4 、 Model 无引用。
5 、 DALFactory 引用 IDAL ,通过读取 web.config 里设置的程序集,加载类的实例,返回给 BLL 使用。
6 、 SQLServerDAL 引用 Model 和 IDAL ,被 DALFactory 加载的程序集,实现接口里的方法。
三、实现步骤
1 、创建 Model ,实现业务实体。
2 、创建 IDAL ,实现接口。
3 、创建 SQLServerDAL ,实现接口里的方法。
4 、增加 web.config 里的配置信息,为 SQLServerDAL 的程序集。
5 、创建 DALFactory ,返回程序集的指定类的实例。
6 、创建 BLL ,调用 DALFactory ,得到程序集指定类的实例,完成数据操作方法。
7 、创建 WEB ,调用 BLL 里的数据操作方法。
1 、 Web 引用 BLL 。
2 、 BLL 引用 IDAL , Model ,使用 DALFactory 创建实例。
3 、 IDAL 引用 Model 。
4 、 Model 无引用。
5 、 DALFactory 引用 IDAL ,通过读取 web.config 里设置的程序集,加载类的实例,返回给 BLL 使用。
6 、 SQLServerDAL 引用 Model 和 IDAL ,被 DALFactory 加载的程序集,实现接口里的方法。
三、实现步骤
1 、创建 Model ,实现业务实体。
2 、创建 IDAL ,实现接口。
3 、创建 SQLServerDAL ,实现接口里的方法。
4 、增加 web.config 里的配置信息,为 SQLServerDAL 的程序集。
5 、创建 DALFactory ,返回程序集的指定类的实例。
6 、创建 BLL ,调用 DALFactory ,得到程序集指定类的实例,完成数据操作方法。
7 、创建 WEB ,调用 BLL 里的数据操作方法。
注意:
1 、 web.config 里的程序集名称必须与 SQLServerDAL 里的输出程序集名称一致。
2 、 DALFactory 里只需要一个 DataAccess 类,可以完成创建所有的程序集实例。
3 、项目创建后,注意修改各项目的默认命名空间和程序集名称。
4 、注意修改解决方案里的项目依赖。
5 、注意在解决方案里增加各项目引用。
1 、 web.config 里的程序集名称必须与 SQLServerDAL 里的输出程序集名称一致。
2 、 DALFactory 里只需要一个 DataAccess 类,可以完成创建所有的程序集实例。
3 、项目创建后,注意修改各项目的默认命名空间和程序集名称。
4 、注意修改解决方案里的项目依赖。
5 、注意在解决方案里增加各项目引用。
第二部份:
Profile
的使用
(
也是工厂方法
)
概述: PetShop 的 Profile 通过自己的 ProfileProvider 来实现。
一、项目名称及描述
1 、 Profile = Profile 的数据访问层
2 、 ProfileDALFactory = ProfileDAL 的工厂类 ( 反射创建 ProfileDAL)
3 、 IProfileDAL = Profile 的数据访问层接口定义
4 、 SQLProfileDAL = SQL Server 的 Profile Providers 做用户状态管理
概述: PetShop 的 Profile 通过自己的 ProfileProvider 来实现。
一、项目名称及描述
1 、 Profile = Profile 的数据访问层
2 、 ProfileDALFactory = ProfileDAL 的工厂类 ( 反射创建 ProfileDAL)
3 、 IProfileDAL = Profile 的数据访问层接口定义
4 、 SQLProfileDAL = SQL Server 的 Profile Providers 做用户状态管理
二、项目引用关系
1 、 Profile 引用 ProfileDALFactory , IProfileDAL , Model 。通过 ProfileDALFactory 的方法创建程序集实例。
2 、 ProfileDALFactory 引用 IProfileDAL 。实现程序集实例的方法。
3 、 IProfileDAL 引用 Model 。实现接口。
4 、 SQLProfileDAL 引用 Model , IProfileDAL 。被 ProfileDALFactory 加载的程序集,实现接口里的方法。
三、实现步骤
1 、创建 Model ,实现业务实体。
2 、创建 IProfileDAL ,实现接口。
3 、创建 SQLProfileDAL ,实现接口里的方法。
4 、增加 web.config 里的配置信息,为 SQLProfileDAL 的程序集。
5 、创建 ProfileDALFactory ,返回程序集的指定类的实例。
6 、创建 Profile ,实现 Profile Provider 。
7 、在 web.config 文件中增加配置节 profile ,增加属性及类型, provider 为 Profile 。例:
<system.web>
<profileautomaticSaveEnabled="false" defaultProvider=" 默认的 Profile Provider">
<providers>
<addname=" 自己命名的 Provider 名称 " connectionStringName=" 配置文件里的数据库链接名称 " type=" 自己的 Provider 实现类,需要自己重写 " applicationName=" 自己定义的应用程序名称 "/>
</providers>
<properties>
<addname=" 自己命名的 Profile 名称 " type=" 自己的类,需要构建 " allowAnonymous="false" provider=" 上面的自己命名的 Provider 名称 "/>
</properties>
</profile>
</system.web>
1 、 Profile 引用 ProfileDALFactory , IProfileDAL , Model 。通过 ProfileDALFactory 的方法创建程序集实例。
2 、 ProfileDALFactory 引用 IProfileDAL 。实现程序集实例的方法。
3 、 IProfileDAL 引用 Model 。实现接口。
4 、 SQLProfileDAL 引用 Model , IProfileDAL 。被 ProfileDALFactory 加载的程序集,实现接口里的方法。
三、实现步骤
1 、创建 Model ,实现业务实体。
2 、创建 IProfileDAL ,实现接口。
3 、创建 SQLProfileDAL ,实现接口里的方法。
4 、增加 web.config 里的配置信息,为 SQLProfileDAL 的程序集。
5 、创建 ProfileDALFactory ,返回程序集的指定类的实例。
6 、创建 Profile ,实现 Profile Provider 。
7 、在 web.config 文件中增加配置节 profile ,增加属性及类型, provider 为 Profile 。例:
<system.web>
<profileautomaticSaveEnabled="false" defaultProvider=" 默认的 Profile Provider">
<providers>
<addname=" 自己命名的 Provider 名称 " connectionStringName=" 配置文件里的数据库链接名称 " type=" 自己的 Provider 实现类,需要自己重写 " applicationName=" 自己定义的应用程序名称 "/>
</providers>
<properties>
<addname=" 自己命名的 Profile 名称 " type=" 自己的类,需要构建 " allowAnonymous="false" provider=" 上面的自己命名的 Provider 名称 "/>
</properties>
</profile>
</system.web>
注意事项:
1 、 Profile 的 type 可以为自己的类,包括业务实例或方法等。
2 、通过重写 ProfileProvider 里的部份方法,实现在自己的数据库里记录自己想要的个性化用户信息。
3 、如果每个用户有大量的数据信息,则该类数据信息不要通过 Profile 来记录。
4 、被定义为 Profile 的 type 的类,必须在类定义前增加 [Serializable] 以实现可序列化。
5 、接口定义的类型必须为类。
6 、 Profile Provider 类里必须增加 System.Web.Profile 和 System.Configuration 的引用到项目中。
7 、如果需要支持匿名用户,增加 <anonymousIdentification enabled="true" /> 到 web.config 里,在 profile 之间。
8 、使用 Profile.Save 方法后,将调用 ProfileDALFactory 里的方法将数据保存到数据库。
1 、 Profile 的 type 可以为自己的类,包括业务实例或方法等。
2 、通过重写 ProfileProvider 里的部份方法,实现在自己的数据库里记录自己想要的个性化用户信息。
3 、如果每个用户有大量的数据信息,则该类数据信息不要通过 Profile 来记录。
4 、被定义为 Profile 的 type 的类,必须在类定义前增加 [Serializable] 以实现可序列化。
5 、接口定义的类型必须为类。
6 、 Profile Provider 类里必须增加 System.Web.Profile 和 System.Configuration 的引用到项目中。
7 、如果需要支持匿名用户,增加 <anonymousIdentification enabled="true" /> 到 web.config 里,在 profile 之间。
8 、使用 Profile.Save 方法后,将调用 ProfileDALFactory 里的方法将数据保存到数据库。
参考:本系列试图对PetShop作一个全方位的解剖,依据的代码是PetShop4.0,可以从链接http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/bdasamppet4.asp中获得。