zoukankan      html  css  js  c++  java
  • 风讯dotNETCMS源码分析—数据存取篇

            前几天突然对CMS感兴趣,就去下载了风讯dotNETCMS源码。当前版本是dotnetcms1.0 sp5免费版,风讯的官方主页上可以下载。

            用Visual Studio 2008打开后,初步分析了它的数据存取技术。风讯dotNETCMS采取的是基于抽象工厂模式的三层架构。
            Foosun.Model是数据实体层,用于在各层之间传递数据,Foosun.Web是表示层,Foosun.CMS是业务逻辑层,数据访问层有多个:Foosun.AccessDAL、Foosun.SQLServerDAL,分别用于支持Access、SQL Server数据库。
            具体支持哪种数据库,只需在表示层的Web.config文件中进行配置,配置字符串如下:
            <appSettings>
                <add key="WebDAL" value="Foosun.SQLServerDAL"/>
            </appSettings>
           Foosun.DALFactory是接口层,定义了Foosun.AccessDAL、Foosun.SQLServerDAL都要实现的接口,如public interface IAdmin,示意图

    如下:

           Foosun.DALFactory接口层同时还包含实现抽象工厂模式的类DataAccess。在DataAccess类中创建对象通过配置文件和反射技术来实现。通过配置文件(即上面提到的Web.config)的程序集名,决定加载具体的哪个DAL的程序集,并通过动态组合类名来动态创建DAL对象,并返回接口对象。

    DataAccess类图如下:

           示例代码如下:
            public static IAdmin CreateAdmin()
            {
                        string className = path + ".Admin";  //类名
                        return (IAdmin)Assembly.Load(path).CreateInstance(className);//反射,并进行类型转换。
            }
          而path的定义如下:
           private static readonly string path =Foosun.Config.UIConfig.WebDAL;
          Foosun.Config.UIConfig.WebDAL的定义如下:
           public static string WebDAL = ConfigurationManager.AppSettings["WebDAL"];的确是读取了Web.config文件中的WebDAL配置。
          事实上,微软的PetShop的数据访问也是采用了基于抽象工厂模式的三层架构。通过使用基于抽象工厂模式的三层架构,很好的实现了系统的重用性、灵活性和扩展性。

  • 相关阅读:
    二叉查找树
    二叉树
    广度优先搜索
    深度优先搜索
    algorithm:next_permutation
    Grafana Labs 携手阿里云,将提供国内首款 Grafana 托管服务
    台积电TSMC一些技术特点
    TSMC台积电各种制程工艺技术
    激光雷达激烈竞争市场
    边端云处理器系列技术参数
  • 原文地址:https://www.cnblogs.com/zhouhb/p/1944913.html
Copyright © 2011-2022 走看看