教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> .NET类 >> ASP.NET >> PetShop是如何兼容数据库的 RSS订阅
PetShop是如何兼容数据库的
教程(视频,书籍)下载:  ASP.NET AutoCAD 数据库 C# ASP java photoshop 网页设计 delphi 3dmax Flash C++ VB 张孝祥 实例   更多请进入BIBIDU搜索
IT搜索引擎   
数据库的移植通常会带来高额的代价。这一点我深有体会。代价的大小就要看程序的架构写的怎么样了. 去年把一个项目从MySQL移至到Oracle, 整个程序里里外外都做了修修补补,大概花了两个月。

如果做到少修改,甚至不修改代码的前提下,对数据库的兼容无疑是一件非常好的事情,

PetShop很好的做到了这一点

要兼容多种数据库,首先要实现多态。SQLServerDAL和OracleDAL都实现了IDAL里所有接口的方法,实现了多态性。

FactoryDAL用来创建DAL对象,

public static PetShop.IDAL.IAccount Create()

{

/// Look up the DAL implementation we should be using

string path = System.Configuration.ConfigurationSettings.AppSettings["WebDAL"];

string className = path + ".Account";

// Using the evidence given in the config file load the appropriate assembly and class

return (PetShop.IDAL.IAccount) Assembly.Load(path).CreateInstance(className);

}

如上:创建Account, 首先获取Web.config 中的WebDAL的值。

<add key="WebDAL" value="PetShop.SQLServerDAL" />

Web.Config里”WebDAL”的值是PetShop.SQLServerDAL,该值决定了所要创建的DAL的路径。

然后再用Assembly.CreateInstance()创建DAL实例.



若要使用Oracle数据库, 只要把

<add key="WebDAL" value="PetShop.SQLServerDAL" />和

<add key="OrdersDAL" value="PetShop.SQLServerDAL" />

中的PetShop.SqlServerDAL改为PetShop.OracleDAL就可以了。



而在BLL中,它不需要知道你使用那个数据库。只是通过如下语句得到对象。

// Get an instance of the account DAL using the DALFactory

IAccount dal = PetShop.DALFactory.Account.Create();

无论使用什么数据库,BLL模块都不需要修改。





扩展性: 若要兼容MySQL数据库改怎么办?

写一个MySQLDAL模块,实现IDAL里所有接口的方法。 再修改Web.config中的值即可。



PetShop提供了良好的可扩展性, 封闭了业务层的修改。很好的满足了OCP(开放-封闭原则).





来源:upschool.com.cn
作者:
关键字:PetShop,如何兼容数据库
发表日期:2005-12-23

网页显示有限 阅读全文请下载本文完整版WORD文档

上一篇:数据库层抽象工厂解决方案归档[不断升级版]   下一篇:HTML中的数据绑定(Data Binding)


2009-1-9 20:51:19
本文的相类似文章
  • 学习PetShop3.0(4)petshop商品的浏览
  • 学习PetShop3.0(3)查询及simplePager控件
  • 学习PetShop3.0(2)用户注册(CreateAccount.aspx)
  • 学习PetShop3.0(1)用户登陆(SignIn.aspx)
  • c#初学之petshop!
  • PetShop是如何兼容数据库的
  • 漫谈.Net PetShop和Duwamish ADO.NET数据库编程(1)
  • 对比.NET PetShop和Duwamish来探讨Ado.NET的数据库编程模式
  • PetShop渐近记(1)
  • .Net Petshop详解(二):petshop三层结构之DataTier
  • 在学习中进步 在进步中成长 教程中国相随您的成长之路
    华腾联合科技股份有限公司版权所有
    广告联系:Rosibo@163.com