asp.net 2.0 网站开发全程解析 第2版_第1页
asp.net 2.0 网站开发全程解析 第2版_第2页
asp.net 2.0 网站开发全程解析 第2版_第3页
asp.net 2.0 网站开发全程解析 第2版_第4页
asp.net 2.0 网站开发全程解析 第2版_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ASP.NET 2.0 网站开发全程解析 第2版第1章 项目介绍TheBeerHouse1.1 提出问题1.2 设计方案1.3 解决方案1.4 小结第2章 进行网站设计2.1 提出问题2.2 设计方案 设计网站布局 实现设计时用到的技术 在样式表文件中使用CSS定义样式 避免使用HTML表格控制布局 在多个页面中共享通用设计 创建可供用户选择的主题 创建一个导航系统 创建一个可访问的网站 在所有页面上共享通用行为2.3 解决方案 创建网站设计 创建模板页面 创建站点地图文件 创建第一个主题 创建一个示例Default.aspx页面 创建第二个主题 创建ThemeSelector用户控件 再对样

2、式进行小修改2.4 小结第3章 设计体系结构3.1 提出问题3.2 设计方案 设计分层结构 选择一个数据库 设计数据访问层 设计业务逻辑层 存储连接字符串及其他设置 用户界面3.3 解决方案 TheBeerHouse的配置部分 DAL的基类:DataAccess BLL的基类:BizObject 配置健康监控系统3.4 小结第4章 成员和用户配置4.1 提出问题4.2 设计方案 密码存储方法 认证模式:Windows security 还是自定义登录表单 让每件事情都由自己完成 Membership和MembershipUser类 提供程序模型设计模式 关于SqlMembershipProvi

3、der的更多细节 浏览默认的SQL Server数据库 图形登录控件 建立和使用角色 建立和使用用户资料 网站管理工具 设计解决方案4.3 解决方案 配置文件 创建登录框4.3.3 AccessDenied.aspx页面 UserProfile控件 用户资料编辑页面 将用户选择的主题持久化 管理部分4.4 小结第5章 新闻与文章管理5.1 提出问题5.2 设计方案 要实现的功能 存储过程 设计配置模块 设计数据访问层 设计业务层 设计用户界面 安全需要5.3 解决方案 数据库解决方案 实现配置模块 实现数据访问层 实现业务逻辑层 实现用户界面 进行安全性设置 带有UrlMapping的友好UR

4、L5.4 小结第6章 民意调查6.1 提出问题6.2 设计方案 要实现的功能 处理多次投票 设计数据库表 管理数据库的存储过程 设计配置模块 设计数据访问层 设计业务层 设计用户界面6.2.9 PollBox用户控件6.3 解决方案 数据库部分的工作 实现配置模块 实现数据访问层 实现业务逻辑层 实现用户界面6.4 小结第7章 邮件列表7.1 提出问题7.2 设计方案 关于垃圾邮件的声明 创建和发送E-mail 处理服务器上的长时间操作 设计数据库表 存储过程 设计配置模块 设计数据访问层 设计业务层 设计用户界面7.3 解决方案 实现配置模块 实现数据访问层 实现业务逻辑层 实现用户界面7.

5、4 小结第8章 论坛8.1 提出问题8.2 设计方案 设计数据库表 存储过程 设计配置模块 设计数据访问层 设计业务类 设计用户界面8.3 解决方案 数据库实现 实现数据访问层 实现业务逻辑层 实现用户界面8.4 小结第9章 电子商店9.1 提出问题9.2 设计方案 选择一种在线付款方案 使用PayPal作为支付服务 设计数据库表和存储过程 设计配置模块 设计数据访问层 设计业务层 设计用户界面9.3 解决方案 实现业务逻辑层 实现用户界面9.4 小结第10章 个性化设置与Web Part10.1 提出问题10.2 设计方案 开发Web Part Web Part架构内置控件 配置Web Pa

6、rt架构 总结:设计解决方案10.3 解决方案 创建Web Part 修改模板页面 允许进行页面级别的个性化设置10.4 小结第11章 网站本地化11.1 提出问题11.2 设计方案 回顾ASP.NET 1.x中的本地化11.2.2 ASP.NET 2.0中新的本地化功能 使用全局资源 使用页面级资源 对更多的静态内容进行本地化 设置当前语言11.3 解决方案11.4 小结第12章 部署网站12.1 提出问题12.2 设计方案 在SQL Server 2005中部署数据库 部署网站12.3 解决方案12.4 小结方案 12.4 小结第1章项目介绍TheBeerHouse 本章介绍的是在本书中要

7、开发的一个项目。将解释该示例网站所涉及到的概念。在阅读过程中,读者应当意识到这是一种多功能的、数据驱动的、基于内容模式的网站,而且可以方便地修改该网站以满足实际需求。虽然本书中会使用许多ASP.NET旧的功能,但重点还是介绍如何在实际网站开发过程中使用ASP.NET 2.0的强大功能。 本书的每一章都使用“提出问题一设计方案一解决方案”的方法进行讲述:“提出问题”部分提出每章所要完成的模块的业务需求,“设计方案”部分开发符合这些需求的解决方案,“解决方案”部分编写代码来实现设计方案。与传统的计算机书籍不一样,本书并没有重点介绍基本概念,而是着重展示如何应用学到的知识来解决实际的业务需求。本书可

8、能并不适合初学者,如果您对网站开发的基本概念和ASP.NET(任何版本的ASP.NET)已经有所了解,并已经实践过,而且您想学习ASP.NET 2.0中的新知识,那么我们开始吧!1.1 提出问题在博洛尼亚(意大利的一个城市)有将近一半的人口是学生,包括许多留学生。由于年轻人很多,所以这里有很多酒吧和娱乐场所,能够让他们在晚上和周末一起出来活动。音乐会、聚会、表演秀等活动经常举办。为了具有竞争力,每个酒吧必须找到一些其他酒吧所没有的、能够吸引潜在顾客的特色。要有竞争力,营销也非常重要,我们的一个客户希望在这一方面做得更强。该客户原来一直使用传统印刷广告来宣传她的酒吧TheBeerHouse(一个

9、虚构名字),但现在想尝试新的媒体方式创建一个令人兴奋的网站。她认为这很有用,因为顾客一旦熟悉了她的网站就可以去那里看最新活动的报道;通过邮箱接收新闻邮件;可以浏览过去活动的照片,对它们进行排名;还能同网站的其他访问者分享信息、建立联系,而且日后他们还能在酒吧里当面进行交流。建立网站的目的就是吸引顾客,尤其是使目标顾客习惯于通过网站来获得新闻和活动的信息。酒吧是典型的娱乐场所,拥有很多顾客,它可能要比传统的酒店更需要这样的网站。1.2设计方案每章的“设计方案”部分对该章提出的问题进行讨论,然后设计解决方案。这意味着需要记录一系列业务需求、项目需要实现的功能、用于数据存储的必要数据库对象的设计,以

10、及用于获取数据、处理数据和向用户展示数据的类的结构。在项目的开始阶段要考虑用户有何需求,以及怎样来处理这些需求,在时间和预算允许的条件下尽量扩展需求,使用户能在此基础上获得更多的功能。正如“提出问题”部分所述,在本书场景中,我们的客户拥有一个酒吧,她希望建立一个网站来推广她的酒吧,该网站上将提供最新活动的预告信息、已结束活动的报道等。有很多方法可以对这些设想进行扩展,这样就可以创建一个内容丰富的网站,这对酒吧主人和顾客(也可以是潜在顾客)都有好处。项目开始时,我们先列出了当今基于内容的网站所应具有的功能:·一个吸引人的用户界面。外观很重要,因为用户首先会注意界面,然后才关注网站的功能

11、和服务。但用户界面不能完全靠图片解决问题,应当合理地组织网站上的信息,使用户可以方便地获得所需的信息。网站应当符合用户的使用习惯,即用户可以很方便地浏览,方便地进行交互。要注意跨浏览器的兼容性,例如:要保证网站在不同的平台上和浏览器中都可以正常显示和操作。如果无法预知用户会使用何种浏览器来访问网站,那么这尤为重要。·一个成功的内容网站会在它的用户中有很好的声望。忠诚的用户会经常访问网站来发帖子、参加投票或其他活动,正是他们才使得网站保持增长。要为这些积极的会员创建一个有活力的社区,需要把他们同其他普通会员区别开来。因此,网站需要一个注册功能,作为身份认证的一个基础部分,该功能也将用于

12、授权以及限制访问网站中的某些页面。·网站需要不断更新以保持活力,如果内容一成不变,那么访问者就会对该网站失去兴趣而不再访问了。一个酒吧的网站应当定期更新活动、聚会和音乐会的预告信息,否则网站不会成功。试想用户在浏览网站时看不到上次聚会时拍的照片会有何反应?要实现内容的不断更新,就需要一些方法,能让网站编辑人员方便地更新动态内容。而且,负责网站内容更新的编辑人员很可能不是技术人员,因此应当创建一些简单的管理页面,这样非技术人员也可以通过这些页面方便地对网站进行内容更新。·当网站上有了新内容之后,网站管理员应当想办法来提醒用户。并非所有的用户每天都访问该网站,因此管理员应当主动

13、提示用户有关近期的更新。如果用户已经在网站注册过,并提供了Email地址,那么也可以通过邮件使他们获得网站的更新以及其他内容。当然,还有很多其他的方法能够提供这些信息,例如:提供真正简单的整合(Really Simple Syndication,RSS),这样,用户注册后就可以使用RSS阅读器自动获得新闻通知,无需每天访问网站来获得信息了。·像这样的网站最适合进行一些顾客问卷调查。例如:顾客在酒吧中最喜欢什么?他们喜欢什么牌子的啤酒?与朋友一起喝酒时是否想听音乐或是否觉得酒吧太过于吵闹等。建立一些用户与网站之间的沟通是很重要的,如果能得到相当数量的反馈信息,那么这些信息将引导管理者做

14、出正确的战略决策和改变,从而提高经营状况。·如果说用户与网站之间的沟通是很重要的话,那么用户与用户之间的交流则更加重要,这是为用户建立社区的主要目的。他们经常访问网站进行聊天,并讨论网 站上的新闻,针对即将举行的活动向其他用户咨询建议。这些都能为网站带来更多的访问量,让网站无论在短期还是在长期运营中都能获得回报。·商店有了一定顾客基础以后,店主就可以对它进行扩展来实现在线销售。事实上,酒吧已经为啤酒爱好者提供了一系列商品,像杯子、T恤、钥匙链等。网站的访问量高了,也是提高商品销售的一个好办法,因为顾客可以不用到酒吧就能购买这些商品。如果用户看到自己喜欢的商品可以对它进行投票

15、排名,从而让其他用户知道自己对该商品的感受。在线商店应当能够方便地由非技术人员进行管理,因为很可能是该酒吧主人亲自添加、修改商品信息和进行定单管理的。因此,网站应有一个操作简单明了的用户界面,它能够自动完成尽量多的操作,并且引导用户在整个过程中进行操作。·由于网站上提供新闻、文章、商品列表、用户讨论等动态内容,因此可以想象网站主页会变得很拥挤。太多的信息可能会造成阅读困难,引起误解。如果访问者能够根据自己的爱好亲自构建属于自己的主页那就再好不过了。他可能想看活动预告而不关心在线商店,很好!我们将为他提供这样的功能,他可以在自己的主页上对内容进行添加和删除,也可以将内容进行移动,使内容

16、重新排列,这样浏览者阅读起来会更舒服并且容易获得有用的信息。许多大型网站都提供了这种自定义功能,像Windows Live及My MSN都是非常好的示例,自定义功能能够帮助网站吸引更多的用户进行注册。·前面已经提到,酒吧的客人会来自很多不同的国家,我们希望不同国家的人所访问到的网站是一致的,因此,网站应当全部或者部分地翻译成多种语言,让大部分用户都能容易理解。不仅文本需要翻译,像日期格式和数字格式这样的信息也应当根据用户的本地设置进行显示,这样就不会有人把即将举行的聚会或者活动的时间看错。综上所述,TheBeerHouse网站将拥有当今内容网站的全部功能,包括动态文章和新闻、问卷调查

17、、论坛、邮件列表、RSS、在线购物、个性化主页以及内容本地化。通过构建示例网站,可以学习构建当今大多数内容网站和商务网站所包含的主要功能,在将来开发网站时会用到它们。1.3解决方案每章的“解决方案”部分包含了设计步骤和实际代码,用于实现前面两个部分中所提出的功能、需求以及设计。下面概述以后各章所要讲述的内容。 在第2章中,将实现网站的设计、图形,以及布局。通过使用Master PageASP.NET2.0中的一个新功能,能够让布局在网站的所有页面之间共享。还可以使用“主题”ASENET 2.0的另外一个新功能,为Master Page创建一系列不同的外观。这样就可以创建一种机制使访问者可以从下

18、拉列表中选择自己喜欢的主题,根据自己的喜好来改变网站的色彩和外观,甚至能够避免视觉障碍。最后通过新的web.sitemap文件以及Menu和SiteMapPath控件来创建一个灵活且易于维护的导航系统。第3章将为构建一个灵活的、容易配置的功能网站打基础。首先,需要一个插入式的数据访问层(Data Access Layer,DAL),DAL可以支持任何类型的数据存储,有良好的扩展性,在高使用量中有很好的表现。然后在DAL的上面构建一个业务逻辑层,使得数据以面向对象的方式展示。逻辑层还包含了所必需的验证逻辑、事务管理、事件曰志以及高速缓存。最后,介绍用户界面(UI)和表示层,它们利用新的GridV

19、iew、DetailsView和FormView控件,并结合ObjectDataSource可以快速生成功能强大且由数据驱动的复杂页面。在第4章中,将把ASP.NET 2.0中新的成员功能整合到网站中,以生成用户注册表单,并且支持用户的身份验证和授权。本章将介绍新的Profile模块,它允许定义用户级别的属性,该属性的值可以持久保存。这与传统的Session状态变量有很大的区别,Session状态变量只存在于用户浏览网站期间。我们将要构建一个完整的管理模块,它允许管理员查看成员列表,限制那些在网站上有恶劣行为的成员,查看和编辑每个用户的详细资料。在第5章中,将构建一种内容管理系统,这个模块为管

20、理员提供了一个直观的界面来管理网站中的文章,非技术用户也可以使用它。该模块内置了一个成员系统来确保模块只对有权限的人员开放,并跟踪文章作者的最新动态。该模块可以对全部分类或指定分类中的新内容进行汇集而发布一个RSS源,同时还支持排名和评论等其他许多功能。这些功能很强大,网站编辑人员只要事先准备好格式丰富的内容,并且设置好内容自动发布和删除的时间,网站就会自动完成更新,这样网站的更新就变得非常简单,只需要很少的操作和时间。本章最后将描述新的GridView、DetailsView和ObjectDataSource控件,通过使用这些控件,可以将面向对象业务类中的数据同用户界面进行绑定,业务类所包含

21、的数据来自数据访问层。在第6章中,将讨论如何在网站上创建和管理调查问卷。此模块提供了一个管理控制台,用于通过Web浏览器来管理投票。还提供了一个用户控件,只需要几行代码就可以把一个调查问卷插入到任何页面中,同时还包括了一个历史页面,可以在该页面上查看所有的历史投票记录。在第7章中,将为网站增加一个完整的邮件列表模块,用于向那些注册了详细个人资料的用户发送新闻邮件。邮件是通过后台线程发送的,没有使用处理页面请求的主线程,这样页面不会产生超时,更重要的是,网站编辑人员不会碰到那种好几分钟看到的都是空白页面的情况。使用异步JavaScript及XML编程技术(Asynchronous JavaScr

22、ipt and XMLProgramming,AJAX)可以实现页面部分更新,提供新闻的实时更新。用户能够在一个归档页面中看到过去的新闻邮件列表。要实现所有这些功能,需要使用一些ASENET 2.0的高级功能,例如多线程编程、新的脚本回调功能以及新的邮件发送类。在第8章中,将创建一个论坛系统,该系统支持多个子论坛,有合适的可选项,可以对主题和回复进行分页列表显示,可以用不同方式进行排序,并且支持标准RSS,可以配置用户排名,支持签名档、引用以及当今大多数论坛的主要功能。该论坛系统还提供了完整的管理功能(删除、编辑、批准、移动、关闭主题和帖子)。在第9章中,将为网站添加一个在线商店。它具有在线商

23、店所必要的功能,包括完整的商品分类和定单管理系统、购物车、使用信用卡在线支付的功能、商品排名、商品库存状态、使用文本和图片对商品进行描述、配置送货方式、查看定单状态等。很荣幸能有机会为本书作序,而本书的作者又是一个与我并肩工作的挚友,这不仅是一种荣誉,还是一种极大的快乐!作为读者,您可能急于去阅读随后的章节,而对我是在何时以及如何认识Marco的可能不感兴趣,但我相信这个故事还是值得一听。在20世纪90年代后期,我开始建造网站,并且迅速受到VB拥护者的欢迎,之后的几个月,Marco开始把他的文章用E-mail发给我,很快我就清楚地意识到,他是一个很聪明的程序员,具有把经验变成文字的杰出天赋。几

24、年之后,我决定写一个VB6的商业插件,并且寻求Marco的帮助。在几个月内,我们发布了VBMaximizer,VBMaximizer后来被Visual Basic Programmers Journal的读者评为最具生产力的工具之一。这个故事中最引人注目的细节是Marco和我是通过E-mail来工作的,没有进行过电话交流。我从来不用解释我需要什么,难以置信的是,我从他那儿得到的代码第一次测试就几乎是完美的。那时,我不知道Marco仅仅20多岁,否则,我对他一定早有印象了。我真正见到Marco是在几年之后,那时我和他已经共同开发了好几个软件项目。我不断地惊讶于他做每件事时所展现出的职业水准,不论

25、是对于一个程序、一个会议还是一篇文章或者整本书。Marco是我认识的人中少数几个能真正不计时间来完成一项任务的人,他真正感到自豪的是结果。您阅读的这本书也是让他感到自豪的作品之一。正如作者在本书前言中所说的那样,本书与您在书店中看到的大部分书是不同的,那些都是参考类的书籍,对ASP.NET 2.0或者.NET Framework的细节很少剖析,大多数都是给出了一个简短的列表,阐述每个功能。我写过了许多有关这样的参考书,所以对此很熟悉。Marco在本书中使用了一种本质上不同的方法:他解释了如何将ASP.NET 2.0的所有功能聚集起来,产生像杠杆一样的力量去设计开发完全意义上的Web网站。不要被

26、TheBeerHouse 网站迷惑了,那只是给假想的客户提供的假想网站。如果说示例网站和真实网站之间主要的区别在于其可执行性、安全性、健壮性、可测性和对您所渴望细节的关注程度,那么Marco 设计的TheBeerHouse网站比我最近见过的大多数真实网站还要真实。实际上,与大多数网站的作者不同,Marco能将所有的时间用来实现一些功能和修复他所遇到的bug。并且他也不同于大多数示例程序的编写者,他从来不会将开发人员在日常开发中碰到的问题忽略掉。在第5章的文章/新闻管理模块和第9章的电子商务模块中,他花费的时间比开发其他模块所用的时间多得多。经过不懈的努力,这两个模块的质量远远超过了普通的演示程

27、序所应有的期望,是目前ASP.NET 2.0功能演示程序中性能最好的模块(包括Microsoft的Starter Kits在内)。从教学的角度来看,本书的最大价值在于它是以开发阶段所采用的设计实现方法为基础的。实际上,Marco所做的工作远比刚才介绍的要多,他罗列了所有选择赞成与反对的理由,并针对每个问题解释了他是如何努力寻找完美解决方案的。他就像坐在您身旁的一个专家,能明白您的心思,在您犯错误之前帮您改掉错误。Francesco BalenaCode Architects Srl的合伙创始人亲爱的读者,感谢您购买这本书,欢迎阅读基于ASP.NET 2.0的新版的ASP.NET网站开发全程解析

28、。因为渴望有一本书能够教授如何创建真正的Web网站,所以在2001年我萌生了写书的想法,当时是ASP.NET 1.0。本书第1版在2002年出版,幸运的是它很成功,我相信这归因于当时市场上有关ASP.NET的书大多数都是参考类型的,这些书介绍每个单独的控件和它们的属性及用法,并且提供的示例都是用单一页面演示怎样使用一个控件。这类书的普遍缺陷是没有讲授如何整合ASP.NET所有的功能和控件来构建一个功能丰富的独立网站,而这正是读者在工作中经常需要做的。从一个简单的示例中学会设计实现一个真正的Web网站是很困难的,所以我认为本书对开发人员解决工作中的实际问题是很有帮助的。这本新版的书经过了重新编写

29、,尽可能地包括了ASP.NET 2.0的全部新功能。我希望本书在以下方面能做得比较好:开发的项目更加完整(例如有一个电子商务模块)和更专业,每一章都提供足够的ASP.NET 2.0背景资料,即便您没有使用过ASP.NET 2.0,也可以轻松地阅读,这些是在第1版中没有考虑到的。最重要的是本书的目的是描述、设计和实现一个网站,它或许与您正在开发的或者不久将要开发的网站很相似,同时还对功能强大的ASP.NET 2.0 Framework提供的许多新功能进行了介绍。本书中并没有为了使解决方案变得既简单又简短,而回避那些比较难的问题。相反,我尽力向您解释了在开发Web网站时会遇到的一些典型问题,并给这

30、些问题提供了一个或多个解决方案。结果是实现了一个Web网站,展示了一个用户可选择主题的设计、成员资格系统、用于发布文章和图片的内容管理系统、民意调查系统、邮件列表、论坛、一个支持信用卡实时支付的电子商店、个性化主页和本地化(参考第1章中的详细介绍)。我希望您能喜欢本书,它能为您加速开发下一个项目提供向导,使之具有更好的可靠性、可扩展性和良好的组织性。可以在线浏览Web网站:我的博客网址为本书主要内容本书从基础架构开始,逐步实现了一系列模块的设计和解决方案,最终完成了一个大型的示例网站。本书的结构和书中所开发的完整项目,使得“全程解析”系列图书能够独立于Wrox其他系列图书之外。本书将带领您通过

31、一个完整的ASP.NET 2.0 Web网站开发过程,掌握如何开发当今流行的具备多期望功能的内容网站和电子商务网站。这些多期望的功能主要包括:       用户注册、个性化和主题       新闻和事件,及其分类管理       调查问卷       邮件列表       论坛  

32、;     有购物车和定单管理功能的电子商店       本地化从管理的角度来看,还包含了下列功能和问题:       完全在线后台管理,通过直观的用户界面来处理所有的数据       网站部署在实现每一个模块的同时,对ASP.NET 2.0中的新功能进行了讲解,这些功能如下:       Master Page

33、60;      主题       个性化和Web Part       会员和个人资料       个性化       诸如GridView、DetailsView、FormView、Wizard、MultiView等新的服务器端用户界面控件、新的xxxDataSource和导航控件  

34、     新的编译和部署模式       新的网站监测架构,以及异常处理架构       新的ADO.NET 2.0功能(如用数据库依赖进行缓存)       易于进行分布式事务管理的新类本书不仅包含了ASP.NET 2.0的新功能,还示范了如何把这些功能整合在一起,去开发一个功能完善的网站。全部设计决策都是经过解释和讨论的,包括数据库设计、数据访问和业务逻辑组件设计,以及整个

35、网站的构架。在本书结束时,您将学会怎样开发一个可靠的、具有一定规模且可扩展的Web网站。本书的结构安排本书从开始到结束构建了一个完整的项目,在这个项目中,每一章(除了第1章)都是一个独立的单元,并且由以下三部分构成。       提出问题:在这一章中您需要什么?要在网站上加入什么样的功能,它们为什么重要?需要考虑一些限制和其他因素吗?       设计方案:问题提出之后,这部分描述解决这些问题需要用到什么功能。对于解决方案如何工作,或者解决问题的过程中要用到的内容,这部分将给

36、出一个总的想法。       解决方案:在经过提出问题和设计方案之后,我们将讨论和生成代码以及其他需要的内容,用于设计和解决在本章开始时所提出的问题。在这部分,您可以马上创建代码,进行练习。本书旨在让您从头到尾进行阅读,这样就能够从无到有地生成一个随时可以发布的、完整的、可部署的Web网站。此外,本书遵循一个模块化的结构,每一章都是一个独立单元,如有必要的话,可以将某一章中实现的功能提取出来用在其他Web网站上。本书读者对象首先声明,这不是一本为初学者或者从没接触过ASP.NET和.NET Framework的开发者编写的书。本书教给

37、读者如何去开发一个实际的Web网站,从开始进行设计直到最后进行部署,但本书并没有解释每一个技术细节,而是专注于设计和编写实际的解决方法。为了能更好地阅读本书,您应该具有ASP.NET 1.x的工作经验,即使没用过其高级功能。学习本书,不要求您了解ASP.NET 2.0,因为在每章中您将用到新引入的控件和功能,本书提供了足够的背景资料去实现解决方案。如果您想进一步学习和完全掌握某个控件,那么可以参考MSDN的官方资料或其他参考书,如由清华大学出版社引进并已出版的ASP.NET 2.0高级编程(特别版)。使用本书的要求如果您想在自己的计算机上跟随本书建立项目,或运行下载的现成项目,您的计算机需要以

38、下配置:       Windows XP Professional、Windows Server 2003,或者Windows 2000 Professional 或Server。       Visual Studio 2005的任何一个版本,需要能够运行C#,包括免费的Visual Web Developer 2005 Expression Edition。至少应该配备Visual Studio 2005 Standard。即使您根本没有使用微软的编辑器(有可能您更喜欢

39、Macromedia Dreamweaver MX或是其他文本编辑器),也能够随着本书运行示例项目,因为有些章节在“设计方案”部分向Visual Studio设计人员进行了介绍和演示,而在“解决方案”部分没有用它来编写代码。       可能的话请使用SQL Server 2005 Standard Edition,在最后一章中将使用到它。源代码运行本书的示例时,您可以选择手工输入代码,也可以使用本书附带的源代码文件。本书源代码可从或提示:由于许多书的标题相似,因此最简单的方法是通过ISBN找到该书。本书的EISBN是0-7645-8

40、464-2(在2007年7月新的ISBN 13位数字编号施行后,已变为978-0-7645-8464-0)。下载代码之后,用您喜欢的解压缩工具进行解压缩即可。您还可以登录Wrox的代码下载页面勘误表尽管我们已经尽了各种努力来保证文章或代码不出现错误,但是错误总是难免的,如果您在本书中找到了错误,例如拼写错误或代码错误,请发送邮件至wkservice,我们将不胜感激。我们将检查您的信息,如果是正确的,就会在本书的后续版本中采用。通过这种方式,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。要在网站上找到本书的英文勘误表,可以登录,通过Search工具框或书名列表查找本书,然后在本书的

41、信息页面上,单击Book Errata链接。在这个页面上,可以查看已经提交并通过编辑检查的所有勘误。此外,在 booklist.shtml页面上还提供了完整的书籍列表以及相关的勘误表链接。p2p. P2P论坛()是为作者和同行之间的讨论而设立的。该论坛是一个基于Web的系统,可用于粘贴与Web图书和技术相关的信息,与其他读者和技术用户交流。该论坛提供了订阅功能,在论坛上出现新贴子时,可以接收到自己感兴趣的电子邮件。Wrox作者、编辑、其他业界专家和读者都会出现在这些论坛上。在上,有许多不同的论坛,您可以从许多不同的列表中获得帮助,这不仅对阅读本书有所帮助,还可以在开发应用程序时获得帮助。要加入

42、该论坛,可以遵循下面的步骤:(1) 进入并单击Register链接。(2) 阅读使用条款并单击Agree按钮。(3) 填写表单中要求填写的信息,以及其他可选信息,然后单击Submit按钮,即可加入论坛。您将接收到一封确认电子邮件,其中列出了如何验证您的账户和加入论坛的完整步骤。提示:不加入P2P论坛也可浏览其中的信息,但要发布新消息,则必须注册。在加入该论坛后,您就可发布新消息并回复其他人的文章。可在任意时刻通过Web阅读其中的信息。如果需要,也可通过电子邮件订阅论坛中特定主题的新信息,为此,请在论坛列表中选中特定论坛名称所对应的Subscribe to this Forum图标。要更详细地了

43、解如何使用Wrox P2P论坛,请阅读P2P FAQ,其中列出了论坛软件如何工作等众多常见的问题。单击P2P论坛中任意页面的FAQ链接即可阅读相关内容。本章介绍的是我们将在本书中要开发的一个项目。将解释该示例网站所涉及到的概念。在阅读过程中,读者应当意识到这是一种多功能的、数据驱动的、基于内容模式的网站,而且可以方便地修改该网站以满足实际需求。虽然本书中会使用许多ASP.NET旧的功能,但重点还是介绍如何在实际网站开发过程中使用ASP.NET 2.0的强大功能。本书的每一章都使用“提出问题设计方案解决方案”的方法进行讲述:“提出问题”部分提出每章所要完成的模块的业务需求,“设计方案”部分开发符

44、合这些需求的解决方案,“解决方案”部分编写代码来实现设计方案。与传统的计算机书籍不一样,本书并没有重点介绍基本概念,而是着重展示如何应用学到的知识来解决实际的业务需求。本书可能并不适合初学者,如果您对网站开发的基本概念和ASP.NET(任何版本的ASP.NET)已经有所了解,并已经实践过,而且您想学习ASP.NET 2.0中的新知识,那么我们开始吧!1.1  提出问题在博洛尼亚(意大利的一个城市)有将近一半的人口是学生,包括许多留学生。由于年轻人很多,所以这里有很多酒吧和娱乐场所,能够让他们在晚上和周末一起出来活动。音乐会、聚会、表演秀等活动经常举办。为了具有竞争力,每个酒吧必须找到

45、一些其他酒吧所没有的、能够吸引潜在顾客的特色。要有竞争力,营销也非常重要,我们的一个客户希望在这一方面做得更强。该客户原来一直使用传统印刷广告来宣传她的酒吧TheBeerHouse (一个虚构名字),但现在想尝试新的媒体方式创建一个令人兴奋的网站。她认为这很有用,因为顾客一旦熟悉了她的网站就可以去那里看最新活动的报道;通过邮箱接收新闻邮件;可以浏览过去活动的照片,对它们进行排名;还能同网站的其他访问者分享信息、建立联系,而且日后他们还能在酒吧里当面进行交流。建立网站的目的就是吸引顾客,尤其是使目标顾客习惯于通过网站来获得新闻和活动的信息。酒吧是典型的娱乐场所,拥有很多顾客,它可能要比

46、传统的酒店更需要这样的网站。1.2  设计方案每章的“设计方案”部分对该章提出的问题进行讨论,然后设计解决方案。这意味着需要记录一系列业务需求、项目需要实现的功能、用于数据存储的必要数据库对象的设计,以及用于获取数据、处理数据和向用户展示数据的类的结构。在项目的开始阶段要考虑用户有何需求,以及怎样来处理这些需求,在时间和预算允许的条件下尽量扩展需求,使用户能在此基础上获得更多的功能。正如“提出问题”部分所述,在本书场景中,我们的客户拥有一个酒吧,她希望建立一个网站来推广她的酒吧,该网站上将提供最新活动的预告信息、已结束活动的报道等。有很多方法可以对这些设想进行扩展,这样就可以创建一个

47、内容丰富的网站,这对酒吧主人和顾客(也可以是潜在顾客)都有好处。项目开始时,我们先列出了当今基于内容的网站所应具有的功能:l       一个吸引人的用户界面。外观很重要,因为用户首先会注意界面,然后才关注网站的功能和服务。但用户界面不能完全靠图片解决问题,应当合理地组织网站上的信息,使用户可以方便地获得所需的信息。网站应当符合用户的使用习惯,即用户可以很方便地浏览,方便地进行交互。要注意跨浏览器的兼容性,例如:要保证网站在不同的平台上和浏览器中都可以正常显示和操作。如果无法预知用户会使用何种浏览器来访问网站,那么这尤为重要

48、。l       一个成功的内容网站会在它的用户中有很好的声望。忠诚的用户会经常访问网站来发帖子、参加投票或其他活动,正是他们才使得网站保持增长。要为这些积极的会员创建一个有活力的社区,需要把他们同其他普通会员区别开来。因此,网站需要一个注册功能,作为身份认证的一个基础部分,该功能也将用于授权以及限制访问网站中的某些页面。l       网站需要不断更新以保持活力,如果内容一成不变,那么访问者就会对该网站失去兴趣而不再访问了。一个酒吧的网站应当定期更新活动

49、、聚会和音乐会的预告信息,否则网站不会成功。试想用户在浏览网站时看不到上次聚会时拍的照片会有何反应?要实现内容的不断更新,就需要一些方法,能让网站编辑人员方便地更新动态内容。而且,负责网站内容更新的编辑人员很可能不是技术人员,因此应当创建一些简单的管理页面,这样非技术人员也可以通过这些页面方便地对网站进行内容更新。l       当网站上有了新内容之后,网站管理员应当想办法来提醒用户。并非所有的用户每天都访问该网站,因此管理员应当主动提示用户有关近期的更新。如果用户已经在网站注册过,并提供了Email地址,那么也可以通过邮件

50、使他们获得网站的更新以及其他内容。当然,还有很多其他的方法能够提供这些信息,例如:提供真正简单的整合(Really Simple Syndication,RSS),这样,用户注册后就可以使用RSS阅读器自动获得新闻通知,无需每天访问网站来获得信息了。l       像这样的网站最适合进行一些顾客问卷调查。例如:顾客在酒吧中最喜欢什么?他们喜欢什么牌子的啤酒?与朋友一起喝酒时是否想听音乐或是否觉得酒吧太过于吵闹等。建立一些用户与网站之间的沟通是很重要的,如果能得到相当数量的反馈信息,那么这些信息将引导管理者做出正确的战略决策和

51、改变,从而提高经营状况。l       如果说用户与网站之间的沟通是很重要的话,那么用户与用户之间的交流则更加重要,这是为用户建立社区的主要目的。他们经常访问网站进行聊天,并讨论网站上的新闻,针对即将举行的活动向其他用户咨询建议。这些都能为网站带来更多的访问量,让网站无论在短期还是在长期运营中都能获得回报。l       商店有了一定顾客基础以后,店主就可以对它进行扩展来实现在线销售。事实上,酒吧已经为啤酒爱好者提供了一系列商品,像杯子、T恤、钥匙链等。网

52、站的访问量高了,也是提高商品销售的一个好办法,因为顾客可以不用到酒吧就能购买这些商品。如果用户看到自己喜欢的商品可以对它进行投票排名,从而让其他用户知道自己对该商品的感受。在线商店应当能够方便地由非技术人员进行管理,因为很可能是该酒吧主人亲自添加、修改商品信息和进行定单管理的。因此,网站应有一个操作简单明了的用户界面,它能够自动完成尽量多的操作,并且引导用户在整个过程中进行操作。l       由于网站上提供新闻、文章、商品列表、用户讨论等动态内容,因此可以想象网站主页会变得很拥挤。太多的信息可能会造成阅读困难,引起误解。如

53、果访问者能够根据自己的爱好亲自构建属于自己的主页那就再好不过了。他可能想看活动预告而不关心在线商店,很好!我们将为他提供这样的功能,他可以在自己的主页上对内容进行添加和删除,也可以将内容进行移动,使内容重新排列,这样浏览者阅读起来会更舒服并且容易获得有用的信息。许多大型网站都提供了这种自定义功能,像Windows Live及My MSN都是非常好的示例,自定义功能能够帮助网站吸引更多的用户进行注册。l       前面已经提到,酒吧的客人会来自很多不同的国家,我们希望不同国家的人所访问到的网站是一致的,因此,网站应当全部或者

54、部分地翻译成多种语言,让大部分用户都能容易理解。不仅文本需要翻译,像日期格式和数字格式这样的信息也应当根据用户的本地设置进行显示,这样就不会有人把即将举行的聚会或者活动的时间看错。综上所述,TheBeerHouse网站将拥有当今内容网站的全部功能,包括动态文章和新闻、问卷调查、论坛、邮件列表、RSS、在线购物、个性化主页以及内容本地化。通过构建示例网站,可以学习构建当今大多数内容网站和商务网站所包含的主要功能,在将来开发网站时会用到它们。1.3  解决方案每章的“解决方案”部分包含了设计步骤和实际代码,用于实现前面两个部分中所提出的功能、需求以及设计。下面概述以后各章所要讲述的内容。

55、在第2章中,将实现网站的设计、图形,以及布局。通过使用Master PageASP.NET 2.0中的一个新功能,能够让布局在网站的所有页面之间共享。还可以使用“主题”ASP.NET 2.0的另外一个新功能,为Master Page创建一系列不同的外观。这样就可以创建一种机制使访问者可以从下拉列表中选择自己喜欢的主题,根据自己的喜好来改变网站的色彩和外观,甚至能够避免视觉障碍。最后通过新的web.sitemap文件以及Menu和SiteMapPath控件来创建一个灵活且易于维护的导航系统。第3章将为构建一个灵活的、容易配置的功能网站打基础。首先,需要一个插入式的数据访问层(Data Acces

56、s Layer,DAL),DAL可以支持任何类型的数据存储,有良好的扩展性,在高使用量中有很好的表现。然后在DAL的上面构建一个业务逻辑层,使得数据以面向对象的方式展示。逻辑层还包含了所必需的验证逻辑、事务管理、事件日志以及高速缓存。最后,介绍用户界面(UI)和表示层,它们利用新的GridView、DetailsView和FormView控件,并结合ObjectDataSource可以快速生成功能强大且由数据驱动的复杂页面。在第4章中,将把ASP.NET 2.0中新的成员功能整合到网站中,以生成用户注册表单,并且支持用户的身份验证和授权。本章将介绍新的Profile模块,它允许定义用户级别的属

57、性,该属性的值可以持久保存。这与传统的Session状态变量有很大的区别,Session状态变量只存在于用户浏览网站期间。我们将要构建一个完整的管理模块,它允许管理员查看成员列表,限制那些在网站上有恶劣行为的成员,查看和编辑每个用户的详细资料。在第5章中,将构建一种内容管理系统,这个模块为管理员提供了一个直观的界面来管理网站中的文章,非技术用户也可以使用它。该模块内置了一个成员系统来确保模块只对有权限的人员开放,并跟踪文章作者的最新动态。该模块可以对全部分类或指定分类中的新内容进行汇集而发布一个RSS源,同时还支持排名和评论等其他许多功能。这些功能很强大,网站编辑人员只要事先准备好格式丰富的内

58、容,并且设置好内容自动发布和删除的时间,网站就会自动完成更新,这样网站的更新就变得非常简单,只需要很少的操作和时间。本章最后将描述新的GridView、DetailsView和 ObjectDataSource控件,通过使用这些控件,可以将面向对象业务类中的数据同用户界面进行绑定,业务类所包含的数据来自数据访问层。在第 6 章中,将讨论如何在网站上创建和管理调查问卷。此模块提供了一个管理控制台,用于通过Web浏览器来管理投票。还提供了一个用户控件,只需要几行代码就可以把一个调查问卷插入到任何页面中,同时还包括了一个历史页面,可以在该页面上查看所有的历史投票记录。在第7章中,将为网站增

59、加一个完整的邮件列表模块,用于向那些注册了详细个人资料的用户发送新闻邮件。邮件是通过后台线程发送的,没有使用处理页面请求的主线程,这样页面不会产生超时,更重要的是,网站编辑人员不会碰到那种好几分钟看到的都是空白页面的情况。使用异步JavaScript及XML编程技术(Asynchronous JavaScript and XML Programming,AJAX)可以实现页面部分更新,提供新闻的实时更新。用户能够在一个归档页面中看到过去的新闻邮件列表。要实现所有这些功能,需要使用一些ASP.NET 2.0的高级功能,例如多线程编程、新的脚本回调功能以及新的邮件发送类。在第8章中,将创建一个论坛系统,该系统支持多个子论坛,有合适的可选项,可以对主题和回复进行分页列表显示,可以用不同方式进行排序,并且支持标准RSS,可以配置用户排名,支持签名档、引用以及当今大多数论坛的主要功能。该论坛系统还提供了完整的管理功能(删除、编辑、批准、移动、关闭主题和帖

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论