风讯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的数据访问也是采用了基于抽象工厂模式的三层架构。通过使用基于抽象工厂模式的三层架构,很好的实现了系统的重用性、灵活性和扩展性。
转载于:https://www.cnblogs.com/zhouhb/archive/2011/01/25/1944913.html
风讯dotNETCMS源码分析—数据存取篇相关推荐
- hadoop作业初始化过程详解(源码分析第三篇)
(一)概述 我们在上一篇blog已经详细的分析了一个作业从用户输入提交命令到到达JobTracker之前的各个过程.在作业到达JobTracker之后初始化之前,JobTracker会通过submit ...
- Kubernetes Node Controller源码分析之配置篇
2019独角兽企业重金招聘Python工程师标准>>> Author: xidianwangtao@gmail.com Kubernetes Node Controller源码分析之 ...
- 【VUE】源码分析 - 数据劫持的基本原理
tips:本系列博客的代码部分(示例等除外),均出自vue源码内容,版本为2.6.14.但是为了增加易读性,会对不相关内容做选择性省略.如果大家想了解完整的源码,建议自行从官方下载.https://g ...
- 风讯dotNETCMS源码
风讯DOTNETCMS源码 下载地址: http://down.qiannao.com/space/file/huwlnew/share/2011/5/24/-98ce-8bafDotNetCMS04 ...
- JUC源码分析-线程池篇(五):ForkJoinPool - 2
通过上一篇(JUC源码分析-线程池篇(四):ForkJoinPool - 1)的讲解,相信同学们对 ForkJoinPool 已经有了一个大概的认识,本篇我们将通过分析源码的方式来深入了解 ForkJ ...
- photoshop-v.1.0.1源码分析第三篇–FilterInterface.p
photoshop-v.1.0.1源码分析第三篇–FilterInterface.p 总体预览 一.源码预览 二.语法解释 三.结构预览 四:语句分析 五:思维导图 六:疑留问题 一.源码预览 {Ph ...
- v74.01 鸿蒙内核源码分析(编码方式篇) | 机器指令是如何编码的 | 百篇博客分析OpenHarmony源码
Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https ...
- hadoop之MapReduce框架TaskTracker端心跳机制分析(源码分析第六篇)
1.概述 MapReduce框架中的master/slave心跳机制是整个集群运作的基础,是沟通TaskTracker和JobTracker的桥梁.TaskTracker周期性地调用心跳RPC函数,汇 ...
- 鸿蒙内核分析,鸿蒙内核源码分析(中断概念篇) | 外人眼中权势滔天的当红海公公...
关于中断部分系列篇将用三篇详细说明整个过程. ● 中断概念篇 中断概念很多,比如中断控制器,中断源,中断向量,中断共享,中断处理程序等等.本篇做一次整理.先了解透概念才好理解中断过程.本篇的主角是海公 ...
最新文章
- 罹患各种癌晚期,无法救治
- 怎么把mysql转换mssql_MySQL如何转SQL server
- pandas中drop用法_python进行数据清理之pandas中的drop用法
- Win8下在Vmware11中安装使用苹果系统OS X 10.10
- 在WORD中删除中文或英文
- C# 温故而知新:Stream篇(三)
- Flink Weekly | 每周社区动态更新-12/24
- 格力手机色界G0245D-Root-最简指南
- 疯狂代码 写给WEB2.0的站长
- Mobilenet-ssd 目标检测
- 【电子学会】2021年12月图形化四级 -- 棕熊大战
- 阿里香港轻量服务器加上BBR会发生什么?
- 敬业签桌面便签软件:该openid已被使用,无法绑定!(适用QQ微信互联登录解绑)
- Java程序在结构上的特点_下面关于JavaApplication程序结构特点描述中,错误的是()...
- HTTP 和 DNS 原理概念了解 ;
- 小技巧 - 如何将“比例比例”站上的视频下载到本地?
- C语言实验——用*号输出字母C的图案
- Vs —— 转移Qt项目后环境问题
- idea中Project JDK is not defind的其中之一解决办法
- P18~19~20~21-NPC、道具、背包、装备系统