前 言 DotNetNuke是一个使用ASP.NET构建的Web应用程序框架,能够方便地创建网站。使用该系统或者利用该平台提供的众多功能,可以开发自定义的ASP.NET Web应用程序。本书面向那些拥有开发知识,又热衷于学习DotNetNuke工作机制的开发人员。 有经验的ASP.NET开发人员和那些了解DotNetNuke的人可以跳过第1章~第6章的内容。这几章主要介绍DotNetNuke的基本知识和基本操作。第7章~第17章主要讨论DotNetNuke的架构和开发。但如果通读本书,可以更好地理解DotNetNuke的工作机制。 本书内容 本书分成两个主要部分。第一部分研究DotNetNuke项目的发展历史,探讨如何在服务器上安装DotNetNuke,并且解释如何组织和管理DotNetNuke门户网站。 本书第二部分分析DotNetNuke应用程序的架构、应用程序的工作机制,以及如何通过开发可以插入到DotNetNuke门户网站中的模块来扩展门户网站框架。最后,本书揭示了DotNetNuke灵活的皮肤定制功能,并介绍了如何为门户网站创建独特的外观。 使用本书的要求 为了安装DotNetNuke和支持数据库,需要的操作系统为Windows 2003 Server或Windows XP(仅限于开发)。本书中介绍的DotNetNuke基本安装使用SQL Server数据库作为数据提供程序。所以,在安装上述操作系统的计算机上或者远程计算机上还必须安装SQL Server 2000/2005或者MSDE/SQL Express(仅限于开发)数据库。 为了实践开发相关章节中的内容,还需要安装Visual Studio.NET 2003和Visual Studio 2005的Visual Web Developer。 项目参与人员 除了本书的作者外,DotNetNuke开发团队还包括许多来自世界各地的个人。感谢这些人的参与以及他们对项目所做的贡献。下面详细介绍DotNetNuke项目的参与人员及他们在社区中的角色。 理事会 DotNetNuke理事会负责管理项目的长远发展策略,其成员如下所示。 Dan Caron:参见“作者简介”。 Joe Brinkman:参见“作者简介”。 Nik Kalyani:Speerio, Inc.公司的创始人和CEO,该公司是一家位于华盛顿的软件公司。Kalyani是一名创业家(serial entrepreneur),接二连三地创立新公司,精通于许多软件开发领域,特别擅长于Web应用程序的可用性。他向社区贡献了几个DotNetNuke模块,并且作为企业级DotNetNuke模块的主要开发人员继续致力于Speerio的发展。在核心团队中,Kalyani除了和其他理事会成员一起制定DotNetNuke的发展策略外,他还负责协调DotNetNuke的营销。2005年,Kalyani作为DotNetNuke的领导参与了DotNetNuke当前所使用的商标元素的开发,最近,他创建了Capital DUG,即美国华盛顿地区的DotNetNuke用户组。Kalyani是Western Michigan大学计算机科学专业的毕业生,定期在博客中撰写自己使用C#语言开发.NET应用程序的经验,以及对正在发展的Web的看法。Kalyani和他的妻子以及一个1岁的女儿一起居住在华盛顿,在那里,他还参与政治活动,准备参与国会议员竞选。 Scott Willhite:参见“作者简介”。 Shaun Walker:参见“作者简介”。 核心团队 DotNetNuke核心团队由两种级别的人员组成—— 理事角色(Trustee Role)和核心团队(Core Team)。这两种级别代表着在DotNetNuke组织中的不同信任级别和职责程度。 理事角色 被授予理事角色的个人需要展示他们对项目的贡献,并能够长期承担项目的义务。他们要承担顾问职责,成功交付指定的任务,并积极参与社区的活动。他们在关键领域充当管理人员,管理核心团队成员的子团队之间的沟通。 Bruce Hopkins:参见“关于作者”。 Charles Nurse:从事软件开发行业25年之久。他拥有一家自己的咨询公司Keydance Computer Services,成为DotNetNuke开发人员已经有两年之久(其中后18个月是中心核心团队成员,现在为理事)。开发.NET 2版本的DotNetNuke(DNN 4.0)时,他是一名主管开发人员。目前,他正在开发自己的DotNetNuke开发人员资源站点,在这个站点上他提供有关开发DotNetNuke和使用DotNetNuke开发的文章。Charles出生于英国的Bristol,但一直生活在加拿大西海岸美丽的不列颠哥伦比亚省。他和他的妻子拥有两个十几岁的孩子。 Cathal Connolly:是EG Information Consulting公司的一名高级开发人员和顾问,该公司位于北爱尔兰的Belfast。Cathal曾经在英国、美国和澳大利亚的IT公司工作过,使用微软的技术开发Web和客户端/服务器应用程序。目前,他专注于银行业安全应用程序和定制的智能客户端.NET产品的开发。他通过了MCSD认证,持有计算机科学的学士学位,并且是Visual Studio/VB.NET方面的微软最有价值专家(MVP)。 Christopher Paterra:参见“作者简介”。 Dan Caron:参见“作者简介”。 Joe Brinkman:参见“作者简介”。 Jon Henning:是Solution Partners公司的一名高级顾问,该公司位于芝加哥,专注于微软技术方面的咨询业务。Jon通过了MCSD认证,自PDC发布以来就开始使用Visual Studio .NET从事开发。Jon曾经写过几篇编程方面的文章,目前他关注于胖客户端(rich client-side)功能的开发。从DotNetNuke 3开始,Jon就开始为DotNetNuke开发客户端API,客户端API允许开发人员使用简单的API,跨浏览器逻辑编写胖客户端程序。DotNetNuke到处都应用了这个API,包括DotNetNuke的TreeView、LabelEdit和TextSuggest控件。Jon和他的妻子Holly以及两个孩子Kyle和Carter一起居住在伊利诺斯州的Aurora。 John Mitchell:是Snapsis Software公司的创始人和总裁。John拥有长达二十多年的开发经验,在过去7年一直从事Internet核心边缘技术的工作。他专注于门户网站/电子商务应用程序的架构、设计、开发和实现。John带领团队开发了若干网站,其中包括自2003年5月起,他就开始使用并增强DotNetNuke,是Tulsa .NET用户组的创始成员。 Philip Beadle:在2004年就职于Byte Information Technology公司,是DotNetNuke核心团队的创始成员之一,通过了MCAD认证。他在基于微软的.NET技术的DotNetNuke框架开发和商业应用方面具有丰富经验。他成功地为澳大利亚以及海外的客户开发并实现站点,最近还被授予ASP/ASP.NET方面的微软最有价值专家。 Scott McCulloch:参见“作者简介”。 Scott Willhite:参见“作者简介”。 Shaun Walker:参见“作者简介”。 Vicenç Masanas:是西班牙Universitat de Girona公司的一名开发人员和分析师。自1998年起,他就一直使用微软技术(包括ASP、VB、ASP.NET、Access和SQL Server)开发网站。Vicenç在2003年夏天从IBS门户网站加入DotNetNuke社区。现在,他在DotNetNuke团队中的角色是一名核心开发人员、bug和功能增强专家和西班牙地区的DotNetNuke宣传人员。当前,Vicenç正在基于DotNetNuke平台开发许多项目。Vicenç将DotNetNuke平台作为未来工作的框架,他还编写了一些受到高度赞扬的VS.NET工具和DNN开发人员指南(可通过网站下载)。他为DotNetNuke提供在线支持和培训,并为DotNetNuke项目提供自定义模块开发和咨询。 Geert Veenstra:是DotNetNuke中心核心团队的成员,目前就职于Schmit公司,一家专注于停车场解决方案的公司,他是这家公司的技术支持专家。在日常工作中,他使用过多种操作系统(包括Windows操作系统和Unix操作系统的各种变种)和数据库(例如Oracle、SQL和MySql Server等)。他为公司创建了内部网和客户bug报告网站(当然都是使用DotNetNuke开发的)。Geert在2003年中加入DotNetNuke团队,主要负责本地化和bug修复工作。他创建了第1个第三方DotNetNuke数据提供程序(MySql),并且提供了DNN安装程序。 核心团队 核心团队成员由在DotNetNuke社区中获得认可的个人组成——有时候基于个人的技术能力,但是大多数时候都基于个人在帮助社区其他成员方面的无私奉献。团队成员与理事成员紧密合作,帮助理事成员管理项目的各个方面。一旦核心团队成员在DotNetNuke核心团队中获得了一致的认可和信任,他们就被授予理事角色。 Bo Nørgaard:拥有电子工程专业的学士学位,是一名获得Psion认证的开发人员和工程师,而且还是一名获得Internet安全系统认证的安全工程师。从1979年起,他就开始从事编程工作,曾经使用过Comal 80、Pascal、ANSI C、ADA、PLM、ASM(Intel)、OO Pascal、Delphi、C++、Perl、PHP、Visual Basic和Java语言,目前在使用C#语言。自1991年,他开始在哥本哈根大学工程技术学院任教,后来在丹麦的国家戏剧学院任教。Bo曾经出席过若干重要会议,包括新奥尔良举办的安全实践细节方面的CA-World。他是Bonosoft公司的CEO,并且运营着DotNetNuke开发人员社区站点,该站点上有许多关于Visual Basic和Visual C#编程人员为DotNetNuke编写插件模块的资源。 Bryan Andrews:自Netscape 1.0起就一直从事Web应用程序开发工作,在过去的12年中,他从事过许多方面的工作,从基础架构和管理,到协同和知识管理工具开发。Bryan是一家总部设在亚特兰大的销售代理公司(TrendCRM)及关联开发公司(AppTheory)的总裁和创始人之一,这家公司生成营销和通信工具。DotNetNuke成为他们众多客户的选择平台,因此他们开发了一整套工具和与代理相关的模块来支持他们的客户。 Chris Hammond:是位于密苏里州圣路易斯的Engage Software公司Internet解决方案方面的产品经理。Engage Software公司与DotNetNuke相关的工作包括为Internet上一些大的DNN实现(例如和)自定义模块和皮肤实现。Chris刚开始时参与圣路易斯的DotNetNuke用户组,随着时间的推移,开始在美国中西部地区的用户组中宣传和教授DNN。在空闲时,Chris会参与美国跑车俱乐部(Sports Car Club)的各种活动,包括汽车越野比赛和俱乐部竞赛,并且管理着多个致力于这一爱好的社区门户网站。 Jeremy White:Webstone Technologies, LLC公司的创始人和总裁,是DNN核心团队的创始成员之一。他通过了MCSE、MCP+I和MCT认证,在编程、网络开发、WiFi、VoIP和跨国公司的CMS技术实现方面拥有多年的经验。Jeremy使用微软的Internet技术,包括ASP和ASP.NET,积极参与Web解决方案的设计和开发。他是DNN 1.x和2.x中很受欢迎的Shadow模块的作者,自2003年2月起,他就经常参与DNN论坛。Jeremy和他的妻子只一起生活在纽约的Long Island。 Leigh Pointer:是一名多才多艺的微软最有价值的专家,自1988年起就开始在IT部门工作,经验十分丰富。他在用户交互设计、Web设计、软件工程、软件分析与设计、问题解决和用户关系方面也具有丰富的经验。他在资源和项目管理方面展现了领导能力,对微软的开发工具具有深入的理解。Leigh是一个以业绩为导向(results-oriented)的人,勇于革新、创造和挑战,适应于快节奏的工作环境。他充当DotNetNuke的顾问,可以解决从安装到维护(无论是企业外网还是企业内网的解决方案)等各方面问题。Leigh经常为DotNetNuke设计和开发新的模块,为已有的模块添加更多的功能。Leigh还是DNN荷兰和欧洲用户组的创始人。 Lorraine Young:是Byte Information Technology公司的一名业务分析师,该公司位于澳大利亚的墨尔本。她是DotNetNuke核心团队的创始成员,负责DotNetNuke项目的用户体验和文档方面的工作。Lorraine获得写作和文学方面的艺术学士学位,并且是弱视(vision-impaired)成人和儿童定向行动(Orientation and Mobility)方面的研究生。 Patrick Santry:参见“作者简介”。 Mark Hoskins:是KodHedZ软件开发公司的创始人,该公司位于加拿大大不列颠哥伦比亚省的维多利亚,在这家公司,他从事ASP.NET业务管理、电子商务和动态Internet应用程序方面的开发已有三年多时间,而且自DotNetNuke在2002年12月面世以来,就主要使用DotNetNuke作为开发平台。除了Web应用程序,他还在使用DotNetNuke开发和实现解决方案方面为开发人员编写了许多文章和指南,并在他个人网站上提供了许多资源。 Michael Washington:是一名网站开发人员和ASP.NET、C#和Visual Basic方面的编程人员。他对过程改进、记账系统以及信用卡交易处理方面的知识拥有广泛的了解。他参与DotNetNuke将近三年的时间,在DotNetNuke数据访问层上进行了功能增强。Michael为DotNetNuke开发了许多模块,还编写了众多的指南,其中包括《完全初学者创建DotNetNuke模块指南》。Michael有一个儿子Zachary,他和他的妻子Valerie一起居住在洛杉矶。 Nina Meiers:是一名自由职业者,为DotNetNuke网站开发皮肤,她在核心团队中的角色包括用户体验专家、DotNetNuke宣传员和技术记录与营销专家。Nina擅长于图形方面,技术上精益求精,能够和开发人员和用户团结合作,从而使她在网站上的皮肤在众多免费优质的皮肤中的下载量超过了12 500次,帮助她在DotNetNuke社区赢得了地位。Nina在她自己的网站上提供了大量的项目资源,从小企业到财富500强的公司,数量庞大。Nina已经结婚生子,平时希望搞点革新、阅读、写作和骑山地车。 Robert J. Collins:是WillowTree Software公司的创始人和总裁,该公司是一家定制软件和DotNetNuke咨询服务公司。Robert是一名经验丰富的开发人员,拥有十多年的Web开发经验,擅长电子商务应用程序、企业内网工具和高效率的数据驱动Web应用程序的设计、开发和实现。他在Web开发社区中拥有世界级的地位。Robert创立了非常成功的Boise .NET开发人员用户组,该用户组致力于促进微软.NET框架和服务的发展。Rob以前曾在微软公司工作,当时他负责为微软内部服务和微软的合作伙伴提供高效率的Web和数据库应用程序解决方案。他还是一名有名的桌面/客户服务器应用程序开发人员、网络系统工程师和机群服务专家,拥有5年多的系统集成经验(MCP、MCP+I、MCSE和MCSE+I)。 Salar Golestanian:擅长皮肤和UI设计,只使用DotNetNuke环境。他拥有数年的创造设计经验,目前正投身于客户期望的内容管理解决方案。Salar使用DotNetNuke平台开发了许多项目,各个项目的链接和展示都位于网站上。Salar拥有物理学的理学和哲学(Science and Mphil)学士学位。他和他的未婚妻及女儿一起居住在英国的伦敦附近。 Shawn Mehaffie:拥有MCP(ASP.NET)认证,目前正在向MCSD认证冲击。Shawn在VB.NET、ASP.NET和C#方面拥有14年的编程经验,自.NET发布以来就开始使用.NET技术从事开发。他曾在一个属于微软.NET Blaze程序的团队中编写支付引擎Web服务。Shawn还创建了自己的公司PC Resources, LLC。从DotNetNuke v1.0开始,他就成为DotNetNuke社区的一员,目前他使用DotNetNuke为客户创建网站。Shawn是QA团队的主管,并且是Bug & Enhancement团队的成员。Shawn非常高兴成为DotNetNuke核心团队的成员,在未来的DotNetNuke发布中,他的团队会做出更大的贡献。Shawn和他的妻子及两个儿子Austin和Tyler一起居住在密苏里州的Blue Springs。 Steve Fabian:从事了19年的软件解决方案设计和开发。除了使用各种语言进行编程之外,Steve还精通图形和Web设计,在过去的几年里,他专注于用户界面设计、客户端和浏览器的.NET开发,最近专注于DotNetNuke。Steve和他的妻子以及5只可爱的狗(Kahlua、Amaretto、Sambucca、Daiquiri和Whiskey)生活在新泽西州。在他特别有限的自由时间里,Steve还和他的妻子为BARKS做志愿工作,BARKS是一家位于新泽西州Byram的动物救护所。 Tam Tran Minh:拥有HCMC-Vietnam建筑大学的建筑学学位。目前他是越南TTT Corporation公司的主席和CIO。自2003年,DotNetNuke就成为这家公司的主要内容管理门户网站。Tam已经为社区开发并贡献了几个DotNetNuke模块。目前Tam正在使用Visual Basic、Exchange/Outlook和VB.NET为TTT公司开发一个管理和协作系统。他还在越南PC-World杂志上发表过若干文章,并基于TTT公司的项目,在计算机图形技术方面出版了Architectural Space — Virtual and Reality一书(该书获得越南2002年度国家建筑学奖)。Tam会说越南语和英语两种语言。 源代码 在练习本书中的示例时,读者可以手动输入所有的代码,也可以使用随书附带的源代码。本书中的所有源代码均可在或http://www.tupwk.com.cn/downpage站点下载。登录Web站点后,只需找到本书的标题(可以使用Serach功能或标题列表)并单击显示本书详细内容的页面上的Download Code链接即可获取源代码。 由于很多书籍的名称类似,因此通过ISBN查找可能会更容易一些;本书的ISBN号是0-471-78816-3。 在下载源代码之后,只需使用最喜欢的解压缩工具对其进行解压缩即可。另一个途径是到Wrox代码下载主页面/dynamic/books/download.aspx,这里有本书及其他所有Wrox书籍的源代码。 勘误表 我们尽最大努力确保本书在叙述和代码中没有错误。然而,没有人是完美的,错误时有发生。如果您在本书中发现什么错误,例如拼写错误或编码错误,我们将会非常感谢您能反馈给我们。通过将错误添加到勘误表中,您也许能为其他读者节约数小时的时间,也可以帮助我们提供更高质量的书籍。 请给wkservice@tup.tsinghua.edu.cn发电子邮件,如果您的意见是正确的,我们将在本书的后续版本中采用。 要找到本书的勘误表,可以登录Web站点,然后搜索本书的书名或者使用标题列表。然后,在本书的详细内容页面上,单击Book Errata链接。在这个页面上读者可以查看到所有已提交的、由Wrox的编辑发布的错误信息。也可以在/misc-pages/booklist.shtml页面找到一个完整的标题列表,这个列表包含了每本书的勘误表链接。 如果想参与讨论,可以加入P2P论坛,网址是。这些论坛是基于Web站点的系统,其作用是让读者发布与Wrox的书籍和相关技术有关的消息,并与其他读者和技术用户联络。这些论坛提供订阅功能,当有与您感兴趣的主题相关的新消息发布的时候,论坛会通过电子邮件把这些消息发送给您。Wrox的作家、编辑、其他行业专家以及和您一样的读者都会出现在这些论坛上。 在,读者将找到很多不同的论坛,这些论坛不仅能帮助您阅读本书,还可以帮助您开发自己的应用程序。要加入这些论坛,可按如下步骤操作: (1) 登录并单击Register链接。 (2) 阅读用途条款并单击Agree。 (3) 填写加入论坛所必需的信息和可选信息并单击Submit。 (4) 您将收到一封电子邮件,该邮件将告诉您怎样验证账户并成功加入。 没有加入P2P论坛也可以阅读该论坛上的信息,但是如果希望发布自己的消息,则必须加入该论坛。 加入之后,就可以发布新消息或者回复其他用户发布的消息了。可以在任何时间阅读Web站点上的消息。如果希望某个论坛能将最新的消息通过电子邮件发送给您,则可以单击论坛列表中该论坛名称旁边的Subscribe图标。 要获得如何使用P2P论坛的更多信息,可以阅读P2P FAQ列表中的问题及其答复,这些问题与论坛软件的工作原理以及很多与P2P和Wrox相关的常见问题有关。要阅读FAQ,可以单击任意P2P页面上的FAQ链接。