DotNetNuke(DNN)从入门到进阶(1)-怎样写自己的模块

好久没有写DNN的技术文章了,这是DotNetNuke(DNN)从入门到进阶之怎样写自己的模块(Modules)。关于DNN的相关说明,可以参看我的DNN系列随笔。

从一个熟练的DNN开发者来说,写一个DNN模块没有任何难度,对一个新手来说,只需要依样画葫芦便可。在DNN2.x中,有不少内置的模块,大家只需要参考着做就可以了,需要注意的地方只有几个:

1、DNN是基于模块的,这意味着你开发的模块都必须使用Web Control(.ascx)并继承PortalModuleControl(DNN3.0更名为PortalModuleBase),这样你便可以直接得最常用的PortalID、ModuleID和PortalSettings等公用属性;

2、DNN是基于N-Tier的,分UI、BLL、DAL、DSL等四层,UI就是具体的Web Controls(*.ascx),BLL就是业务逻辑,DAL就是基于Provider模式的数据存取,DSL就是数据存储,根据实际情况可能是ACCESS、MS SQL、Oracle、MySQL等;

3、与其它多层引用不一样,DNN采用子引用父亲,也就是具体的功能模块引用DNN,而不是DNN引用具体的功能模块,这样的好处是:不管多少模块,内核仍然保持干净;坏处是:如果打包,会莫名其妙地很膨大,因为内心的所有程序集文件都编译到具体模块的bin目录下面了。

4、DNN推荐模块目录结构是:
      Module Root
  |--Components
      |--Controls
      |--功能A(包括UI和BLL,BLL中包括业务逻辑属性和数据存储实例类)
      |--功能B
      |--功能X
      |--Providers\DataProvider\SqlDataProvider

    其中Providers\DataProvider存放数据存取基类,Providers\DataProvider\SqlDataProvider存放MS SQL的数据存取继承类,而这个类是独立工程。

5、特别需要注意的是ModuleID,这是每个实例化模块的唯一标示,而通过ModuleID则可以获取TabID(我喜欢称之为栏目ID,而不是标签ID,感觉标签忒别扭)。

    说了这么多,最容易的就是用现成的工具:DNNTemplate,安装之后就在VS.NET中添加了DNN Module、DNN SQLDataProvider DAL、DNN ACCESSDataProvider DAL、DNN SkinObject等4个项目模块,然后大家填写业务代码便可,实在方便,如图1。


                                                                  (图1)

    以下是我过去3个多月苦干的基于DNN开发EIP(企业信息门户)的核心系统CMS(内容管理系统)VS.NET解决方案,如图2:

                             (图2)

请到这里下载:DNNTemplate,这个工具支持VS.NET 2002/2003

下一章将深入介绍“我的模块”的具体实现。
posted @ 2004-11-18 10:35 灵感之源 阅读(4588) 评论(21)  编辑 收藏 网摘 所属分类: 3.开源项目

  回复  引用    
#1楼2004-11-17 22:57 | boy119
不错
  回复  引用  查看    
#2楼2004-11-17 23:03 | Findekano      
学习一下:)
  回复  引用    
#3楼2004-11-17 23:03 | 做人要厚道
好东西
  回复  引用  查看    
#4楼2004-11-17 23:03 | dudu      
不错, 这样写自己的模块就方便多了。
  回复  引用  查看    
#5楼2004-11-17 23:04 | lion      
good
建议灵感有空的时候多写些相关的文章

  回复  引用    
#6楼2004-11-17 23:09 | 寒枫天伤
顶........

呵呵,当这里是论坛了

  回复  引用    
#7楼2004-11-18 08:40 | jason[未注册用户]
好东西,谢谢分享
  回复  引用    
#8楼2004-11-18 09:26 | scocsdn
非常好!对于刚接触DNN的我来说很有帮助
期待下一篇

  回复  引用    
#9楼2004-11-18 09:29 | 我的未来不是梦
只能装在2003上吗?
我装在2002上不好用啊

  回复  引用  查看    
#10楼[楼主]2004-11-18 10:42 | Unruled Boy(灵感之源)      
to:我的未来不是梦

这个工具支持VS.NET 2002/2003

  回复  引用  查看    
#11楼2004-11-18 10:57 | wayfarer      
先下来看看,DNN对于我来说是新东西,还需要学习.
  回复  引用    
#12楼2004-11-18 11:35 | young
我在新建的Module裡面無法使用DotNetNuke Namespace,這個dll應該在哪裡引用?
  回复  引用  查看    
#13楼[楼主]2004-11-18 12:21 | Unruled Boy(灵感之源)      
先下载dnn并安装之,引用。
  回复  引用    
#14楼2004-11-19 10:21 | shixiang9076[未注册用户]
能发个DNN 得项目及其源码?这里我先谢了!
  回复  引用    
#15楼2004-11-19 10:22 | shixiang9076[未注册用户]
shixiang9076@sina.com
  回复  引用  查看    
#16楼2004-11-22 00:32 | Dragoon      
非常感谢您,我是从您的文章开始接触DNN的,我在DNN官方网站已经注册了,我没有发现有模板可以下载,只能下载源代码,请问您的模板是怎么弄到的?!
  回复  引用    
#17楼2005-03-16 10:27 | flexmis
最新DNN代码生成模板下载
http://dnnjungle.vmasanas.net

  回复  引用    
#18楼2005-03-26 14:17 | xhy818
请问进阶(2)(3)....那里有呀?
下一章将深入介绍“我的模块”的具体实现。 在那里?

  回复  引用    
#19楼2005-06-25 13:52 | 活靶子[未注册用户]
希望能够尽快看到进阶(2)(3)....
期待!!

  回复  引用    
#20楼2005-07-26 15:28 | zhiyue[未注册用户]
希望能够尽快看到进阶(2)(3)....
  回复  引用    
#21楼2005-07-26 15:36 | zhiyue[未注册用户]
利用DNNTemplate开发新模块时,打开 .acxp窗体时总是出现如下错误:在Web窗体设计器中未能加载该文件。文件中的类都不能进行设计,因此未能为该文件显示设计器。哪位高人能解决这个问题,非常感谢



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

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

0 64968




相关文章:

相关链接: