DNN(DotNetNuke)研究手札系列2-背景、现状

首先,请不要忙着看这篇文章,尝试去官方网站下载一个最新版本的来安装看看,仔细看看安装说明文档、各种技术的白皮书,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、多语言;


在章3中,我会肢解DNN,按功能給大家介绍其框架。
posted @ 2004-09-01 20:17 灵感之源 阅读(5569) 评论(26)  编辑 收藏 网摘 所属分类: 3.开源项目

  回复  引用    
#1楼2004-09-01 20:32 | RaY
不过DNN对每个Module的数据处理都没有做到集中,Module删除了,并不对自动删除对应的数据,时间一长就产生大量冗余数据。而且没有集中处理,非常不直观。

---可以的
所有和modules表中moduleID相关的表,都有cascade delete related records属性。

  回复  引用    
#2楼2004-09-01 20:35 | unruledboy(灵感之源)
我再研究一下,以免我的不仔细误人子弟;)
  回复  引用    
#3楼2004-09-02 01:31 | 中国Rainbow
灵感 :
我买了.net空间 买了sql数据(给我的教育研究课题组服务的) 原本是想装rainbow的,但是好像是因为服务商(商务中国)暂停url隐含转发服务,导致我的rainbow只能显示首页,然后测试sql的dnn总是报错!郁闷!
我现在出错的网址: http://www.t910.net
如果有时间 帮我看看!先谢了!

  回复  引用    
#4楼2004-09-02 08:22 | 中国Rainbow
2、友好URL,路径不再显示/default.aspx?tabid=xx,而可能是/portal/0/tab/11/page/

-----
如果是这样他将会和Rainbow具有非常类似的功能,估计我那个空间也不能用 哎

顺便说说rainbow用的是增加portale,语言目录(前两项都)可选别名增加tab方法构建url的

  回复  引用    
#5楼2004-09-02 08:54 | 灵感之源
你的数据库还没有初始化,估计是没有正确安装好。
  回复  引用    
#6楼2004-09-02 10:52 | boy119
写的太好了,dnn的大体结构已经阐述的很清楚了。
有两个问题:
1、下一版的门户搜索是一个什么样的功能?
2、dnn的搜索功能是否类似于aspnetforum不是直接搜索目的表的,而是在search表中搜索记录?那么这样的话就不适合中文了。

  回复  引用    
#7楼2004-09-02 11:07 | boy119
下一版要等到10月份才出,然后各种第三方的插件也不知道什么时候才能更新,还要等阿
  回复  引用    
#8楼2004-09-02 11:23 | 灵感之源
关于门户搜索,你可以访问这里:http://www.dotnetnuke.com/Default.aspx?tabid=619

第三方组件不需要更新,因为改变不大,会兼容。

  回复  引用    
#9楼2004-09-02 11:28 | 小春
支持,
以前一个人研究DNN很累,许多地方都是半懂不懂的,希望看了你的系列文章后再对DNN进行研究能有更大收获:)

  回复  引用    
#10楼2004-09-02 11:35 | boy119
每一个End Function下面都有一条很长的水平线,不知道它是如何加入的,请指点一下,谢谢
  回复  引用    
#11楼2004-09-02 12:56 | 灵感之源
to:boy119
啥意思?不是End Function,是模块标题吧?

  回复  引用    
#12楼2004-09-02 14:27 | boy119
比如你打开default.aspx.vb第20行和21行之间有一条白色的水平线,也删不掉,回车也不动,好像固定在两行中间一样。这个东西好像是为了分割同一页面两块代码之间的。
  回复  引用    
#13楼2004-09-02 15:12 | 灵感之源
晕,这是vs.net自己弄的代码区域分割线吖!我想绝大部分语言IDE都会有这个的吧?如果不想要,可以在选项配置中去掉。
  回复  引用    
#14楼2004-09-02 15:32 | boy119
看到了,我说怎么以前写c#没有见过呢,原来是vb专用的。
  回复  引用    
#15楼2004-09-02 16:40 | 灵感之源
c#应该也有的哦,可以设置的。
  回复  引用    
#16楼2004-09-03 08:56 | 学习
灵感之源老弟(当然你的技术比我高不知多少倍):

看到你说“ASP.NET Starter Kits 的ASP.NET Portal是MS写的例子”,我想说一下,不知对不对?
ASP.NET Starter Kits应该是微软的一个金牌合作伙伴写的例子(微软的国内金牌合作伙伴也不少,希望能逐步达到人家的水平),即Vertigo Software, Inc.可以看《ASP.NET Starter Kits白页》这个文档,当然也可以看Vertigo Software, Inc.的网站http://www.vertigosoftware.com/
我是个技术盲,已经学了一段时间了,感觉效率太低了,要学的东西有太多,希望多多向你学习,多多分享你的经验。

  回复  引用    
#17楼2004-09-03 09:02 | boy119
灵感之源:
你的下一章什么时候写出来,我们都等着看呢

  回复  引用    
#18楼2004-09-03 11:06 | 灵感之源
mmm,这个我的确没有去深究。我们也是微软的.NET金牌解决方案提供商;)
  回复  引用    
#19楼2004-09-03 14:15 | Soaring Tiger
不过DNN对每个Module的数据处理都没有做到集中,Module删除了,并不对自动删除对应的数据,时间一长就产生大量冗余数据。而且没有集中处理,非常不直观。 

---可以的 
所有和modules表中moduleID相关的表,都有cascade delete related records属性。

-----------
如果是自己开发模块的话,自定义的表的ModuleID与Modules表中的ModuleID要设外键和级联删除。
但是实际上自己开发模块的时候并不一定要用ModuleID,可以根据需要使用PortalID或TabID。
以模块为基础的最大好处是部署灵活,但这种部署比较适合做CMS。如果用来做其它的东西,设计就可以改动了。
其实DNN框架很灵活,不必拘泥于某种固定模式,在其基础上可以做很多东西。
我也接触DNN有两个月了,有一些心得,希望与大家交流。
soaring99@163.com

  回复  引用    
#20楼2004-09-03 17:21 | 灵感之源
有msn吗?我的是unruledboy@hotmail.com
  回复  引用    
#21楼2004-09-04 23:38 | hBifTs
呵呵:)
看起来貌似不错的dd啊~

  回复  引用    
#22楼2004-09-06 00:18 | caca
郁闷。。一直不能在其官方网站注册。



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 38607




相关文章:

相关链接: