ASP.NET Web 窗体是 ASP.NET Web 应用程序框架的一部分,包含在 Visual Studio 中。 它是可用于创建 ASP.NET Web 应用程序的四种编程模型之一,其他编程模型 ASP.NET MVC、ASP.NET 网页和 ASP.NET 单页应用程序。
网页表单是用户使用浏览器请求的页面。 可以使用 HTML、客户端脚本、服务器控件和服务器代码的组合编写这些页面。 当用户请求页面时,框架将在服务器上编译并执行该页面,然后框架将生成浏览器可以呈现的 HTML 标记。 ASP.NET Web 窗体页面在任何浏览器或客户端设备中向用户显示信息。
使用 Visual Studio,可以创建 ASP.NET Web 窗体。 Visual Studio 集成开发环境(IDE)允许拖放服务器控件来布局 Web 窗体页面。 然后,可以轻松为页面上的控件或页面本身设置属性、方法和事件。 这些属性、方法和事件用于定义网页的行为、外观等。 若要编写服务器代码来处理页面的逻辑,可以使用 Visual Basic 或 C# 等 .NET 语言。
注释
ASP.NET 和 Visual Studio 文档跨越多个版本。 突出显示以前版本中的功能的主题对于使用最新版本的当前任务和方案可能很有用。
ASP.NET Web 窗体包括:
- 根据Microsoft ASP.NET 技术,服务器上运行的代码动态生成浏览器或客户端设备的网页输出。
- 与任何浏览器或移动设备兼容。 ASP.NET 网页会自动为样式、布局等功能呈现与浏览器兼容的正确 HTML。
- 与 .NET 公共语言运行时支持的任何语言(如 Microsoft Visual Basic 和 Microsoft Visual C#)兼容。
- 基于 Microsoft .NET Framework 构建。 这提供了框架的所有优势,包括托管环境、类型安全性和继承。
- 灵活,因为你可以向其添加用户创建和第三方控件。
ASP.NET Web 窗体产品/服务:
- 将 HTML 和其他 UI 代码与应用程序逻辑分离。
- 适用于常见任务的丰富服务器控件套件,包括数据访问。
- 强大的数据绑定,具有出色的工具支持。
- 支持在浏览器中执行的客户端脚本。
- 支持多种其他功能,包括路由、安全性、性能、国际化、测试、调试、错误处理和状态管理。
ASP.NET Web 窗体可帮助你克服挑战
Web 应用程序编程带来了在对传统基于客户端的应用程序进行编程时通常不会出现的挑战。 挑战包括:
- 实现丰富的 Web 用户界面 - 使用基本 HTML 设施设计和实现用户界面可能很困难和繁琐,尤其是在页面具有复杂的布局、大量的动态内容和功能齐全的用户交互对象时。
- 客户端和服务器分离 - 在 Web 应用程序中,客户端(浏览器)和服务器是不同计算机(甚至在不同的操作系统上)上运行的不同程序。 因此,应用程序的两半共享很少的信息:它们可以进行通信,但通常只交换少量的简单信息。
- 无状态执行 - 当 Web 服务器收到页面请求时,它会查找页面、处理该页面、将其发送到浏览器,然后丢弃所有页面信息。 如果用户再次请求同一页,服务器将重复整个序列,从头开始重新处理页面。 换句话说,服务器没有已处理的页的内存-页是无状态的。 因此,如果应用程序需要维护有关页面的信息,则其无状态性质可能会成为问题。
- 未知的客户端功能 - 在许多情况下,使用不同浏览器的很多用户都可以访问 Web 应用程序。 浏览器具有不同的功能,因此很难创建一个在所有这些应用程序上运行同样良好的应用程序。
- 数据访问的复杂性 - 在传统 Web 应用程序中读取和写入数据源可能很复杂,资源密集型。
- 可伸缩性的复杂性 - 在许多情况下,使用现有方法设计的 Web 应用程序无法达到可伸缩性目标,因为应用程序的各个组件之间缺乏兼容性。 这通常是在繁重增长周期下应用程序的常见故障点。
应对 Web 应用程序的这些挑战可能需要大量的时间和精力。 ASP.NET Web 窗体和 ASP.NET 框架通过以下方式解决这些挑战:
- 直观、一致的对象模型 - ASP.NET 页面框架提供了一个对象模型,使你可以将窗体视为一个单元,而不是单独的客户端和服务器部分。 在此模型中,可以比传统 Web 应用程序更直观地对页面进行编程,包括设置页面元素的属性并响应事件的能力。 此外,ASP.NET 服务器控件对 HTML 页面的物理内容以及浏览器与服务器之间的直接交互进行了抽象化处理。 通常,可以使用服务器控件的方式处理客户端应用程序中的控件,无需考虑如何创建 HTML 来呈现和处理控件及其内容。
- 事件驱动的编程模型 - ASP.NET 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 窗体的功能
- 服务器控件 - ASP.NET Web 服务器控件是 ASP.NET 网页上的对象,这些网页在请求页面时运行,并将标记呈现给浏览器。 许多 Web 服务器控件类似于熟悉的 HTML 元素,例如按钮和文本框。 其他控件包括复杂行为,例如日历控件,以及可用于连接到数据源和显示数据的控件。
- 母版页 - ASP.NET 母版页允许为应用程序中的页面创建一致的布局。 单个母版页定义应用程序中所有页面(或一组页面)所需的外观和标准行为。 然后,可以创建包含要显示的内容的单个内容页。 当用户请求内容页时,它们与母版页合并,以生成将母版页布局与内容页面中的内容相结合的输出。
- 使用数据 ASP.NET 提供了许多用于存储、检索和显示数据的选项。 在 ASP.NET Web 窗体应用程序中,使用数据绑定控件自动呈现或输入网页 UI 元素中的数据,例如表格和文本框和下拉列表。
- 成员身份 - ASP.NET 标识将用户的凭据存储在应用程序创建的数据库中。 当用户登录时,应用程序通过读取数据库来验证其凭据。 项目的 帐户 文件夹包含实现成员身份的各个部分的文件:注册、登录、更改密码和授权访问。 此外,ASP.NET Web 窗体支持 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 窗体包括多个选项,可帮助你在每页和应用程序范围内保留数据。
- 安全性 - 开发更安全的应用程序的一个重要部分是了解应用程序的威胁。 Microsoft已经制定了一种方法来对威胁进行分类:欺骗、篡改、否认、信息泄露、拒绝服务、特权提升(STRIDE)。 在 ASP.NET Web 窗体中,可以添加扩展点和配置选项,以便自定义 ASP.NET Web 窗体中的各种安全行为。
- 性能 - 性能可能是成功网站或项目中的一个关键因素。 ASP.NET Web 窗体允许修改与页面和服务器控制处理、状态管理、数据访问、应用程序配置和加载以及高效编码做法相关的性能。
- 国际化 - ASP.NET Web 窗体使你可以创建网页,这些网页可以根据浏览器的首选语言设置或用户明确选择的语言来获取内容和其他数据。 内容和其他数据称为资源,此类数据可以存储在资源文件或其他源中。 在 ASP.NET Web 窗体页中,将控件配置为从资源获取其属性值。 在运行时,资源表达式将替换为相应本地化资源文件中的资源。
- 调试和错误处理 - ASP.NET 包括有助于诊断 Web 窗体应用程序中可能出现的问题的功能。 调试和错误处理在 ASP.NET Web 窗体中得到很好的支持,以便应用程序能够有效地编译和运行。
- 部署和托管 - Visual Studio、ASP.NET、Azure 和 IIS 提供了有助于部署和托管 Web 窗体应用程序的工具。
决定何时创建 Web 窗体应用程序
必须使用 ASP.NET Web 窗体模型或其他模型(如 ASP.NET MVC 框架)仔细考虑是否实现 Web 应用程序。 MVC 框架不替换 Web 窗体模型;可以将任一框架用于 Web 应用程序。 在决定对特定网站使用 Web 窗体模型或 MVC 框架之前,请权衡每种方法的优点。
基于Web表单的Web应用的优点
基于 Web 窗体的框架具有以下优势:
- 它支持通过 HTTP 保留状态的事件模型,这有利于业务线 Web 应用程序开发。 基于 Web 窗体的应用程序提供在数百个服务器控件中支持的数十个事件。
- 它使用页面控制器模式向各个页面添加功能。 有关详细信息,请参阅 页面控制器。
- 它使用视图状态或基于服务器的表单,这使得管理状态信息更容易。
- 非常适合希望利用大量可用于快速应用程序开发的组件的小型 Web 开发人员和设计人员团队。
- 一般情况下,应用程序开发不太复杂,因为组件( Page 类、控件等)紧密集成,并且通常需要比 MVC 模型更少的代码。
MVC-Based Web 应用程序的优点
ASP.NET MVC 框架具有以下优势:
- 通过将应用程序划分为模型、视图和控制器,可以更轻松地管理复杂性。
- 它不使用视图状态或基于服务器的表单。 这使得 MVC 框架非常适合希望完全控制应用程序行为的开发人员。
- 它使用前端控制器模式来处理通过单个控制器发出的 Web 应用程序请求。 这样,便可以设计支持丰富路由基础结构的应用程序。 有关详细信息,请参阅 Front Controller。
- 它为体验驱动开发(TDD)提供更好的支持。
- 它适用于大型开发人员和 Web 设计器团队支持的 Web 应用程序,这些开发人员和 Web 设计人员需要高度控制应用程序行为。