DNN学习总结(安装、URL重写、DNN模块的结构)
一、安装
1、下载版本介绍
DNN是一个开源的项目,在www.dotnetnuke.com网站上有它的下载(下载需要注册),每个版本一般提供三个下载包,例如 dotnetnuke04.06.02 可以下载到下边几个压缩包。
DotNetNuke_04.06.02_Install
DotNetNuke_04.06.02_Source
DotNetNuke_04.06.02_StarterKit.vsi
DotNetNuke_X.Y.Z_Install.zip - An Install Package – This package contains the
ascx, aspx files as well as other content files and compiled assemblies (dlls) but does
not contain any of the Visual Basic code files for the providers and httpModules.
DotNetNuke_X.Y.Z_Install.zip是发布版本,不包括providers和httpModules的源码。
DotNetNuke_X.Y.Z_Source.zip – A Source Package – This package contains all the
files related to the core DotNetNuke project including all the Visual Basic source
files.
DotNetNuke_X.Y.Z_Source.zip 是源码,包括了有关核心DNN项目的源码。
DotNetNuke_X.Y.Z_StarterKit.vsi – A Visual Studio 2005 Installer package – This
package contains a Project Template (based on the Install package) a Module Item
Template (in both Visual Basic.NET and C#), and a Skin Item Template. The
supporting class libraries, providers and HttpModules are provided as pre-compiled
assemblies (dlls).
DotNetNuke_X.Y.Z_StarterKit.vsi是开发包,是一个Visual Studio 2005的安装包,可以被安装到Visual Studio 2005开发环境中,安装后,可以在Visual Studio 2005环境中看到项目模板、模块项目模板(VB.NET and C#.NET)、皮肤模板。
2、发布版本的部署
(1). Unzip the Package
(2). Configuring IIS (Internet Information Server)
(3). Create a Database in SQL Server
(4). Set File Permissions
In Windows 2000/IIS5 the account to use is the {Server}"ASPNET User Account,
in Windows 2003/IIS6 the account is the NT AUTHORITY"NETWORK SERVICE
User Account.
The required permissions for the various directories in DotNetNuke are as follows:
Root (and all child folders) – Read Access
Root – Write Access (and Modify Access if expecting to create child
portals)
DesktopModules – Write, Modify Access (if installing 3rd party Private
Assemblies)
Portals (and all child folders) – Write, Modify Access (to allow File
Manager access and Skin/Container access)
If you are likely to be installing Language Packs you will also need Write and Modify
Access to all child folders of the root.
(5)、开始安装
浏览你为该站点建好的虚拟目录,如果是第一次浏览,程序会检测到数据库是空的会进入安装向导界面,根据提示完成安装。
安装完成后,dnn的版本被写入Install目录下的DotNetNuke.install文件中,这时,如果你删掉建好的数据库,重新建一个空数据库,然后,再次浏览为该站点建好的虚拟目录时,将提示错误信息,程序不会进入安装向导界面,因为程序首先判断是DotNetNuke.install文件中的版本号,发现和现有安装程序的版本号一致后,就不会再进入安装"升级向导界面。
如果要让程序重新安装,需要手动修改DotNetNuke.install文件中的版本号。
二、URL重写
URL 重写的常见用法
创建数据驱动的 ASP.NET 网站时,通常会产生一个单个的网页,该网页基于查询字符串参数显示数据库数据的子集。例如,在设计电子商务站点时,您的任务之一便是允许用户浏览待售产品。为此,您可以创建一个名为 displayCategory.aspx 的页面,该页面将显示给定类别的产品。可以通过查询字符串参数来指定要查看的该类别的产品。也就是说,如果用户要浏览待售的 Widget 产品,并且所有 Widget 产品的 CategoryID 均为 5,则用户可以访问以下网址:http://yousite.com/displayCategory.aspx?CategoryID=5。
创建具有此类 URL 的网站有两点不足:首先,从最终用户的角度考虑,URL http://yousite.com/displayCategory.aspx?CategoryID=5 比较杂乱。可用性专家 Jakob Neilsen 建议遵循以下标准来选择 URL:
简短。
易于键入。
可以看出站点的结构。
“可删节”,允许用户通过删除 URL 的组成部分来浏览站点。
我还要增加一条标准,即,URL 应该便于记忆。URL http://yousite.com/displayCategory.aspx?CategoryID=5 不符合 Neilsen 的任何标准,也不容易记住。要求用户键入查询字符串值将使 URL 的键入变得非常困难,并且只有了解查询字符串参数的用途及其名称/值对结构的富有经验的 Web 开发人员才能够对 URL 进行“删节”。
较好的方法是允许使用切合实际且容易记忆的 URL,如 http://yoursite.com/products/Widgets。只要看一眼 URL,您便可以推断出将要显示的内容 -- 有关 Widget 的信息。此 URL 也很容易记住和共享。我可以告诉我的同事“请查看 yoursite.com/products/Widgets,”,她可能无需再次问我 URL 是什么即可打开该页面。(尝试一下,您只需说出“Amazon.com 页面”即可!)此 URL 还将显示出来,并且应该是“可删节”的。也就是说,如果用户删去 URL 的末端,键入 http://yoursite.com/products,他们应该看到所有产品的列表,或者至少应该看到他们可以查看的所有类别的产品列表。
注意:要获得“可删节”URL 的最好示例,可考虑使用由许多 blog 引擎生成的 URL。要查看 2004 年 1 月 28 日的帖子,用户可以访问诸如 http://someblog.com/2004/01/28 的 URL。如果该 URL 被删节为 http://someblog.com/2004/01,用户将看到 2004 年 1 月的所有帖子。将该 URL 进一步删节为 http://someblog.com/2004 将显示 2004 年的所有帖子。
除了简化 URL 之外,URL 重写还经常用于处理网站重组,以免导致大量链接断开或书签过期。
详细的介绍请参照
http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?mfr=true
三、DNN模块的结构
DNN模块开发的第一步就是要弄清一个DNN模块都要有哪些文件,这些文件该如何命名,每一个文件又各起到什么作用。
以大家最熟悉Link(链接模块)为例:
从文件结构来看:(省了一些文件夹或文件,如bin文件夹)
DotNetNuke_3.0.13..............DNN根目录
DesktopModules...............DNN模块所在目录
Links......................一般以模块名称命名该模块所在文件夹
App_LocalResources.......该模块所用到的语言包文件
(命名遵循语言包文件命名规范:对应UI控件文件名.ascx.[语言文化区域名称,en-US不要该项].resx)
Providers
DataProviders..........具体数据访问Provider,所在文件夹
SqlDataProvider......SQLServer数据库访问的Provider,当然还可以有OracleDataProvider等
SqlDataProvider.vb.数据访问的具体实现
DataProvider.vb..........数据访问工厂抽象类
EditLinks.ascx...........编辑该模块内容或条目的UI控件(以“Edit+模块名称”命名)
Links.ascx...............呈现在查看页面的UI控件
LinksController.vb.......该模块的业务逻辑访问对象(以“模块名称+Controller”命名)
LinksInfo.vb.............该模块的业务逻辑对象CBO(以“模块名称+Info”命名)
Settings.ascx............该模块特定设置UI控件,一个模块没有特定设置可不要该项
从项目命名上来看,一个模块一般有两个项目:
1、模块UI层、业务逻辑层及数据访问工厂
项目名称:公司名称.模块名称
项目所在位置:该模块所在文件的根目录
程序集名称:公司名称.Modules.模块名称
需要引用:DotNetNuke.dll
2、数据访问具体实现层(以SQLServer数据库为例,如果是Oracle数据,则将SqlDataProvider换成OracleDataProvider即可)
项目名称:公司名称.模块名称.SqlDataProvider
项目所在位置:该模块所在文件的根目录"Providers"DataProviders"SqlDataProvider
程序集名称:公司名称.Modules.模块名称.SqlDataProvider
需要引用:DotNetNuke.dll;对应模块的程序集;Microsoft.ApplicationBlocks.Data.dll
从安装文件包来看:
除包含模块生成的程序集文件、UI控件文件及语言包文件外,还有:
数据库安装文件:版本号.SqlDataProvider(这是对应SQLServer的安装文件,如:01.00.00.SqlDataProvider)
DNN文件:模块所用文件清单,及安装信息等,是一个XML文件,命名:模块名称.dnn
数据库卸载文件:Uninstall.SqlDataProvider(这是对应SQLServer的卸载文件)