什么是Web Forms

ASP.NET Web Forms 是 ASP.NET Web 应用程序框架的一部分,包含在 Visual Studio 中。 它是可用于创建 ASP.NET Web 应用程序的四个编程模型之一,其他模型是 ASP.NET MVC、ASP.NET 网页和 ASP.NET 单页应用程序。

Web Forms是用户使用浏览器请求的页面。 可以使用 HTML、客户端脚本、服务器控件和服务器代码的组合编写这些页面。 当用户请求页面时,框架会在服务器上对其进行编译和执行,然后框架会生成浏览器可以呈现的 HTML 标记。 ASP.NET Web Forms页在任何浏览器或客户端设备中向用户显示信息。

使用 Visual Studio 可以创建 ASP.NET Web Forms。 Visual Studio 集成开发环境 (IDE) 允许拖放服务器控件来布局Web Forms页。 然后,可以轻松地为页面上或页面本身的控件设置属性、方法和事件。 这些属性、方法和事件用于定义网页的行为、外观等。 若要编写服务器代码来处理页面的逻辑,可以使用 .NET 语言(如 Visual Basic 或 C#)。

注意

ASP.NET 和 Visual Studio 文档跨多个版本。 突出显示以前版本中的功能的主题对于使用最新版本的当前任务和方案可能很有用。

ASP.NET Web Forms为:

  • 基于 Microsoft ASP.NET 技术,在服务器上运行的代码会动态生成浏览器或客户端设备的网页输出。
  • 与任何浏览器或移动设备兼容。 ASP.NET 网页会自动为样式、布局等功能呈现正确的浏览器兼容 HTML。
  • 与 .NET 公共语言运行时支持的任何语言(如 Microsoft Visual Basic 和 Microsoft Visual C#)兼容。
  • 基于 Microsoft .NET Framework构建。 这提供了框架的所有优势,包括托管环境、类型安全性和继承。
  • 灵活,因为可以向其添加用户创建的控件和第三方控件。

ASP.NET Web Forms套餐:

  • 将 HTML 和其他 UI 代码与应用程序逻辑分离。
  • 适用于常见任务(包括数据访问)的丰富服务器控件套件。
  • 功能强大的数据绑定,提供强大的工具支持。
  • 支持在浏览器中执行的客户端脚本。
  • 支持各种其他功能,包括路由、安全性、性能、国际化、测试、调试、错误处理和状态管理。

ASP.NET Web Forms帮助你克服挑战

Web 应用程序编程提出了在对基于客户端的传统应用程序进行编程时通常不会出现的挑战。 挑战包括:

  • 实现丰富的 Web 用户界面 - 使用基本 HTML 设施设计和实现用户界面可能很困难和繁琐,尤其是在页面布局复杂、动态内容大量以及功能齐全的用户交互对象的情况下。
  • 客户端和服务器的分离 - 在 Web 应用程序中,客户端 (浏览器) 和服务器是通常在不同的计算机上运行的不同程序, (,甚至在不同的操作系统) 。 因此,应用程序的两半共享信息非常少;它们可以通信,但通常只交换小块的简单信息。
  • 无状态执行 - Web 服务器收到页面请求时,它会查找页面、对其进行处理、将其发送到浏览器,然后放弃所有页面信息。 如果用户再次请求同一页,服务器将重复整个序列,从头开始重新处理页面。 换句话说,服务器没有已处理页面的内存 - 页是无状态的。 因此,如果应用程序需要维护有关页面的信息,则其无状态性质可能会成为问题。
  • 未知的客户端功能 - 在许多情况下,Web 应用程序可供使用不同浏览器的许多用户访问。 浏览器具有不同的功能,因此很难创建在所有浏览器上运行同样良好的应用程序。
  • 数据访问的复杂性 - 在传统 Web 应用程序中读取和写入数据源可能很复杂,而且会占用大量资源。
  • 可伸缩性的复杂性 - 在许多情况下,使用现有方法设计的 Web 应用程序无法满足可伸缩性目标,因为应用程序的各个组件之间缺乏兼容性。 对于在繁重的增长周期下的应用程序,这通常是一个常见的故障点。

应对 Web 应用程序的这些挑战可能需要大量的时间和精力。 ASP.NET Web Forms和 ASP.NET 框架通过以下方式解决这些挑战:

  • 直观、一致的对象模型 - ASP.NET 页面框架提供了一个对象模型,使你可以将表单视为一个单元,而不是单独的客户端和服务器部分。 在此模型中,可以采用比传统 Web 应用程序更直观的方式对页面进行编程,包括设置页面元素的属性和响应事件的功能。 此外,ASP.NET 服务器控件是 HTML 页面的物理内容以及浏览器与服务器之间的直接交互的抽象。 通常,可以按照在客户端应用程序中使用控件的方式使用服务器控件,无需考虑如何创建 HTML 来显示和处理控件及其内容。
  • 事件驱动的编程模型 - ASP.NET Web Forms为 Web 应用程序带来了熟悉的模型,即为客户端或服务器上发生的事件编写事件处理程序。 ASP.NET 页框架以这样一种方式抽象化此模型,即捕获客户端上的事件、将事件传输到服务器以及调用相应方法的基础机制都是自动的,并且对你不可见。 结果是一个清晰、易于编写的代码结构,支持事件驱动开发。
  • 直观的状态管理 - ASP.NET 页框架自动处理维护页面及其控件的状态的任务,并提供维护特定于应用程序的信息的状态的明确方法。 无需大量使用服务器资源即可完成此操作,并且可以通过或不向浏览器发送 Cookie 来实现。
  • 与浏览器无关的应用程序 - ASP.NET 页框架使你能够在服务器上创建所有应用程序逻辑,而无需显式编写浏览器差异的代码。 但是,它仍然允许你通过编写客户端代码来利用特定于浏览器的功能,以提供改进的性能和更丰富的客户端体验。
  • .NET Framework公共语言运行时支持 - ASP.NET 页框架基于.NET Framework构建,因此整个框架可供任何 ASP.NET 应用程序使用。 可以使用与运行时兼容的任何语言编写应用程序。 此外,使用.NET Framework提供的数据访问基础结构(包括 ADO.NET)简化了数据访问。
  • .NET Framework可缩放的服务器性能 - ASP.NET 页框架使你能够将 Web 应用程序从一台具有单个处理器的计算机完全扩展到多计算机 Web 场,而无需对应用程序的逻辑进行复杂的更改。

ASP.NET Web Forms的功能

  • 服务器控件 - ASP.NET Web 服务器控件是 ASP.NET 网页上的对象,这些对象在请求页面时运行,并将标记呈现给浏览器。 许多 Web 服务器控件类似于熟悉的 HTML 元素,例如按钮和文本框。 其他控件包括复杂行为,例如日历控件,以及可用于连接到数据源和显示数据的控件。
  • 母版页 - ASP.NET 母版页使你可以为应用程序中的页面创建一致的布局。 可以使用单个母版页定义应用程序中所有页(或一组页)的外观和标准行为。 然后,你可以创建包含想要显示的内容的各个内容页。 当用户请求内容页时,他们会与母版页合并以生成输出,该输出将母版页的布局与内容页中的内容组合在一起。
  • 使用 Data- ASP.NET 提供了许多用于存储、检索和显示数据的选项。 在 ASP.NET Web Forms应用程序中,使用数据绑定控件在网页 UI 元素(如表格、文本框和下拉列表)中自动呈现或输入数据。
  • 成员身份 - ASP.NET 标识将用户的凭据存储在应用程序创建的数据库中。 当用户登录时,应用程序将通过读取数据库来验证其凭据。 项目的 “帐户” 文件夹包含实现成员资格的各个部分的文件:注册、登录、更改密码和授权访问权限。 此外,ASP.NET Web Forms支持 OAuth 和 OpenID。 这些身份验证增强功能允许用户使用现有凭据从 Facebook、Twitter、Windows Live 和 Google 等帐户登录到站点。 默认情况下,模板在 SQL Server Express LocalDB 实例(Visual Studio Express 2013 for Web 附带的开发数据库服务器)上使用默认数据库名称创建成员身份数据库。
  • 客户端脚本和客户端框架 - 可以通过在 ASP.NET Web 窗体页中包含客户端脚本功能来增强 ASP.NET 的基于服务器的功能。 可以使用客户端脚本向用户提供更丰富、响应更快速的用户界面。 当页面在浏览器中运行时,还可以使用客户端脚本对 Web 服务器进行异步调用。
  • 路由 - URL 路由允许将应用程序配置为接受不映射到物理文件的请求 URL。 请求 URL 只是用户在浏览器中输入以查找网站上的页面的 URL。 使用路由来定义对用户具有语义意义的 URL,并有助于搜索引擎优化 (SEO) 。
  • 状态管理 - ASP.NET Web Forms包括多个选项,可帮助你根据每页和应用程序范围保留数据。
  • 安全性 - 开发更安全的应用程序的一个重要部分是了解对应用程序的威胁。 Microsoft 已开发出一种对威胁进行分类的方法:欺骗、篡改、否认、信息泄露、拒绝服务、特权提升 (STRIDE) 。 在 ASP.NET Web Forms 中,可以添加扩展点和配置选项,使你能够在 ASP.NET Web Forms 中自定义各种安全行为。
  • 性能 - 性能可能是成功网站或项目的关键因素。 ASP.NET Web Forms允许修改与页面和服务器控制处理、状态管理、数据访问、应用程序配置和加载以及高效编码做法相关的性能。
  • 国际化 - ASP.NET Web Forms使你能够创建网页,这些网页可以根据浏览器的首选语言设置或用户的显式语言选择来获取内容和其他数据。 内容和其他数据称为资源,此类数据可以存储在资源文件或其他源中。 在 ASP.NET Web Forms页中,将控件配置为从资源获取其属性值。 在运行时,资源表达式将替换为相应本地化资源文件中的资源。
  • 调试和错误处理 - ASP.NET 包括有助于诊断Web Forms应用程序中可能出现的问题的功能。 ASP.NET Web Forms内非常支持调试和错误处理,以便有效地编译和运行应用程序。
  • 部署和托管 - Visual Studio、ASP.NET、Azure 和 IIS 提供的工具可帮助你部署和托管Web Forms应用程序。

决定何时创建Web Forms应用程序

必须仔细考虑是使用 ASP.NET Web Forms 模型还是使用其他模型(如 ASP.NET MVC 框架)实现 Web 应用程序。 MVC 框架未取代 Web 窗体模型;您可以对 Web 应用程序使用任一框架。 在决定对特定网站使用Web Forms模型或 MVC 框架之前,请权衡每种方法的优点。

基于 Web 窗体的 Web 应用程序的优点

基于 Web 窗体的框架具有以下优点:

  • 它支持通过 HTTP 保留状态的事件模型,这有益于开发业务线 Web 应用程序。 基于 Web 窗体的应用程序提供了在数百个服务器控件中受支持的许多事件。
  • 它使用页面控制器模式向单个页面添加功能。 有关详细信息,请参阅 页面控制器
  • 它使用视图状态或基于服务器的表单,这使得管理状态信息变得更加容易。
  • 它非常适合想要利用大量组件快速开发应用程序的 Web 开发人员和设计人员的小型团队。
  • 通常,应用程序开发不太复杂,因为 页面类、 控件等 (组件) 紧密集成,并且通常比 MVC 模型所需的代码更少。

基于 MVC 的 Web 应用程序的优点

ASP.NET MVC 框架具有以下优点:

  • 通过将应用程序分为模型、视图和控制器,化繁为简的工作更加轻松。
  • 它不使用视图状态或基于服务器的窗体。 这使得 MVC 框架特别适合想要完全控制应用程序行为的开发人员。
  • 它使用一种通过单一控制器处理 Web 应用程序请求的前端控制器模式。 这使您可以设计一个支持丰富路由基础结构的应用程序。 有关详细信息,请参阅 前端控制器
  • 它为测试驱动的开发 (TDD) 提供了更好的支持。
  • 它适用于需要高度控制应用程序行为的大型开发人员和 Web 设计人员团队支持的 Web 应用程序。