目录
目录X

动易SiteFactory新特性体验之旅——N层架构设计

  动易CMS 2007的新特性中有这样一个非常重要的特性:

以下是引用片段:
N层架构设计
动易CMS 2007多方面研究和参考微软在企业架构的设计方案,采用以表现层、业务逻辑层、数据访问层为主的N层架构设计。这样的设计使得动易CMS 2007结构清晰、易于维护,极大地提高了软件的可扩展性和重用性。
动易CMS 2007以其基于.Net的N层架构设计,为系统的可伸缩性提供了坚实的保障,可以适应各种网站规模。网站在不断发展变化,从一个个人网站发展成大型门户网站,采用分层设计的系统自始至终都可以满足网站不断发展的功能需求和性能需求。在网站早期,使用分层设计的系统可能会显得有些浪费,在性能上带来一些损失,但随着网站的不断发展,分层设计的系统可以不做任何修改或者只需少量修改即可满足大型网站的要求。而没有分层设计的系统,初期可能速度会较快,但网站一旦发展壮大,就不得不重新设计系统架构或者更换程序。
无论你的网站是刚刚建立,还是已经成长为超级大站,动易CMS2007以其强大的可伸缩性始终可以伴随您的左右!

  这个特性是非常技术性的。可能很多人并不关心这个特性,但我认为还是有必要让大家多了解一下动易CMS 2007的一些技术内幕。呵呵,我的另一个目的当然就是想给大家展现一下动易的技术实力。

  什么是N层架构设计呢?N层架构设计有哪些优点和缺点?大家可以参看我的博客文章:

  动易CMS 2007快报--系统架构:/Blog/kuaibao/2764.html
  动易CMS 2007快报--系统架构2:/Blog/kuaibao/2765.html

  N层架构设计有真假之分。现在市面上许多软件都宣称自己是N层架构设计的,但我们只要认真研究一下对方的设计,就会发现有些厂商是在夸大宣传,是为了提升自己的产品形象而进行虚假宣传。

  首先,有许多厂商根本没有分清楚倒底什么是N层架构设计。有些厂商甚至把B/S(浏览器/服务器)和C/S(客户端/服务器)模式也当成了N层架构来宣传。而实际上,N层架构设计通常只是指服务器端的程序架构。

  其次,标准的N层架构设计是指系统分成表现层、业务逻辑层、数据访问层等。各层都有明确的负责范围,表现层并不处理业务逻辑和数据访问,业务逻辑层界面展现和数据访问,数据访问层不负责界面展现和业务逻辑处理。但现在许多宣称N层架构设计的系统,都是各层混杂在一起,比如直接在表现层的ASPX页面中处理业务逻辑、执行数据库查询等。而ASP、PHP等脚本语言编写的系统,因为受限于其本身的特点,很难进行分层设计,基本上都是在ASP/PHP文件中直接处理所有业务逻辑和数据访问。用ASP/PHP开发的产品,如果宣传自己的N层架构,90%可以说是虚假宣传。

  下面我们就来看看动易是如何分层设计的。

 

图片点击可在新窗口打开查看

  这是动易CMS2007的N层架构设计示意图。这个图我在前面的博客文章中已经讲述了。我们现分别来看看每一层有哪些文件。

  先看表现层的ASPX文件:

  随便打开一个文件夹。因为后台管理文件夹中的文件最多,我们就以这个为例吧。看,这里有许多ASPX文件。

图片点击可在新窗口打开查看

  我们可以打开其中的一个文件来看看代码吧。这里就打开Admin\Contents\CommentManage.aspx吧。大致的代码如下图:

图片点击可在新窗口打开查看

  我们可以看到第一行是这样的:

我们可以从“MasterPageFile="~/Admin/MasterPage.master"”可以看出动易CMS2007采用了ASP.NET2.0的新特性——母版页。关于母版页的说明,大家可以参看这篇文章:

  在ASPX页面中,我们只看到了HTML代码和一些ASP.NET的控件,看不到任何程序代码,这是因为动易CMS2007在表现层使用了ASP.NET的“代码后置”特性,ASPX页面中只放置了各种界面元素控件,相关的界面逻辑控制代码放在另一个对应的代码文件中(与CommentManage.aspx对应的就是CommentManage.aspx.cs)。发行时,这些表现层的代码文件会统一编译成一个PowerEasy.WebSite.dll(位于bin目录中)。另外,一些公用的控件,是做为独立的项目的,编译后就形成了PowerEasy.Controls.dll、PowerEasy.ModelControls.dll。

  再来看看业务层和数据层的文件:

  在分层架构中,业务层和数据层的文件因为不需要界面代码,所以都会编译成相应的DLL文件(位于bin目录中)。动易CMS2007也是这样。

图片点击可在新窗口打开查看

  在这张图中,我们可以看到,动易CMS2007这样的大系统,是将业务层的DLL按模块进行了划分,每个较大的模块为一个项目,编译后就形成了独立的DLL文件。如:PowerEasy.Contents.dll、PowerEasy.Shop.dll、PowerEasy.Crm.dll等。另外,还有一些共用的业务逻辑,也独立成相应的项目。如:PowerEasy.Common.dll、PowerEasy.CacheFactory.dll、PowerEasy.Enumerations.dll。

  而PowerEasy.DalFactory.dll、PowerEasy.SqlServerDal.dll、PowerEasy.IDal.dll则是数据层文件。从这里我们可以看出,动易CMS2007的数据访问层使用抽象工厂模式,将各个不同数据库的实现方式分离,从而理论上可以支持任意的数据库。目前动易CMS2007只提供了SQL Server的实现,这就是PowerEasy.SqlServerDal.dll。等到系统功能稳定后,会考虑增加ACCESS、Oracle、DB2、MySQL等数据库实现。

  另外有一个在各层之间传递数据的实体层,对应的的文件是PowerEasy.Model.dll。这个保存的系统中所有要用到的实体对象,如:管理员、角色、会员、会员组等等。

  其实,数据层还有一个文件,大家看不到。那就是放在SQL数据库中的存储过程代码。这个因为和具体的数据库密切相关,数据库不同,相应的存储过程的代码会有所区别。动易CMS2007的存储过程针对SQL2000和SQL2005分别进行了优化,两者不能通用,所以分别放在相应的数据库中了。

  总的来说,动易CMS2007的研发是一个非常庞大的工程,我们的开发团队花了一年多时间,终于让这个庞大工程初见雏形。目前框架已经搭好,日后就是往这框架上添砖加瓦了,速度将比以前的研发进程快很多。

【打印正文】 发布时间:2007-08-20 09:30:02 浏览次数: 作者:webboy 来源:本站原创
×

用户登录