在 Windows 窗体和 Web 窗体之间作出抉择

更新:2007 年 11 月

当您开始开发带有用户界面的应用程序时,可以使用 Windows 窗体或 Web 窗体。两者在开发环境中都具有完全的设计时支持,并且可以提供丰富的用户界面和高级应用程序功能以解决业务问题。由于这种功能相似性,要决定哪种技术适合给定的应用程序可能有点困难。

应用程序方面的某些考虑可以使选择变得更容易。例如,如果您创建的是一个公众可以通过 Internet 访问的电子商务网站,则应该使用 Web 窗体页开发此应用程序。如果正在生成需要利用客户端计算机的全部功能,并且处理的工作量很大,要求响应迅速的应用程序(比如办公室工作效率应用程序),那么应该使用 Windows 窗体。可是在其他情况下,选择也许并不如此明晰。

下面的章节讨论了每种技术的功能和特点,以帮助确定哪种技术最适合您的应用程序。

何时使用 Windows 窗体

如果希望客户端应用程序负责应用程序中的大部分处理任务,应该使用 Windows 窗体开发应用程序。这些客户端应用程序包括传统上在早期版本的 Visual Basic 和 Visual C++ 中开发的 Win32 桌面应用程序。绘图或图形应用程序、数据输入系统、销售点系统和游戏都属于这类应用程序。

这些应用程序都依靠桌面计算机的处理能力和高性能内容显示。有些 Windows 窗体应用程序可能完全独立,它们在用户的计算机上执行所有的应用程序处理。通常以这种方式来编写游戏。其他应用程序可能是大型系统的一部分,它们主要使用桌面计算机来处理用户输入。例如,销售点系统常要求在桌面计算机上创建具有响应能力的复杂用户界面,同时将该界面链接到其他执行后端处理的组件。

使用 Windows 窗体的 Windows 应用程序是在 Windows 框架中生成的,因此它可以访问客户端计算机上的系统资源,包括本地文件、Windows 注册表、打印机等。可限制该访问级别,以消除由不希望的访问引起的任何安全性风险或潜在问题。另外,Windows 窗体可以利用 .NET FrameworkGDI+ 图形类创建图形化的丰富界面,而这常常是数据挖掘或游戏应用程序所必需的。

何时使用 Web 窗体

使用 ASP.NET Web 窗体创建主要由一个浏览器用户界面组成的应用程序。这自然包括希望让公众可通过万维网使用的应用程序,比如电子商务应用程序。但是 Web 窗体并不仅仅用于创建网站,许多其他应用程序同样适用于“瘦前端”,比如基于 Internet 的雇员手册或津贴应用程序。任何 Web 窗体应用程序都有一个重要的优点,就是无需发行成本。用户已经安装了所需的唯一一个应用程序——浏览器。

Web 窗体应用程序与平台无关,即它们是“延伸”的应用程序。不论用户的浏览器类型是什么,也不论使用的计算机类型是什么,他们都可以与应用程序进行交互。同时,可优化 Web 窗体应用程序,以利用最新浏览器(如 Microsoft Internet Explorer 6.0)中的内置功能来增强性能和响应能力。

说明:

在许多情况下,此优化内置于使用的 Web 窗体组件。这些组件可以自动检测浏览器级别,并相应检测呈现页。

Web 窗体应用程序提供了一些即使在非 Web 上下文中依然有用的功能。因为这些功能依赖于 HTML,Web 窗体应用程序适合任何种类的文本密集型应用程序,尤其适合那些文本格式设置对其很重要的应用程序。基于浏览器的应用程序对用户的系统资源的访问权限有限,在希望防止用户访问某部分应用程序的情况下,这种限制使 Web 窗体应用程序十分有帮助。

Windows 窗体和 Web 窗体的比较

下表提供了不同应用程序标准的并列比较,以及 Windows 窗体和 Web 窗体技术是如何处理这些标准的。

功能/标准

Windows 窗体

Web 窗体

部署

Windows 窗体允许使用 ClickOnce 进行“非接触”部署,即可以直接在用户的计算机上下载、安装和运行应用程序,而不必改变注册表。有关 ClickOnce 的更多信息,请参见 ClickOnce 部署概述

Web 窗体没有客户端部署;客户端只需要一个浏览器。服务器必须运行 Microsoft .NET Framework。对应用程序的更新通过在服务器上更新代码来完成。

图形

Windows 窗体包括 GDI+,它使得游戏和其他有非常丰富的图形的环境可以有复杂的图形。

在 Web 窗体中使用时,交互式图形或动态图形需要来回访问服务器以进行更新。可以在服务器上使用 GDI+ 来创建自定义图形。

响应

Windows 窗体可以完全在客户端计算机上运行;它们能够为需要高度交互的应用程序提供最快的响应速度。

如果知道用户有 Internet Explorer 5 或更新版本,Web 窗体应用程序可以利用浏览器的动态 HTML (DHTML) 功能来创建丰富的、具有响应能力的用户界面 (UI)。如果用户有其他浏览器,大多数处理(包括与用户界面相关的任务,比如验证)需要往返于 Web 服务器,而这会影响响应。

窗体和文本流控制

Windows 窗体网格定位可以对控件的位置提供精确的二维(x 和 y 坐标)控制。

若要在 Windows 窗体上显示文本,请将文本插入到控件(例如 Label 控件、TextBox 控件或 RichTextBox 控件)中。格式化将受到限制。

Web 窗体基于 HTML 样式流布局,因此支持网页面布局的所有功能。它在文本格式设置方面的功能尤其强大。

可以充分地管理控件布局(有某些限制,例如不能重叠控件)。如果用户有支持 DHTML 的浏览器,可以用二维(x 和 y 坐标)布局来指定更精确的布局。

平台

Windows 窗体需要在客户端计算机上运行 .NET Framework。

Web 窗体只需要一个浏览器。支持 DHTML 的浏览器可以利用额外的功能,而 Web 窗体可以被设计为适用于所有的浏览器。Web 服务器必须运行 .NET Framework。

访问本地资源(文件系统、Windows 注册表等)

如果允许,应用程序对本地计算机资源可拥有完全访问权。如果需要,可以精确地限制应用程序,使其不能使用特定的资源。

浏览器安全性防止应用程序访问本地计算机上的资源。

编程模型

Windows 窗体基于客户端 Win32 消息转储模式,开发人员在此模式中创建、使用和放弃组件的实例。

Web 窗体依赖于很大程度上异步的断开连接模型,在此模型中,组件松散地耦合到应用程序前端。通常,应用程序组件通过 HTTP 调用。此模型可能不适合要求用户端有极大吞吐量的应用程序或具有大量事务处理的应用程序。同样,Web 窗体应用程序可能不适合需要高级别并发控制(例如,保守式锁定)的数据库应用程序。

安全性

Windows 窗体在其代码访问安全性实现中使用权限,以保护计算机资源和敏感信息。这使功能得以被小心公开,同时保留安全性。例如打印权限,在某一级别上只允许在默认打印机上打印,在另一级别上则允许在任何一台打印机上打印。使用 ClickOnce,开发人员可以轻松地配置应用程序应该和不应该向客户端要求什么权限。有关更多信息,请参见 ClickOnce 部署和安全

通常,通过验证请求者的凭据(例如,名称/密码对),按 URL 控制获得访问 Web 应用程序资源的授权。Web 窗体允许开发人员控制执行服务器应用程序代码所使用的标识。应用程序可以用请求实体的标识来执行代码,这称作“模拟”。应用程序也可以根据请求者的标识或角色来动态调整内容。例如,经理可以访问某一站点或更高级别的内容,而拥有较低权限的人则不能这样做。

请参见

概念

ClickOnce 部署概述

参考

Windows 窗体概述