在.NET平台开发中,我们经常使用WinForm进行C/S架构的开发,也用过ASP.NET作为B/S架构开发。那么有些人可能糊涂了,不知道在这两者之间如何做选择了。其实作为将来要在.NET平台上做开发的工作者来说,无论如何都要同时掌握WinForm编程和ASP.NET编程。
当我们开始开发带有用户界面的应用程序时,可以使用WinForm或ASP.NET。两者在开发环境(Visual Studio系列)中都具有完全的设计时支持,并且可以提供丰富的用户界面和高级应用程序功能解决现实业务问题。由于这种“相似”,要决定采用哪种技术来实现软件可能有些困难。
关注软件的最终用途可以使选择变得相对容易。如果我们要开发的是一个公众可以通过Internet访问的电子商务网站,肯定采用ASP.NET来开发软件项目。如果我们要充分发挥客户端电脑的计算能力,并且客户端的处理工作量很大,需要快速响应用户请求,无疑应该使用WinForm。但是在其他情况下,选择也真的不是很明晰。
何时选择WinForm
如果客户端应用程序负责应用程序中的大部分处理任务,应该使用WinForm开发应用程序。这些客户端应用程序包括传统上在早期版本的VB和VC中开发的Win32桌面应用程序。绘图或图形应用程序、数据输入系统、POS系统和游戏都属于这类应用程序。
这些应用程序都依靠桌面计算机的处理能力和高性能数据显示。有些应用程序可能完全独立,它们在用户的计算机上执行所有的应用程序处理。通常以这种方式来编写游戏。其他应用程序可能是大型系统的一部分,它们主要使用桌面计算机来处理用户输入。例如,POS系统常要求在桌面计算机上创建具有响应能力的复杂用户界面,同时将该界面链接到其他执行后端处理的组件。
使用WinForm的应用程序是在Windows框架中生成的,因此它可以访问客户端计算机上的系统资源,包括本地文件、系统注册表、打印机等。可限制该访问级别,以消除由不希望的访问引起的任何安全性风险或潜在问题。另外,WinForm可以利用.NET Framework GDI+图形类创建丰富界面,而这常常是数据挖掘或游戏应用程序所必需的。
何时选择ASP.NET
使用ASP.NET创建主要由浏览器用户界面组成的应用程序。这自然包括希望让公众可通过万维网使用的应用程序,比如电子商务应用程序。但是ASP.NET并不仅仅用于创建网站,许多其他应用程序同样适用于“瘦客户端”,如基于Internet的雇员手册或津贴应用程序。任何ASP.NET应用程序都有一个重要的优点,就是没有客户端安装和维护的成本。用户已经安装了所需的唯一一个应用程序——浏览器。
ASP.NET应用程序与平台无关,即它们是“延伸”的应用程序。不论用户的浏览器类型是什么,也不论使用的计算机类型是什么,他们都可以与应用程序进行交互。同时,可优化ASP.NET应用程序,以利用最新浏览器中的内置功能来增强性能和响应能力。在许多情况下,此优化内置于使用的Web窗体组件。这些组件可以自动检测浏览器级别,并相应检测呈现页。
ASP.NET应用程序提供了一些即使在非Web环境中依然有用的功能。因为这些功能依赖于HTML,ASP.NET应用程序适合任何种类的文本密集型应用程序,尤其适合那些文本格式设置对其很重要的应用程序。基于浏览器的应用程序对用户的系统资源的访问权限有限,在希望防止用户访问某些应用程序的情况下,这种限制使ASP.NET应用程序很有价值。
WinForm与ASP.NET的比较
功能/标准 | WinForm | ASP.NET |
安装部署 | WinForm允许使用ClickOnce进行“非接触”部署,即可以直接在用户的计算机上下载、安装和运行应用程序,而不必改变注册表。 | ASP.NET没有客户端部署;客户端只需要一个浏览器。服务器必须运行Microsoft .NET Framework。对应用程序的更新通过在服务器上更新代码来完成。 |
图形 | WinForm包括 GDI+,它使得游戏和其他有非常丰富的图形的环境可以有复杂的图形。 | 在ASP.NET时,交互式图形或动态图形需要来回访问服务器以进行更新。可以在服务器上使用GDI+来创建自定义图形。 |
响应 | WinForm可以完全在客户端计算机上运行;它们能够为需要高度交互的应用程序提供最快的响应速度。 | 如果用户用较新的浏览器(IE5.0以上),ASP.NET应用程序可以利用浏览器的动态HTML(DHTML)功能来创建丰富的、具有响应能力的用户界面(UI)。如果用户有其他浏览器,大多数处理(包括与用户界面相关的任务,比如验证)需要往返于Web服务器,而这会影响响应,当然我们可以采用AJAX技术来改善应用体验。 |
窗体和文本流控制 | WinForm网格定位可以对控件的位置提供精确的二维(x和y坐标)控制。若要在Windows窗体上显示文本,一般将文本插入到控件(例如 Label控件、TextBox控件或RichTextBox控件)中。格式化将受到限制。 | ASP.NET界面基于HTML样式流布局,因此支持网页面布局的所有功能。它在文本格式设置方面的功能尤其强大。可以充分地管理控件布局(有某些限制,例如不能重叠控件)。如果用户有支持DHTML的浏览器,可以用二维(x和y坐标)布局来指定更精确的布局。 |
对于.NET Framework的依赖 | WinForm需要在客户端计算机上运行.NET Framework。 | ASP.NET客户端只需要一个浏览器。支持DHTML的浏览器可以利用额外的功能,而Web窗体可以被设计为适用于所有的浏览器。ASP.NET系统只需要在服务器运行.NET Framework。 |
访问本地资源(文件系统、系统注册表等) | 如果允许,应用程序对本地计算机资源可拥有完全访问权。如果需要,可以精确地限制应用程序,使其不能使用特定的资源。 | 浏览器安全性防止应用程序访问本地计算机上的资源。 |
编程模型 | WinForm基于客户端Win32消息转储模式,开发人员在此模式中创建、使用和销毁组件的实例。 | ASP.NET依赖于在很大程度上异步的断开连接模型,在此模型中,组件松散地耦合到应用程序前端。通常,应用程序组件通过HTTP协议调用。此模型可能不适合要求用户端有极大吞吐量的应用程序或具有大量事务处理的应用程序。同样,ASP.NET应用程序可能不适合需要高级别并发控制的数据库应用程序。 |
安全性 | WinForm在其代码访问安全性实现中使用权限,以保护计算机资源和敏感信息。这使功能得以被小心公开,同时保留安全性。例如打印权限,在某一级别上只允许在默认打印机上打印,在另一级别上则允许在任何一台打印机上打印。使用ClickOnce部署技术,开发人员可以轻松地配置应用程序应该和不应该向客户端要求什么权限。 | 通常,通过验证请求者的凭据(例如,名称/密码对),按URL控制获得访问ASP.NET应用程序资源的授权。ASP.NET允许开发人员控制执行服务器应用程序代码所使用的标识。应用程序可以用请求实体的标识来执行代码。应用程序也可以根据请求者的标识或角色来动态调整内容。例如,经理可以访问某一站点或更高级别的内容,而拥有较低权限的人则不能这样做。
|