简介:规划 ASP.NET 网站

更新:2007 年 11 月

创建网站之前,最好始终先规划网站,然后再开始创建页面和编写代码。事先规划网站有利于创建网站和站点导航的整体外观。

网站的大小通常决定了规划时必须处理的工作量。一个只提供静态信息的小册子式的小型网站是一种相对基本的网站,它只需少量规划即可。而如果一个网站要访问数据存储区并对用户进行身份验证,同时还具有本地化和辅助功能约束,则需要进行更多的规划。制定计划将有助于节省网站开发和维护的时间。

下列主题涉及与网站整体有关的信息,包括以下几个方面:

  • 所选网站的类型。

  • 如何在网站中导航。

  • 如何为网站中的所有页面创建一致的外观和布局。

  • 如何访问数据存储区中的数据。

确定网站项目类型

在 Visual Studio 2008 中可以创建两种项目。默认的网站项目模型使用文件目录结构定义项目的内容。在此模型中不存在项目文件,目录中的所有文件都是项目的组成部分。

与此相反,在 Web 应用程序项目中,只有在解决方案的项目文件中显式引用的文件才是项目的组成部分。这些文件显示在“解决方案资源管理器”中,它们是生成过程中唯一进行编译的文件。

Web 应用程序项目中的项目文件有助于实现某些方案。例如,通过在几个不同的项目文件中引用文件,可以将一个 ASP.NET 应用程序分为多个 Visual Studio 项目。此外,还可以方便地从项目中排除文件。

当您需要执行下列操作时,请使用 Web 应用程序项目:

  • 将大型 Visual Studio .NET 2003 应用程序迁移至 Visual Studio 2008。

  • 控制输出程序集的名称。

  • 使用独立的类引用页面类和用户控件类。

  • 使用多个 Web 项目生成 Web 应用程序。

  • 在编译过程中添加预先生成和后期生成步骤。

访问数据存储区中的数据

利用 ASP.NET 数据绑定,既可以将组件绑定到源,也可以将组件绑定到简单的属性、集合、表达式和方法。这在要使用数据库或其他源中的数据时,可提供更大的灵活性。

如果网站要访问数据存储区,则应考虑使用数据源控件,因为它们是通用数据模式的一部分。此数据模式可分离构成网站表示层的网页中的数据访问代码和业务逻辑代码。数据访问层由用于访问数据存储区的方法组成。业务逻辑层用于向数据访问层添加规则,例如对可以查看或更改数据的人员进行访问限制。表示层由用户有权查看和修改数据的页面组成。有关如何创建这些层的更多信息,请参见演练:在 ASP.NET 中创建数据访问和业务逻辑层

通过使用 ASP.NET 中的数据源模型将表示层与数据层和业务逻辑层分开,可以实现此通用数据模式。借助 LinqDataSourceObjectDataSourceSqlDataSource 等控件,可以创建与表示层分离的数据访问层和业务逻辑层。

此外,还应考虑网站是否必须使用内存中(缓存)的数据。如果大部分应用程序数据并不会频繁更改,且能够在会话或用户之间通用,则可以将数据保留在 Web 服务器上的内存中。这样可减少向数据库发出的请求数,从而提高用户交互的速度。内存中的数据库用 DataSet 类创建。DataSet 对象还有另一个用处,它允许应用程序将数据的子集从一个或多个数据源移至应用程序空间中。这样,应用程序既能处理内存中的数据,又能保留其关系形状。

站点导航

随着网站规模的增大以及在网站中不断移动网页,管理所有链接的工作可能会迅速变得非常困难。ASP.NET 站点导航包含一系列服务器控件和类,可用于为用户提供一致的站点导航方式。您可以将所有页面的链接都存储在一个中心位置(通常是一个 XML 文件)。通过添加 SiteMapDataSource 控件来读取网站信息,可以在每个页面的列表或导航菜单中呈现这些链接。随后,可以使用导航服务器控件(例如 TreeViewMenu 控件)来显示网站信息。

ASP.NET 站点导航的关键部分是网站地图提供程序。这是一个结合网站地图数据源公开导航信息的类。例如,默认的 ASP.NET 网站地图提供程序会从名为 Web.sitemap 的 XML 文件中获取网站地图数据,并将该数据直接传递给 SiteMapPath Web 服务器控件。

定义一致的网站外观

ASP.NET 的一些功能有助于为网站创建并维护一致的外观和设计,例如 ASP.NET 主题和 ASP.NET 母版页。在网站开发过程的早期,可以使用这些功能为网站提供一致的外观。

ASP.NET 主题定义了网站中页面和控件的外观。ASP.NET 主题可以包含定义 ASP.NET Web 服务器控件的属性设置的外观文件,也可以包含级联样式表文件(.css 文件)和图形。通过应用主题,可以为网站中的页面提供一致的外观。当在开发过程的早期为网站创建了一个或一组主题后,便可以将这些主题应用于每个新创建的页面。有关主题的更多信息,请参见 ASP.NET 主题和外观概述

使用 ASP.NET 母版页,可以创建能应用于网站中选定页面(内容页)的页面布局(母版页)。创建具有一致外观的网站时,使用母版页可大大地简化任务。您也可以嵌套母版页。例如,通过嵌套的母版页可以创建两个母板布局,一个用于网站整体,另一个用于网站的各个部分。此外,还可以将母版页与主题配合使用。有关母版页的更多信息,请参见 ASP.NET 母版页概述嵌套的 ASP.NET 母版页

添加 AJAX 功能

使用 ASP.NET 中的 AJAX 功能,可快速创建包含响应迅速的常见用户界面 (UI) 元素的网页,以提供丰富的用户体验。此外,它不需要回发即可刷新网页。AJAX 功能包括客户端脚本库,这些库将跨浏览器的 ECMAScript (JavaScript) 和动态的 HTML (DHTML) 技术结合在一起,并与基于 ASP.NET 服务器的开发平台集成。通过使用 AJAX 功能,可以改进用户体验并提高 Web 应用程序的效率。有关详细信息,请参见 ASP.NET AJAX 概述

使用状态管理功能

HTTP 是一种无状态协议。每个请求在到达后即被处理;当请求得到处理后,将丢弃所有数据。即使是来自同一客户端的请求,也不保留它们的状态。但是,对于大多数 Web 应用程序而言,保留请求间的状态十分有用。

ASP.NET 提供了内部状态管理功能,它使您能够存储页请求期间的信息,例如客户信息或购物车的内容。您可以保存和管理应用程序特定、会话特定、页特定、用户特定和开发人员定义的信息。ASP.NET 具有多种状态管理形式可供选择,包括使用 cookie、视图状态、会话状态、应用程序状态和配置文件属性。此信息可以独立于页上的任何控件。

在规划网站时,应考虑需要使用哪种状态管理形式。有关更多信息,请参见 ASP.NET 状态管理概述

缓存数据以提高性能

一般而言,通过将访问频繁的数据以及创建过程需要大量处理时间的数据存储在内存中,可以提高网站的性能。例如,如果应用程序使用复杂的逻辑来处理大量数据,然后再将数据作为报表返回,则通过避免在用户每次请求报表时都重新创建报表,可以提高效率。同样,当应用程序包含一个用于处理复杂数据但不需要经常更新的页时,如果服务器对每个请求都重新创建该页,则会降低效率。

ASP.NET 缓存是一个通用的网站缓存工具。它提供了一个用于缓存的简单接口,以及一个用于公开过期和更改依赖项服务的高级接口。为帮助提高应用程序在这些情况下的性能,ASP.NET 提供了两种缓存机制。第一种机制是应用程序缓存,它允许缓存所生成的数据,例如 DataSet 或自定义报表业务对象。第二种机制是页输出缓存,它保存页处理输出,并在用户再次请求该页时,重用所保存的输出,而不是再次处理该页。如果在网站设计中考虑到缓存特定的页,则可以创建出更为高效的网站。

安全基础结构

除了 .NET Framework 的安全功能外,ASP.NET 还提供了一个安全基础结构,可用于对用户访问进行身份验证和授权,并执行其他与安全相关的功能。通过 IIS 提供的 Windows 身份验证,可以验证用户的身份。您也可以使用 ASP.NET Forms 身份验证和 ASP.NET 成员资格来管理身份验证。此外,通过 Windows 组或使用自定义角色数据库和 ASP.NET 角色,还可以管理对 Web 应用程序资源的访问授权。您可以根据应用程序的需要方便地移除、添加或替换这些方案。有关更多信息,请参见下列主题:

ASP.NET 始终使用特定的 Windows 标识运行,从而可以使用 NTFS 文件系统访问控制列表 (ACL) 和数据库权限等 Windows 功能来确保应用程序的安全。有关 ASP.NET 在运行时所使用的标识的更多信息,请参见配置 ASP.NET 进程标识ASP.NET 模拟

其他注意事项

本节中的主题是开始编写网站之前应考虑的主题。通过在规划时纳入这些主题中的信息,既可以节省时间,又能使网站符合当前的 Web 标准。

辅助功能

辅助功能编程是指设计和开发应用程序,以便在计算机操作系统上为存在特定障碍(例如行动不便或患有视觉障碍)的人士提供便利的过程。ASP.NET 可以帮助您创建残障人士可以访问的 Web 应用程序。具有辅助功能的 Web 应用程序使用户可以利用屏幕阅读器等辅助技术使用网页。此外,这些应用程序还具有下列优点:

  • 可由有可能是最广泛的用户使用。

  • 所涉及的设计原则往往使所有用户而不仅是残障人士受益。

  • 满足了要求所有 Web 应用程序都具有辅助功能的许多机构的需求。

了解辅助功能指南以及 ASP.NET 如何帮助您符合这些指南,从而可以创建使残障人士更容易与之交互的应用程序。有关辅助功能准则的更多信息,请参见 ASP.NET 中的辅助功能支持

大多数情况下,ASP.NET 控件都会呈现用于创建符合辅助功能标准的页面的标记。它们还可能公开可通过设置而让页面具有可访问性的属性。但有时 ASP.NET 控件呈现的输出并不符合所有辅助功能标准。有关详细信息,请参见 ASP.NET 控件和辅助功能

全球化和本地化

全球化是设计和开发适合不同区域性的应用程序的过程。本地化是为给定的区域性和区域设置自定义应用程序的过程。如果您创建的网页将由使用不同语言的用户阅读,则必须使这些读者能够用自己的语言查看该页面。利用 ASP.NET,可以使创建的页面基于浏览器的首选语言设置或用户显式选择的语言获取内容和其他数据。其中,内容和其他数据称为资源,此类数据可以存储在资源文件或其他源中。在 ASP.NET 网页中,可以将控件配置为从资源获取其属性值。在运行时,资源表达式将被相应资源文件中的资源替换。有关更多信息,请参见 ASP.NET 网页资源概述

生成各个页和重新编译

生成页或网站是开发站点的一部分,旨在帮助您发现站点中随处可能发生的编译时错误。尽管生成过程会编译页面,但是它不会产生可部署的程序集。

通过将网站中的所有文件都复制到成品服务器中,无需编译即可部署网站。当用户从成品服务器请求页时,ASP.NET 将动态编译网站,并有效地执行与 Visual Studio 中的生成过程相同的步骤(ASP.NET 会缓存得到的输出,这样就不必在每次请求时都重新编译页)。

如果要将站点编译为可部署的程序集和其他文件,您可以发布站点。发布执行与生成相同的编译步骤,但是它将输出保存到一个文件夹及其子文件夹中,稍后可将该文件夹及其子文件夹部署到成品服务器中。

有关更多信息,请参见 ASP.NET 部署概述

请参见

概念

ASP.NET 概述