PetShop3.x学习笔记7-DALFactory学习笔记

一、 DALFactory主要功能:

1、              相应 DAL 层的类加载将根据 Web.Config 中的应用程序配置(<appSetting>中的WebDALOrderDAL)在运行时动态生成

2、              这是一组“加载正确实现”的工厂类,可以确定运行时应该加载哪一个DAL实现

3、              具体过程:

(1)        从配置文件中读入一个值,以确定应该使用“反射”加载的是哪一个程序集

(2)        通过 .NET 的反射命名空间,(可以)加载某个特定(适当的)程序集(SQLServerDALOracleDAL),并使用该程序集创建某个对象(如Account类的对象)的实例

 

二、 实现细节:

1、              这一部分的内容,在资料文档《资料1-数据库可移植性-from PetShop 3.x Architec Doc》,以及代码实例中做出的解释较多

2、              访问流程问题:可以用来修订SQLServer学习笔记中的访问流程

(1)        通过PetShop.DALFactory.Product.Create()选择加载了一个正确的DAL组件(比如SQLServerDAL

(2)        创建了一个正确的DAL层组件的Product类的实例

(3)        返回了一个该Product类在IDAL层的接口IProduct

3、              Account.cs文件:

4、              读取WebDAL的值,即读取“在对Web进行数据库操作的时候,使用的是哪个数据访问组件”;同样,在Order.cs文件中,读取OrderDAL的值,即读取“在Order进行数据库操作的时候,使用的是哪个数据访问组件”

5、              Assembly.Load()是否是可以代替在VS中一个项目中若想使用另一个项目中定义的类,必须添加另一个项目的应用(右键——添加引用)?

 

三、 启发:

1、              学习方法问题:现在看的东西比较多,听过的东西也多一些了,明显感觉到,在看一些招聘要求或技术资料的时候,可以找到路子了。但是,由于没有将这些零散的知识串起来,做几个实例,还是不能将知识进行深层次的掌握和理解。所以,学完之后做Demo是非常重要的!

2、              学架构的路子是非常正确的,其实就是应该先解决架构问题,才能理解某些部分的代码为什么要那样实现

3、              在看完了ModelIDALUtilitySQLServer_DB ArchitecSQLServer后,整个系统底层的内容基本已经学完了,这里有必要重新读一遍《Microsoft .NET PetShop 3.x的设计模式与体系结构》文档,看有哪些内容是我在学习过程中忽略掉的

4、              企业级高容量电子商务解决方案的标准:

(1)        高性能

(2)        可扩展能力,包括增加处理器和使用群集

(3)        支持采用分布式事务,因为有可能需要访问多个数据库

(4)        支持多个数据库供应商

(5)        容易维护

5、              不要总是抱怨自己没有实际经验!经验是可以从每个Demo项目中获得的!!!

 

四、 问题:

1、              哪里变化封装哪里——封装是否就意味着“进行抽象的过程”?提取出“可能变化部分的公共部分”,针对“公共部分”进行操作,然后采用某种机制(如Reflection)确定应该正确采用的那部分功能

2、              什么不直接返回已经选出来的,适当的DAL组件(如SQLServerDAL)的适当的对象(如Product),而返回了一个该对象在IDAL层的引用?

3、              IDAL层的引进究竟目的何在?是否单纯为了规范下层DAL组件所必须实现的数据访问方法?还是说只要使用工厂模式就必须定义接口,并且即使使用反射确定了应该正确加载的DAL组件的对象,也必须返回对象接口引用?

4、              自己的答案:如果不返回接口,那么上层BLL在得到返回的DAL组件对象之后,就有可能知道在下层究竟使用的是SQLServerDAL还是OracleDAL,这就有可能在BLL层有针对性地进行编程——而这正是使用多层模式想要避免的!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值