建立模块开发项目
开发DNN模块可以通过两种开发环境来进行:
一、在整个DNN解决方案下建立模块开发项目。
优点:可以方便的引用DNN组件,参考其他模块的实现方式,可以随时通过“转到定义”的操作查看DNN中该方法的定义,调试起来也比较容易。
缺点:速度慢。打开项目和编译项目都要费大量时间。
二、用单独的方式建立模块解决方案。
优缺点正好和第一种相对,不过在实际开发中速度是关键,下面我就单独讲讲我在以单独方式建立模块开发解决方案中的一些心得。
建立单独的解决方案进行模块开发需要解决三个问题:
1、在什么地方建立解决方案有助于边开发边测试?
2、如何对原有dll进行引用,生成的dll又到那个目录中?
3、怎样进行调试?
欲善其事,必先利其器。首先,我们应该为开发DNN模块准备以下工具:
DNN Project Templates :一个由dnnjungle提供的VS.NET 2003下的功能插件。安装后,可以直接通过它在VS环境来创建DNN项目和一些DNN中所用的项。
CodeSmith Templates:一组生成DNN模块业务逻辑层代码和数据访问层代码所用到的,CodeSmith代码生成模板。
CodeSmith:代码生成工具,结合上述模块,可以大大加快代码编写工作。(http://www.codesmithtools.com/)
相关网址:http://dnnjungle.vmasanas.net/Development/Templates/tabid/28/Default.aspx
当上面的工具都安装好后就可以开始我们的模块开发工作了。该模块用VS.NET 2003开发环境,以DNN3.3.3做为平台,数据库使用SQL Server数据库。
1、创建DNN模块表示层项目。运行VS,创建DNN模块开发项目。如果,你安装好DNN Project Templates后,在创建新项目时,在项目类型处将会出现“Visual Basic Project for DotNetNuke 3”和“Visual C# Project for DotNetNuke 3”这两个新项目。在这里我选择VB.NET作为开发语言,其实用C#是一样可以开发DNN模块的。选择“DNN Module”模板,项目名称设置为:Article,项目位置选择DNN程序所在文件夹的DesktopModules目录,这样有利于边开发边测试。如下图:
2、创建DNN模块数据访问层项目。点击添加“新项目”,选择“DNN SqlDataProvider DAL”,项目名称为:Article。项目位置:DesktopModulesArticleProvidersDataProviders。如下图:
3、设置DNN模块表示层项目属性添加引用。首先,该项目需要添加DNN程序Bin目录下的DotNetNuke.dll组件的引用。项目属性到不用修改,默认设置即可。启用该项目,默认导入了一些DNN的命名空间,这样你就不必再每个文件中引用这些命名空间了。但是在以后文章中我还是会介绍到这些命名空间的作用,即常用功能。
4、设置DNN模块数据访问层项目属性添加引用。首先,该项目需要添加DNN程序Bin目录下的DotNetNuke.dll和Microsoft.ApplicationBlocks.Data.dll组件的引用,并且还要添加表示层的项目的引用。其次,将该设置为启动项目。设置项目生成路径为DNN程序的bin目录。这样每次编译后都可以及时调试。
5、编译程序,目前这个地方改的可以编译通过就可以了,以后我们还要重新对它进行编写。
注:DNN3.3.X下开发的模块,可以在DNN4.3.X上使用。
来看看,我们建立的开发项目吧,如下图:
MyCompany.Article项目
App_LocalResources:语言包文件夹,存放与用户控件同名的资源文件
Components:业务逻辑代码文件夹
ArticleController.vb:业务逻辑对像,实现对像/关系映射,也就是实现业务实体对像到数据库的转换
ArticleInfo.vb:业务实体对像
DataProvider.vb:支持多数据库访问Provider,相当于一个到多种数据库访问接口
Documentation:可以放一些开发文档和用户说明书(如果制做安装包不需要时,请把它从项目中排除)
Installation: 可以放一些生成好的安装包做为备份使用,制做安装包前,需要把它从项目中排除
Providers: 放置一些模块相关的Provider,目前只有DataProviders,如果你还有其他需要兼容括充的业务,你也可以编写其他的Provider。例如:文章模块将来需要用到图表显示文章查看情况。网上可以使用的图表组件很多,你就可以编写一个ChartProvider,提供访问的统一接口。然后编写相应图表组件的Provider实现,如:ZedGraphProvider,WebChartProvider等。这样就可以通过在web.config中进行设置,灵活的兼容多种图表组件。Provider模式是DNN中一个应用非常广范设计思想,可以说是DNN的一个亮点。
Article.ascx:做为文章列表显示控件
ArticleEdit.ascx:做为文章新建/编辑控件
ArticleShow.ascx:目前还没有,再以后新建做为文章显示控件
icon_Article_32px.gif:模块图标
module.css:模块所用到的样式
Settings.ascx:做为设置文章列表分页大小控件
MyCompany.Article.SqlDataProvider项目
01.00.00.SqlDataProvider模块数据库对像创建脚本
SqlDataProvider.vb SQL Server数据库访问具体实现类
Uninstall.SqlDataProvider 模块数据库对像删除脚本
调试程序
有一篇文章有详细介绍:http://www.cnblogs.com/leeichang/archive/2004/11/16/64418.html
大致就是,通过附加进程,来调试程序,方便快速,十分好用。那篇文章已经介绍的非常好了,我就不多讲,只是大家要注意:默认情况下,ASP.NET 进程(对于 Windows 2000 和 Windows XP 上的 IIS 5.0 和 IIS 5.1 为 aspnet_wp.exe,对于 Windows Server 2003 上的 IIS 6 为 w3wp.exe)作为 ASPNET 进程运行。因此,要调试它,您必须具有运行 ASP.NET 的计算机的管理员特权。
DNN模块项目初步建立完成了,我们就需要在DNN中添加该模块,看看该模块是否能正常添加运行,为下一步开发打好基础。在《DNN模块开发系列文章(3)——在DNN中添加模块定义》一文中我将详细介绍,如何在DNN添加一个模块
本文作者:未知