异曲同工 WinForm和ASP.NET如何选?

在.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允许开发人员控制执行服务器应用程序代码所使用的标识。应用程序可以用请求实体的标识来执行代码。应用程序也可以根据请求者的标识或角色来动态调整内容。例如,经理可以访问某一站点或更高级别的内容,而拥有较低权限的人则不能这样做。

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-08-17 13:25:26

异曲同工 WinForm和ASP.NET如何选?的相关文章

winform和asp.net的问题?

问题描述 winform和asp.net的问题? 大家好,我用winform做了精品课程后台管理系统,实现了用户的注册.上传.下载课件等内容,并且把用户图像照片和课件的相对地址存入了SQL数据库!前台是用asp.net网站!请问asp.net怎么从数据库里面读取用户图像和课件信息并显示呢?用了本地绝对路径,但是asp.net里面还是不显示呀?高手们帮帮忙,谢谢! 解决方案 楼主 这是C#的一些项目实例代码 你可以参考一下http://download.csdn.net/album/detail/

Winform中如何删除DataGridUiew选中行的数据

问题描述 Winform中如何删除DataGridUiew选中行的数据并删除数据库中的信息 解决方案 解决方案二:adapter.update(ds.Table)解决方案三:首先要写删除的方法然后触发DataGridUiew点击事件获取点击所选中行的Id再进行删除解决方案四:数据库信息删除----updatedatagridview绑定数据源用法---搜索下

有什么免费的表格控件可推荐针对winform 和asp.net (类似fpSpread控件)

问题描述 winform和asp.net中需要用到一些表格数据处理(如财务表单),网上都是收费还很贵,如fpSpread,有没有针对.net的免费的控件可用.

以前是做 winform 和asp.net 的 现在公司让做 。net mvc 不会怎么办啊??

问题描述 我以前在学校学的是winform和asp.net现在找个公司要我做.netmvc而且算上我只有四个人用会.net都是老程序员以前是做java的看来我还是比较专业的我感觉压力好大啊明年六月份毕业大家给出出主意啊谢谢大家了!!! 解决方案 解决方案二:私底下下功夫看些代码其实mvc没什么难的解决方案三:学得会就学,学不会转行.前者说的是,没有人生来就会什么的.后者说的是,没有人什么都擅长,所以才有360行.解决方案四:愁也没有用,每本好书,抓紧时间学吧,弄清楚原理,多做例子就行解决方案五:

ASP checkbox复选框是否被选中的代码(结合数据库)_应用技巧

有的时候,我们在网页中会用到复选框,也就是多选框,当用户提交输入信息的时候我们会获取复选框的内容,然后保存到数据库中,如经常用到的是用户输入的个人信息.可是当用户提交后可能还需要修改,那么我们就要从数据库中读出这些表单数据,这就要求必须把用户之前输入的状态给显示出来,可是当我们从数据库中读出复选框是否被选中时确很难实现.所以今天就教大家通过ASP从数据库中读出复选框是否被选中的方法,希望还有其他方法的朋友留言分享. 具体代码如下所示: 复制代码 代码如下: <% document=Split(r

oledb 连接winform 正常,asp.net 却无法连接 在线等~~~

问题描述 我的一个asp.net程序,之前一直都是正常的,今天突然无法连接oledb.用winform应用程序连接没有问题,就是web连接不上.(数据库和程序都是在本机)在网上查了半天.也没见解决.1.我将aspnet,iusr_XX的用户都加入到SQLSERVER的logins下.并设置数据库的public和db_owner的角色.2.换成sa的SQL连接,没有问题,可以连接得上.3.windows防火墙上加了sqlserver.exe的例外.请问有什么解决方法.????????连接代码如下:

ASP checkbox复选框是否被选中的代码(结合数据库)

有的时候,我们在网页中会用到复选框,也就是多选框,当用户提交输入信息的时候我们会获取复选框的内容,然后保存到数据库中,如经常用到的是用户输入的个人信息.可是当用户提交后可能还需要修改,那么我们就要从数据库中读出这些表单数据,这就要求必须把用户之前输入的状态给显示出来,可是当我们从数据库中读出复选框是否被选中时确很难实现.所以今天就教大家通过ASP从数据库中读出复选框是否被选中的方法,希望还有其他方法的朋友留言分享. 具体代码如下所示: 复制代码 代码如下: <% document=Split(r

winform 与asp.net 下拉列表的区别

asp.net的下拉列表绑定后还可以添加新项,用add()方法和insert()方法都行,用insert()还可以把你要添加的项添加到指定的地方 winform绑定后就不能修改了 另外还有一点是关于js的 Javascript获取select的选中值和选中文本 var obj = document.getElementById("select_id"); //selectid var index = obj.selectedIndex; // 选中索引 var text = obj.o

ASP获取复选框(多项选择)的值

这个什么地方用到呢? 好些个复选框name都是test 如:你的爱好是什么? <% dim test test=Split(request.from("test"),", ") '取值的时候 Response.Write test(0) Response.Write "<br />" Response.Write test(1) Response.Write "<br />" Response.W