深瞳

夜如深瞳,瞳深如夜

  :: :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::
http://www.microsoft.com/downloads/details.aspx?FamilyID=7323586a-301c-4a38-a5f3-a4595b391824&displaylang=zh-cn

概述
本工具包中包含以下内容:

适用于 ASP.NET 初学者请先学习相关基本概念知识,

1. ASPNET入门学习资料---ASP.NET和ADO.NET的培训PPT文件,包括一些演示代码,适合初学者入门

2. ASPNET系统学习资料---微软系统培训教材,内容包括ASP.NET,ADO.NET,移动开发等,适合对微软Web开发技术进行比较系统的学习

http://www.microsoft.com/china/msdn/library/webservices/asp.net/starterkits.mspx

利用 ASP.NET Starter Kit 即刻开始 Web 站点开发

发布日期: 12/31/2004 | 更新日期: 12/31/2004

Paul Litwin

本文假设您熟悉 Web 开发

下载本文的代码: StarterKits.exe (141KB)

摘要

如 果您要构建 ASP.NET Web 站点,则需要在坚固可靠的代码基础上来开始构建。从一个完整的站点开始,进行一些修改和自定义,然后上线,是不是很棒?ASP.NET Starter Kit 就是一种允许您这样做的打包解决方案。这五个工具包(Community、Reports、Commerce、Portal 和 Time Tracker)提供可重复使用且可易于自定义的完整代码。此外,有许多 ISP 支持对 ASP.NET Starter Kit Web 站点进行自动部署,当您必须快速进行部署时,留给您的任务会只有很少的一部分。作者在本文中介绍了 ASP.NET Starter Kit,并构建了一个具有许多高级功能(如评价、用户投票、上载配额、更改通知和主题)的社区 Web 站点。

*
本页内容
Commerce Starter Kit 和 Portal Starter KitCommerce Starter Kit 和 Portal Starter Kit
Time Tracker Starter KitTime Tracker Starter Kit
Reports Starter KitReports Starter Kit
Community Starter KitCommunity Starter Kit
创建社区创建社区
Community Starter Kit 结构Community Starter Kit 结构
使用主题使用主题
创建新模块创建新模块
小结小结

ASP.NET 和 Visual Studio® .NET 的确已经使 Web 应用程序开发更为简单。但是,在创建 ASP.NET Web 站点时,仍需要您亲自完成一些工作。您仍需要设计一个完善的应用程序,用可重复使用的可靠代码开发它,并对其进行彻底测试。在该过程中,您可能会问自己: “是不是有人早已解决了该问题?我是不是在重复开发?”一些情形对于大多数 ASP.NET 开发人员而言是共同的,如组合社区站点,跟踪某个项目的时间或者为公司创建门户。基于一个具有完善设计的基础来进行构建(而不必从头设计应用程序,即使这 意味着可以自定义和扩展解决方案),会带来不错的结果。这正是 ASP.NET Starter Kit 的设计思想。

ASP.NET Starter Kit 是 Microsoft 提供的一组(共五个)打包示例应用程序,您可从 http://www.asp.net/starterkits 下载。其中包括一个电子商务店面应用程序、一个社区 Web 站点、一个门户站点、示例报表和一个项目时间跟踪应用程序。Starter Kit 的目的在于,提供几个有用的起始 Web 站点和一些可靠的 ASP.NET 代码示例,您可以从中进行学习并在此基础上构建站点。所有这五个 Starter Kit 都附带了完整的源代码,可将 SQL Server? 或 Microsoft? 数据引擎 (MSDE) 用作数据存储并且可在 Visual Basic?、C# 和 J# 版本中使用。此外,Starter Kit 既可以在 Visual Studio .NET 版本(带有独立的 .aspx 和代码隐藏页)中使用,也可以在 SDK 版本(没有代码隐藏页)中使用。因此,您可以在自己喜欢的环境中使用 Starter Kit,而无论该环境是 Visual Studio .NET、ASP.NET Web Matrix Project 还是某个其他编辑器。在本文中,我将介绍这五个 ASP.NET Starter Kit。然后,将重点介绍 Community Starter Kit,以便向您展示如何根据您的具体需要来扩展它。

Commerce Starter Kit 和 Portal Starter Kit


Commerce Starter Kit 要为虚构的间谍公司 IBuySpy 创建电子商务店面应用程序。该应用程序使用了一个三层体系结构、缓存功能、窗体身份验证和一个购物车。Commerce Starter Kit 还包括一个 B2B Web 服务组件。这是一个可供您研究和学习的绝佳应用程序,尤其是当您需要构建自己的电子商务应用程序时。

Portal Starter Kit 为 Commerce Starter Kit 中描述的虚构间谍公司 IBuySpy 创建门户应用程序。Portal Starter Kit 包括 10 个门户模块:通知、联系人、讨论、事件、html/text、图像、链接、快速链接、xml/xsl 和一个自定义模块。

Time Tracker Starter Kit


Time Tracker Starter Kit(请参阅图 1)实质上是一个没有记帐组件的时间和记帐 Intranet 应用程序。它相当简单。它有三个选项卡:Log、Reports 和 Administration。Administration 选项卡可用来配置项目,Log 选项卡可用来记录小时数,Reports 选项卡可用来按项目或个人生成报表。


图 1 Time Tracker Starter Kit 中的 Log 选项卡


Time Tracker Starter Kit 显示了许多有趣的 ASP.NET 体系结构方面的功能,如三层设计、Windows? 和窗体身份验证、使用 GDI+ 生成动态图表以及移动前端。

Reports Starter Kit


Reports Starter Kit 与其他 Starter Kit 的区别在于,它不是一个单一的聚合应用程序。更正确地讲,它是一系列(共八个)报表,您可以读取这些报表,针对示例数据运行它们并检查其源代码。此外,您 可以复制这些源代码并将它们粘贴到自己的应用程序中。该工具包的工作方式类似于随 Microsoft .NET Framework SDK 和 Visual Studio .NET 提供的 ASP.NET QuickStart。这些报表示例包括简单的表格报表、两种样式的分层深入报表、交叉表和几个 GDI+ 图表。

Community Starter Kit


Community Starter Kit 可能会是核心工具包。使用它,无需花费太多精力或者无需知道它的工作原理,就可为用户组、俱乐部、家庭或社区快速组合社区站点。还可以使用它来组合简单的 新闻和信息站点。在某些方面,它与 Portal Starter Kit 提供的功能相重叠,但是它更侧重于非商业组织并且更易于设置和管理。

Community Starter Kit 支持许多不同类型的内容,包括文章、照片库和事件列表。此外,它还支持大量可选功能(这些功能在许多社区站点上为标准功能),其中包括广告、仲裁、上载配 额、评价、评论、用户投票、内容更改通知、自动转换、主题、Web 箱、联合、新闻稿、外观和安全性。

广告由两个 AdRotator 控件来处理,一个控件具有标准大小(468×60 像素)的横幅,另一个具有 125×125 像素的横幅。如果您针对某个区域启用仲裁功能,那么,这一区域的内容必须得到审阅人的许可才能显示在该站点上。您可以为每个用户都设置上载配额,以便限制 可上载到站点上的图像和文件的数量。Community Starter Kit 还支持整个社区的上载配额。这允许 ISP 在单一箱子中宿主许多社区,而不会让一个站点占用可用的所有磁盘空间。

您可以选择针对特定类型的内容(如图书或文章)打开用户评价和评论功能。用户可以对内容项进行评价(评级可以从 1 到 5),如果愿意的话,他们也可以输入评论来代替评级,或者既添加评级又添加评论。

Community Starter Kit 支持对用户投票进行创建和报告。因此,您可以用诸如“您喜欢哪种面向 .NET 的开发语言?”或者“齐柏林飞船合唱团最初的鼓手叫什么?”之类的问题来对用户进行民意测验。还可以在某个区域中有新内容时自动通知用户。甚至可以指定转 换功能,以便将污秽语言自动从提交内容和评论中清除,而无需您进行任何干预。

Community Starter Kit 有一个选项允许您创建主题列表,以便要求用户在添加投稿内容时对该内容进行分类。因此,基于 .NET Framework 的新闻站点的主题可以是 ASP.NET、托管 C++、Web 服务等。

Community Starter Kit 允许您通过启用各种 Web 箱来在页面空白处添加需要突出显示的内容。例如,您可以使用 Web 箱在主页上显示最流行或最新的文章、链接、下载或照片。还可以使用引用 Web 箱来在页面上显示随机引用。

Community Starter Kit 支持通过两种机制来复制内容:服务订阅和 Web 服务箱。使用服务订阅机制,可以聚合另一个 Community Starter Kit 站点区域的内容并将其显示在您的站点上。例如,您可以订阅另一个社区站点的讨论区域,并将其显示在自己的站点上,就好像它们是您自己的讨论区域一样。与 Web 箱一样,Web 服务箱在页面空白处显示摘录信息;但是,Web 服务箱可以从其他站点获得其内容。您可以订阅另一个将其内容作为 XML Web 服务来发布的 Community Starter Kit 站点,也可以订阅 RSS 服务,如 http://msdn.microsoft.com/msdnmag/rss/recent.xml。您可以利用 XML Web 服务和 SOAP 协议(而不是目前的 RSS 协议),将站点的任何区域作为社区服务来发布。所发布的区域可以用作服务订阅或 Web 服务箱。

您 可以向社区成员发送新闻稿。新闻稿组件既支持模板,也支持嵌入特殊标记,您可以使用这些标记来包括诸如 Username、FullName 和 Password 之类的字段,以及诸如 NewArticles、NewBooks 和 NewDownloads 之类的内容特定的字段。

Community Starter Kit 引擎支持外观或主题等概念,并允许您通过从管理页上选择另一个主题来完全改变站点的外观。外观和主题将在本文稍后讨论。

Community Starter Kit 支持广泛的安全系统,这些系统将成员按照其角色进行分类:匿名、已身份验证、审阅人和管理员,也可以按照您自定义的角色来进行分类。您还可以保护站点任何区域的安全,以便只有特定类型的用户可以查看、添加、编辑或删除内容。


图 2 社区Web 站点示例


图 2 举例说明了 Community Starter Kit 支持的许多社区功能。该社区是一个名为 Ballard .NET 的虚构用户组,它使用 Professional 主题。请注意,用户投票显示在页面的顶部,社区服务供给箱标题“.NET Tips & Tricks”位于页面的右下角。

创建社区


在 下载和安装 Community Starter Kit 之后,您希望做的第一件事情会是删除示例站点数据。这可以通过单击导航条底部的“Login”链接并以 Admin 用户身份用 Admin 密码登录来完成。(由于该密码会造成安全风险,因此请尽快更改该密码。)在成功登录之后,新链接 (Admin) 将出现在导航条上。单击该链接跳转到站点的管理部分,向下滚动,查找“Delete Content”链接。

当删除内容之后返回到社区主页 时,您会注意到一些示例内容仍保留着。要将主页内容替换为自己的内容,需要返回到管理页,单击“Edit Sections”,单击“Home”区域,并提供一个站点标题、说明和徽标。还可以使用这个“Edit Sections”选项来更改主页的基本布局、选择主题或者启用主页的许多可选功能(如显示 Web 箱或 Web 服务箱)。

在设置了主页的布局以后,可以向站点中添加多个区域。一个站点可以有无限多个区域。图 3 列出了可创建的各种类型的区域(或模块)。

要 添加一个区域,请从管理页单击“Edit Sections”链接。您可以创建多个类型相同的区域。例如,图 2 中显示的社区站点包括两个文章区域:News 和 Articles。可以使用父区域来帮助组织一组类似的区域。例如,如果您希望按一般分类来分离下载内容,则可以创建一个包含几个下载区域(如 User Contributions、Controls 和 Speaker Presentations)的父区域。

从“Edit Sections”页,可以启用适用于特定区域的各种可选功能,如仲裁或电子邮件通知。还可以选择将该区域的内容作为社区 Web 服务来发布。

Community Starter Kit 结构


尽 管许多 Web 站点都是受数据驱动且动态生成的,但是其中大多数在很大程度上仍是静态的。尽管这不一定是坏事,但是站点上动态生成的内容越多,它的自定义程度越高。 Community Starter Kit 完全是数据驱动的。如果不计算用于站点管理的页面,Community Starter Kit 仅包含一个没有内容的 .aspx 页。所有内容都存储在 SQL Server 或 MSDE 数据库中。Community Starter Kit 的单个安装支持多个可使用特殊 ISPAdmin 帐户配置的社区。

当向 Web 服务器请求 Community Starter Kit 页面时,一个名为 CommunitiesModule 的 HTTPModule 会处理该请求,确定与该请求相关联的社区、区域、页面和用户,并分别填充 CommunityInfo、SectionInfo、PageInfo 和 UserInfo 对象。这些对象是 Context 对象的 Items 集合中的成员。因为 Context 对象可以在参与一个请求的所有模块和处理程序中保存,所以,这些数据将对于处理该请求的页面可用(有关 Context 对象的更多详细信息,请参阅 Steven Smith 撰写的“ASP.NET:Nine Options for Managing Persistent User State in Your ASP.NET Application”,该文刊登在 2003 年 4 月号的 MSDN? Magazine 中)。然后 CommunitiesModule 将该请求重定向到 communityDefault.aspx 页,该页负责使用上述对象、许多用户控件、支持类和样式表动态生成响应。

现 成的 Community Starter Kit 可能无法完成您希望的一切,但是该工具包在设计时考虑了扩展性。如果您不喜欢它的工作方式,则可以轻松地更改它。毕竟,它附带有以 Visual Basic .NET、C# 和 J# 编写的完整源代码。该工具包的主题和模块元素特别适合进行自定义。

使用主题


Community Starter Kit 是基于 ASP.NET Forums 应用程序设计的,与 Forums 应用程序一样,它也使用主题(又称作外观)来将用户界面与代码分开。主题远不只是样式表。实际上,没有主题,就会没有内容,这是由于主题包含所有显示在站 点上的控件。主题由图 4 中列出的元素组成。

要新建主题,需要在 Communities\Common\Themes 文件夹下面添加一个文件夹。主题的名称派生自该文件夹的名称。在该文件夹下面,创建图 4中显示的文件夹。幸运的是,由于所有的主题都从基本主题 Default 继承,所以您不必填充主题的所有文件夹。因此,如果您不提供主题所需的外观,Community Starter Kit 会使用 Default 主题的外观。

尽 管 Default 主题包含 75 个以上的文件,您仍可以通过只提供几个文件来创建基本主题。我创建了一个名为 Small 的基本主题,它是 Default 主题的精简版本。它与 Default 主题的基本区别在于,其采用更小的字体,颜色由蓝色改为红色,默认页部分采用不同的布局。我的新主题由下列六个文件组成:

Communities\Common\Themes\Small\Images\ redshiny3dsquarebullet_7x7.jpg

Communities\Common\Themes\Small\Skins\ControlSkins\ Sections_SectionMenu.ascx

Communities\Common\Themes\Small\Skins\PageSkins\Default.ascx

Communities\Common\Themes\Small\Styles\an_red_arrow.gif

Communities\Common\Themes\Small\Styles\Default.css

Communities\Common\Themes\Small\Styles\redyellowstar.gif

当然,提供的元素越多,主题将越完整。例如,如果您深入到使用 Small 主题的某个区域,仍将看到具有蓝色背景的控件。但是,如果我没有更改过该主题的配色方案,这就是最明智的做法了。要新建一个主题,最简单的方法就是以现有的主题作为模型,然后修改其外观和样式。

创建新模块


尽管这比创建主题有点复杂,但是您还可以为社区创建新模块。例如,我创建了一个名为 Jobs 的模块,用它来跟踪工作公告。

要新建模块,首先向 CommunityStarterKit 数据库中添加一个用来跟踪新模块项的新表,并将该表命名为 Community_module(其中,module 是新模块的名称)。该表的主键应当命名为 module_ContentPageID,连同要针对该模块收集的其他字段的名称。

您 将需要可用于添加新模块项的存储过程,编辑现有项目,检索项目列表,然后检索单个项目的所有字段。将 Jobs 模块的存储过程命名为 Community_JobsAddJob、Community_JobsEditJob、Community_JobsGetJobs 和 Community_JobsGetJob。我复制了 Articles 模块的存储过程,将它们用作 Jobs 存储过程的模型,并添加跟踪工作公告所必需的其他字段。Community_JobsGetJobs 用于检索 Jobs_Section 页中的工作列表。该模块调用 Community_GetPagedSortedContent 函数以对输出内容进行分页(请参阅图 5)。

在 Engine\Modules 下创建一个将包含该模块代码的新文件夹。在该文件夹下,应当有三个名为 Components、Content 和 Controls 的子文件夹。对于 Jobs 模块,我创建了 Engine\Modules\Jobs\Components、Engine\Modules\Jobs\Content 和 Engine\Modules\Jobs\Controls folders。Components 文件夹应当包含两个类库,第一个类库包含从 ContentInfo 类派生的类,第二个类库包含负责调用每个模块的存储过程的实用工具类。

使用 Visual Basic .NET 版本的 Community Starter Kit,我创建了一个名为 JobInfo.vb 的类库,其中包含一个单一类 (JobInfo)。我将 ArticleInfo.vb 类库用作我的类库的模型。JobInfo 构造函数使用单一参数 DataReader,通过该参数从 Jobs 表抽取每个字段,并将它们放入随后将作为 JobInfo 类的一系列属性公开的私有变量中(请参阅图 6 中的代码)。

JobUtility 类提供 Jobs 模块和 Jobs 存储过程之间的接口,其中包含单一类 JobUtility,该类有四种方法:AddJob、EditJob、GetJobs 和 GetJobInfo。GetJobs 方法负责调用 Community_JobsGetJobs 存储过程并返回 JobInfo 对象的 ArrayList(请参阅图 7)。

对 于该模块支持的每个基本类型的页面,Content 文件夹都应当包含一个类库。这些类将成为以后创建的用户控件的代码。至少,您的模块需要为下面每种类型的页面提供类:添加项目、编辑项目、显示项目列表 (对于区域页)和显示单个项目(对于项目深化页)。这些类需要分别从 ContentAddPage、ContentEditPage、ContentListPage 或 ContentItemPage 派生。正如您可能已经注意到的那样,Content 往往与它们所调用的存储过程具有一对一对应关系。

我创建了四个类库 (AddJob.vb、EditJob.vb、JobSection.vb 和 Job.vb),每个类库都以 Articles 内容类库为模型。内容类用来粘附 JobInfo 类和用户控件外观。Job.vb 类库中的 Job 类负责显示特定工作列表的完整信息(请参见图 8)。

对 于显示在 Job 和 JobSection 页上的每个工作项,Controls 文件夹将包含自定义的服务器控件。我为 Job 页创建了下列服务器控件:JobCompany、JobTempStatus、JobTempMonths、JobStartDate、 JobLocation、JobEducation、JobExperience、JobSalary、JobContactName、 JobContactPhone、JobContactEmail、JobContactWeb 和 JobEditContent。对于 JobSection 页,我创建了 ItemJobLocation 控件。JobCompany 自定义控件显示在图 9 中。

现在,您需要创建一些用户控件,来表示与在上一步中创建的 SkinnedCommunityControl 类相对应的每个基本模块页的内容外观。至少,您必须为 Default 主题提供一组内容外观用户控件。还可以为其他主题提供内容外观用户控件。

我 在 Themes\Default\Skins\ContentSkins 文件夹下创建了三个用户控件:Jobs_AddJob.ascx、Jobs_JobSection.ascx 和 Jobs_Job.ascx。没有用来编辑工作的用户控件,这是因为 Jobs_AddJob.ascx 控件执行双重任务,它为添加工作和编辑工作均提供支持。图 10 中显示了 Jobs_Job.ascx 用户控件的摘录。请注意对 Engine\Modules\Jobs\Controls 文件夹中名为 JobCompany 和 JobTempStatus 的自定义服务器控件的引用。

此时,我向新内容控件的默认样式表 (Themes\theme\ Styles\default.css) 添加了样式。图 11 显示了其中的几个新样式。

最 后,我向数据库中的 Community_PageTypes 和 Community_NamedPages 表添加了用于该项目以及项目区域页的条目。借助于模仿现有 Community_MaintenanceInitializeArticles 存储过程创建的名为 Community_ MaintenanceInitializeJobs 的存储过程,该步骤要相对简单。运行该存储过程会创建必要的表格条目。


图 12 JobSection 页面


图 12 显示了 Ballard .NET 社区站点的 JobSection 页。如果您单击工作公告下面的“Read More”链接,将显示如图 13 所示的 Job 页。


图 13 Job 页


从本文开头的链接地址下载构成 Jobs 模块(以及 Small 主题)的文件副本。

小结


ASP.NET Starter Kit 提供几个预包装的示例应用程序,这些应用程序既提供可正常工作的 Web 站点模板,又提供用 Visual Basic .NET、C# 和 J# 编写的易用的示例代码。这些工具包代表最常见的 Web 应用程序,包括社区、商务、门户、报表和项目时间跟踪站点。本文讨论了 Starter Kit 的安装和使用,以及通过代码(即使您没有 Visual Studio .NET 副本)自定义和扩展 Community Starter Kit 的方法。如果您在寻求一种即刻开始创建 ASP.NET 站点的方法,这些工具包可能是您要寻找的一组便捷工具。还需注意的是,个别的提供 Web 托管的公司可提供对 Starter Kit 的自动部署以及帐户注册。有关详细信息,请参阅 http://www.asp.net/hosters

感谢 Stephen Walther 帮助我撰写本文。

有关背景信息,请参阅:
ASP.NET Starter Kits
http://msdn.microsoft.com/aspnet

Paul Litwin 是 Deep Training 的 CEO 兼高级培训师,该公司主要从事 .NET 培训。他是 Microsoft ASP.NET Connections 的会议主席,他亲自撰写或与人合著有多本书籍,其中包括 ASP.NET for Developers (SAMS, 2001)。他目前正在撰写一本有关 ASP.NET 的新书。您可以通过 paull@deeptraining.com 与 Paul 联系。

转到原英文页面


适用于已经了解ASP.NET 的人员可以从本工具包中的代码示例文件夹开始:

1. 英文版循序渐进教材---英文版本的源代码示例,针对使用最广泛的Web应用,微软根据最佳实践方式,精心设计了5个场景,分别是电子商务 (Commerce)、门户站点(Portal)、Web报表系统(Reports)、社区系统(Community)、时间管理(Time Tracker)。这些代码示例既可以作为学习的典范,也可以在此基础上开始一个新的项目

2. 中文版本---Starter Kit的中文版本,中文版主要是针对Starter Kit中的文档作了一定的翻译,使用的时候,请先按照工具包中的指导安装英文版,然后解压相应的中文版压缩文件,找到英文版的安装路径,覆盖英文版的文 件。注意该中文版需要Visual Studio .NET 2003版本。

3. 由于Starter Kit提供了多种语言的VS版本和SDK版本(VS版本表明可以在开发环境打开VS的项目,SDK版本表明安装了.NET Framework,不需要安装VS.NET就可以工作),本次翻译的部分为C#语言的VS版本。

4. 助学贷款管理系统---微软公司为国内某银行所写的示例程序,该代码展示了ASP.NET的功能特性在国内关键系统上的应用

posted on 2005-07-26 00:52  深瞳  阅读(1129)  评论(0编辑  收藏  举报