近日在做项目的过程中,分析了几个国内著名的.net系统(风讯、跟Discuz论坛),讲自己的一些研究的心得摘录如下,在方便大家的同时,也给自己的学习留下一些笔记吧,免的以后忘记掉了。

1、风讯的架构:
典型的工厂模式(Factory),这套模式好像近年来在业界很是出名,也引起很多的关注,由于反射的方式也带来一定的性能的损耗。
DALFactory:工厂层,通过反射去获取具体操作数据的代码,重点研究
DbHelper:数据库操作基类,这个大家应该接触的比较多
SqlServer:数据库操作具体代码,这个可以是其他的,比如Access
Bll:业务逻辑层
Model:信息描述层
下面请看部分的核心代码:
Web.Config核心:<add key="WebDAL" value="SQLServerDAL"/>
DALFactory:

private static readonly string path = ConfigurationManager.AppSettings["WebDAL"];
        public static IAdmin CreateAdmin()
        {
            string className = path + ".Admin";
            return (IAdmin)Assembly.Load(path).CreateInstance(className);
        }
        public static IAdmin CreateNews()
        {
            string className = path + ".news";
            return (IAdmin)Assembly.Load(path).CreateInstance(className);
        }
大家请注意上面的代码,后来我再看了Discuz的代码,发现风讯的这个代码这样去写,简直就是糟套了,操作一个方法要写好几个地方,严重的导致了开发速度下降,当然性能上也糟糕透了,在那个项目做好之后绝对不会在用这样的构架了。

2、Discuz!NT论坛的架构模式(推荐)
主要的几个层,关于Discuz!NT论坛代码的研究,在博客园上很多,也不乏是内部开发人员,他们写的文章很有看头,很多都已经涉及到详细的规划,对于想要更加了解Discuz论坛代码的开发人员,多看看那些文章绝对很有好处的。
Discuz.Entity:信息描述类
Discuz.Data:数据库操作基类,2000多行,兼容任何数据库(不知道可不可以这么说)
Discuz.Data.Access:Access数据库操作的代码
Discuz.Data.SqlServer:SqlServer数据库操作的代码
Discuz.Data.MySql:Mysql数据库操作的代码
在Data中的每个类,都需要在具体代码中予以实现,否则程序会报错的。