DNN系列介绍

研究手札系列1-背景、现状

首先,请不要忙着看这篇文章,尝试去官方网站下载一个最新版本的来安装看看,仔细看看安装说明文档、各种技术的白皮书,DNN做得很全很仔细,连版本代码差异都精细到每行代码。

DNN到底是啥来头?DNN可以追溯到ASP.NET Starter Kits的ASP.NET Portal,这个东西仍然可以在asp.net网站中找到。相关的文章我之前也写过,请自行搜索。ASP.NET Portal之后,出现了IBuySpy,也就是大家熟悉的IBS,这个比ASP.NET Portal进化了不少,使用了大量的.NET技术,也就是DNN的雏形。2002年,IBS給市场印证了其局限性不能满足用户需求,DNN1.x推出了,它在IBS的基础上主要改善了模块功能,接下来的DNN2.0.x更是把整个内核重写,带来了革命性的Skin。

DNN在外国到底有么受欢迎?

1、DotNetNuke:http://www.dotnetnuke.com/ 官方站点每天的注册/访问量,大家可以看看其首页右边的在线统计;

2、DNN论坛 http://www.asp.net/Forums/ShowForum.aspx?tabindex=1&ForumID=90是比较热的,相对ASP.NET网站上的其它论坛来说;

3、DNN在众多免费/收费Portal中应用甚广;

4、DNN2.0.x发布的时候,在微软VS-Live! Conference中演示过,呵呵;

在研究的2个多月中,我感觉,与其等待别人来喂自己,到不如自己去觅食,或许这样比喻不贴切,意思就是说,动手去研究,比等待别人来教自己来得实际。

 

DNN倡导的是一种准备就绪、动态的、100%互动的数据驱动网络门户框架。

DNN最大的特点是系统框架、DSL(数据存储层)、DAL(数据访问层)、BLL(业务逻辑层)、PL(呈现层)完全分离。系统开发人员、业务开发人员、美工和DBA(数据库管理员)都是“互不相干”的。

为了和.NET 2005尽量兼容,DNN应用了大量的所谓Provider(提供者)/Factory(工厂)模式来实现了其广泛的扩展性,可能你会觉得要仅仅实现一个数据的更新,要在3个类中实现,但当你要在MS SQL、ACCESS、MySQL、Oracle或XML之间自由切换,那么,你将会发现DNN这种模式是会令你愉快的。

DNN的另外一个特性是其Skin(外观),它实现了从Portal(门户)、Tab(栏目)到Module(模块)各个层次的动态外观,每个Skin分Skin和Container(容器),Container可以理解成DNN的模块区域,每个模块都包括在一个Container中。DNN的Skin和动态Module是密不可分的。DNN的Tab和Module定义已经到达了WYSIWYG这个层次了,不过我认为它不能做到集中处理。

DNN的每个Module都可以理解成一个积木,你可以随时把这个积木放到任何栏目的任何位置,你甚至可以隐藏它。不过DNN对每个Module的数据处理都没有做到集中,Module删除了,并不对自动删除对应的数据,时间一长就产生大量冗余数据。而且没有集中处理,非常不直观。

如果你仅仅认为DNN的Skin仅仅是改变一下CSS和换一下图片,如果认为.Text可以和DNN比较,那么,你都错了。随着深入DNN的内核,绝对让你改观。

 

DNN在10月份推出2.2x,改进包括:

1、门户搜索;

2、友好URL,路径不再显示/default.aspx?tabid=xx,而可能是/portal/0/tab/11/page/;

3、多语言;

 

DNN在11月份推出3.0x,改进包括:

1、工程的分离:缺省多达57个工程,把所有HTTP Handlers、桌面模块都独立出来了,这个非常有弹性和可扩展性!目录结构的清晰性,根据业务逻辑的工程分离带来了目录结构的清晰性,内核不再和桌面模块混合在一起!

2、数据库表和存储过程添加“DNN_”前缀,这个我之前提了建议,看来DNN团队还是善于吸纳建议的;

3、配置设定的多层次分类,可用功能的和不可用功能的对应显示非常清晰明了;

4、站点模版,向导式导入导出整个网站,用户体验非常良好;

5、整个站点改用比较时尚的深蓝色,相当养眼;

6、内置站点搜索(和管理)、多语言支持(和管理),模块可拖拽,提供了强大的文件管理;

 

研究手札系列2-框架(概述)

从这章开始介绍DNN的框架,DNN的框架可以从以下角度分:

1、目录,中国Rainbow已经对各目录和各文件的用途写了比较详细了,我不再重复,我只从主要框架上说:

  a.管理(Admin):

   a1.容器(Container)

   a2.文件(File)

   a3.模块定义(ModuleDefinitions)

   a4.私用程序集上传(PAUpload)

   a5.门户(Portal)

   a6.外观/皮肤(Skin)

   a7.栏目/标签(Tabs)

   a8.用户(Users)

  b.功能组件(Components)

   b1.容错(Exceptions)

   b2.日志(Logging)

   b3.日程(Scheduling)

  c.UI控件:

   c1.HTML编辑器(FTB)

   c2.菜单(SolpartMenu)

  d.桌面模块(DesktopModules)

 

 从中可以看出,DNN的目录框架相当紧凑,你在根目录只能看见几个文件,而管理目录是整个门户的核心,功能组件是骨架,UI控件是核心应用,桌面模块是具体业务应用。

2、按核心功能,DNN可以分成以下几块:

  a、外观/皮肤(Skin),包括Skins、Tabs、Modules、ModuleDefinitions、Containers等;

  b、管理,包括Portal、Users、Log、Logging、Schedule、PAUpload、Security、Files等;

  由此看出,Skin的地位在DNN中是最核心的。

DNN的应用了颇多的.NET技术,如大量继承、重载、代理等,实现了如抽象的数据访问(DataProvider)、数据缓存(DataCache)、多线程日程(Scheduling)、错误处理(Exceptions)、空类型(Null)等功能,我稍后将逐一为大家深入介绍各种技术的特点、实现和应用。

 

研究手札系列3-DNN的未来(蓝图)

DNN官方称蓝图有3个阶段(Stage):

第一种是Build(编译),也就是当前正在研发的阶段,基本上功能都完成了,可能在进行一些不同的完善而已。

第二种是Design(设计),在这个阶段,所有想法都被彻底讨论、定案,每个任务都有负责人进行,耗时比较长。

第三种是Concept(想法),实际上是在社区论坛中,各位会员提出的功能增强要求,一般估计是猴年马月才进入设计阶段的,还或许以后都不会实现。

目前处于Build阶段的,主要有:

1、Friendly URLs(友好链接),这个在之前的章节介绍过了,大家自行参看;

2、Localization ( Static ) (本地化-静态),实际上只把传统的HTML的文本转成ASP:Label而已;

3、Portal Search(门户搜索),同1

目前处于Design阶段的,主要有:

1、Data Model(数据模型),改进DNN前身IBS的数据库设计的约束;

2、Document Security(文档安全),基于角色的上传文件管理。应用IIS的文件安全.resources扩展保护机制,因此不需要额外的数据库或者本应用目录以外的目录以减低其限制;

3、Portal Module Definitions(门户模块定义),到目前为止,门户和模块之间的关联是通过PortalModuleDefinitions表来实现,而具体操作是必须使用用Host Fee来在不同的子门户间共享。现在要进行改造,让Host Fee作为可选;

4、SSL(安全套接字层),是的,门户实现SSL相当有必要;

5、Weblog Module(博客),看来博客实在是大热,连官方都要做自己的博客模块。看看啥时候自己也做了Wiki(维客):)

6、Windows Authentication(Windows身份认证),整合Windows的安全机制,包括域等;

 

目前处于Concept阶段的,主要有:

1、Authentication(增强型身份认证),看来网络太不安全,啥安全法子都想出来要实现安全的门户;

2、Browser/Device Support(对浏览器/设备的支持),(待续)

3、Core Modularization(核心模块化),(待续)

4、Localization ( Content )(本地化-内容),(待续)

5、Navigation Abstraction(浏览抽象化),(待续)

6、Portal Groups(门户组),(待续)

7、SDK Version(增进对其它非VS.NET环境的支持)?(待续)

8、Web Farm Support(增进对Web Farm的支持)?(待续)

9、WebPart Integration(Web部件整合),(待续)

 

研究手札系列4-DNN的具体安装

我在这里以3.0.7为蓝本稍做详细点的说明,2.x雷同:

1、下载:首先下载最新版本的DotNetNuke3.0.7- http://prdownloads.sourceforge.net/dnn/DotNetNuke_3.0.7.zip?download

2、创建数据库:在MS SQL Server中创建一新数据库,如DotNetNuke307;

3、配置你的DNN:打开web.config文件,

  1)搜索“SiteSqlServer”,Database为DotNetNuke307(就是上面新建的数据库),uid为MS SQL Server是登录用户,pwd为登录密码;

2)搜索“debug”,把debug的值改为true,则为“”,这样是允许运行时调试;

3)搜索“globalization”,可根据实际情况,把requestEncoding/responseEncoding/fileEncoding改为你想要的编码,如“GB2312”(简体中文);

4、安全访问性:

  1)NTFS:把你的DotNetNuke目录的安全属性中添加上NETWORK SERVICE用户,并将该用户的权限设为允许读取、写入、修改。

  2)非NTFS:如果你的DotNetNuke所在硬盘分区的文件系统不是NTFS,则不需要做任何操作;

5、虚拟目录:在IIS中添加DotNetNuke的虚拟目录,如DotNetNuke(其它也可,如DotNetNuke307),物理路径指向DotNetNuke所在目录,这样就能做到所有版本的DNN都不冲突,包括数据库与虚拟目录;

6、运行:在浏览器中打开http://localhost/dotnetnuke,稍等一会,DotNetNuke会自动初始化数据库等信息,便可体验DotNetNuke最新版本。

7、个性化:

  1)汉化:在DotNetNuke中国官方网站DNNChina上有下载DNN3.0.4汉化版。

  2)密码:admin的密码比较容易改,不少网友反馈host的密码不知道怎样改,在3.0.x中,用户可以点击portal-》superuser accounts,编辑host用户,修改密码。

 

附录:

一些比较好的英文资源:

1、DotNetNuke:http://www.dotnetnuke.com/

2、DNN入门经典,这里已经说得很好,虽然是英文的:http://www.devx.com/codemag/Article/21572/1954?pf=true

3、DNN文档:http://www.dotnetdoc.com/Default.aspx?tabid=29

4、论坛:http://www.asp.net/Forums/ShowForum.aspx?tabindex=1&ForumID=90

5、DNNGuide:http://www.dnnguide.com/

6、DNN Related:http://netdatadesign.com/Default.aspx?tabid=42

7、dnnJungle:http://dnnjungle.vmasanas.net/

8、DNN Resource Portal:http://dnn.johndcooper.com/

9、KodHedZ Development and Support Network:http://www.kodhedz.com/

10、MagicModules:http://www.magicmodules.com/Default.aspx?tabid=1

11、dnn.com.au:http://www.dnn.com.au/Default.aspx?tabid=1

12、C#版DNN:http://www.csharpnuke.com/

13、DNN帮助:http://www.dotnetnukehelp.com/

14、DNN Nuked http://www.dotnetnuked.com/DesktopDefault.aspx

15、http://www.schmidtsoftware.com/DotNetNuke/

 

一些相关DNN中文资源

1、中国DNN:http://www.dnnchina.net/(致力于DNN本地化和DNN二次开发,在这里,你可以找到研究国内研究DNN的一些BLOG链接,也可以找到一些官方文档的汉化资料)

2、DNN中文技术支持:http://forum.pspsoft.com/ShowForum.aspx?ForumID=24

posted @ 2005-11-02 15:49  torome  阅读(684)  评论(0编辑  收藏  举报