異曲同工 WinForm和ASP.NET如何選?
在.NET平臺(tái)開(kāi)發(fā)中,我們經(jīng)常使用WinForm進(jìn)行C/S架構(gòu)的開(kāi)發(fā),也用過(guò)ASP.NET作為B/S架構(gòu)開(kāi)發(fā)。那么有些人可能糊涂了,不知道在這兩者之間如何做選擇了。其實(shí)作為將來(lái)要在.NET平臺(tái)上做開(kāi)發(fā)的工作者來(lái)說(shuō),無(wú)論如何都要同時(shí)掌握WinForm編程和ASP.NET編程。
51CTO推薦閱讀:ASP.NET視頻教程
當(dāng)我們開(kāi)始開(kāi)發(fā)帶有用戶界面的應(yīng)用程序時(shí),可以使用WinForm或ASP.NET。兩者在開(kāi)發(fā)環(huán)境(Visual Studio系列)中都具有完全的設(shè)計(jì)時(shí)支持,并且可以提供豐富的用戶界面和高級(jí)應(yīng)用程序功能解決現(xiàn)實(shí)業(yè)務(wù)問(wèn)題。由于這種“相似”,要決定采用哪種技術(shù)來(lái)實(shí)現(xiàn)軟件可能有些困難。
關(guān)注軟件的最終用途可以使選擇變得相對(duì)容易。如果我們要開(kāi)發(fā)的是一個(gè)公眾可以通過(guò)Internet訪問(wèn)的電子商務(wù)網(wǎng)站,肯定采用ASP.NET來(lái)開(kāi)發(fā)軟件項(xiàng)目。如果我們要充分發(fā)揮客戶端電腦的計(jì)算能力,并且客戶端的處理工作量很大,需要快速響應(yīng)用戶請(qǐng)求,無(wú)疑應(yīng)該使用WinForm。但是在其他情況下,選擇也真的不是很明晰。
何時(shí)選擇WinForm
如果客戶端應(yīng)用程序負(fù)責(zé)應(yīng)用程序中的大部分處理任務(wù),應(yīng)該使用WinForm開(kāi)發(fā)應(yīng)用程序。這些客戶端應(yīng)用程序包括傳統(tǒng)上在早期版本的VB和VC中開(kāi)發(fā)的Win32桌面應(yīng)用程序。繪圖或圖形應(yīng)用程序、數(shù)據(jù)輸入系統(tǒng)、POS系統(tǒng)和游戲都屬于這類應(yīng)用程序。
這些應(yīng)用程序都依靠桌面計(jì)算機(jī)的處理能力和高性能數(shù)據(jù)顯示。有些應(yīng)用程序可能完全獨(dú)立,它們?cè)谟脩舻挠?jì)算機(jī)上執(zhí)行所有的應(yīng)用程序處理。通常以這種方式來(lái)編寫游戲。其他應(yīng)用程序可能是大型系統(tǒng)的一部分,它們主要使用桌面計(jì)算機(jī)來(lái)處理用戶輸入。例如,POS系統(tǒng)常要求在桌面計(jì)算機(jī)上創(chuàng)建具有響應(yīng)能力的復(fù)雜用戶界面,同時(shí)將該界面鏈接到其他執(zhí)行后端處理的組件。
使用WinForm的應(yīng)用程序是在Windows框架中生成的,因此它可以訪問(wèn)客戶端計(jì)算機(jī)上的系統(tǒng)資源,包括本地文件、系統(tǒng)注冊(cè)表、打印機(jī)等??上拗圃撛L問(wèn)級(jí)別,以消除由不希望的訪問(wèn)引起的任何安全性風(fēng)險(xiǎn)或潛在問(wèn)題。另外,WinForm可以利用.NET Framework GDI+圖形類創(chuàng)建豐富界面,而這常常是數(shù)據(jù)挖掘或游戲應(yīng)用程序所必需的。
何時(shí)選擇ASP.NET
使用ASP.NET創(chuàng)建主要由瀏覽器用戶界面組成的應(yīng)用程序。這自然包括希望讓公眾可通過(guò)萬(wàn)維網(wǎng)使用的應(yīng)用程序,比如電子商務(wù)應(yīng)用程序。但是ASP.NET并不僅僅用于創(chuàng)建網(wǎng)站,許多其他應(yīng)用程序同樣適用于“瘦客戶端”,如基于Internet的雇員手冊(cè)或津貼應(yīng)用程序。任何ASP.NET應(yīng)用程序都有一個(gè)重要的優(yōu)點(diǎn),就是沒(méi)有客戶端安裝和維護(hù)的成本。用戶已經(jīng)安裝了所需的唯一一個(gè)應(yīng)用程序——瀏覽器。
ASP.NET應(yīng)用程序與平臺(tái)無(wú)關(guān),即它們是“延伸”的應(yīng)用程序。不論用戶的瀏覽器類型是什么,也不論使用的計(jì)算機(jī)類型是什么,他們都可以與應(yīng)用程序進(jìn)行交互。同時(shí),可優(yōu)化ASP.NET應(yīng)用程序,以利用***瀏覽器中的內(nèi)置功能來(lái)增強(qiáng)性能和響應(yīng)能力。在許多情況下,此優(yōu)化內(nèi)置于使用的Web窗體組件。這些組件可以自動(dòng)檢測(cè)瀏覽器級(jí)別,并相應(yīng)檢測(cè)呈現(xiàn)頁(yè)。
ASP.NET應(yīng)用程序提供了一些即使在非Web環(huán)境中依然有用的功能。因?yàn)檫@些功能依賴于HTML,ASP.NET應(yīng)用程序適合任何種類的文本密集型應(yīng)用程序,尤其適合那些文本格式設(shè)置對(duì)其很重要的應(yīng)用程序。基于瀏覽器的應(yīng)用程序?qū)τ脩舻南到y(tǒng)資源的訪問(wèn)權(quán)限有限,在希望防止用戶訪問(wèn)某些應(yīng)用程序的情況下,這種限制使ASP.NET應(yīng)用程序很有價(jià)值。
WinForm與ASP.NET的比較
功能/標(biāo)準(zhǔn) | WinForm | ASP.NET |
安裝部署 | WinForm允許使用ClickOnce進(jìn)行“非接觸”部署,即可以直接在用戶的計(jì)算機(jī)上下載、安裝和運(yùn)行應(yīng)用程序,而不必改變注冊(cè)表。 | ASP.NET沒(méi)有客戶端部署;客戶端只需要一個(gè)瀏覽器。服務(wù)器必須運(yùn)行Microsoft .NET Framework。對(duì)應(yīng)用程序的更新通過(guò)在服務(wù)器上更新代碼來(lái)完成。 |
圖形 | WinForm包括 GDI+,它使得游戲和其他有非常豐富的圖形的環(huán)境可以有復(fù)雜的圖形。 | 在ASP.NET時(shí),交互式圖形或動(dòng)態(tài)圖形需要來(lái)回訪問(wèn)服務(wù)器以進(jìn)行更新??梢栽诜?wù)器上使用GDI+來(lái)創(chuàng)建自定義圖形。 |
響應(yīng) | WinForm可以完全在客戶端計(jì)算機(jī)上運(yùn)行;它們能夠?yàn)樾枰叨冉换サ膽?yīng)用程序提供最快的響應(yīng)速度。 | 如果用戶用較新的瀏覽器(IE5.0以上),ASP.NET應(yīng)用程序可以利用瀏覽器的動(dòng)態(tài)HTML(DHTML)功能來(lái)創(chuàng)建豐富的、具有響應(yīng)能力的用戶界面(UI)。如果用戶有其他瀏覽器,大多數(shù)處理(包括與用戶界面相關(guān)的任務(wù),比如驗(yàn)證)需要往返于Web服務(wù)器,而這會(huì)影響響應(yīng),當(dāng)然我們可以采用AJAX技術(shù)來(lái)改善應(yīng)用體驗(yàn)。 |
窗體和文本流控制 | WinForm網(wǎng)格定位可以對(duì)控件的位置提供精確的二維(x和y坐標(biāo))控制。若要在Windows窗體上顯示文本,一般將文本插入到控件(例如 Label控件、TextBox控件或RichTextBox控件)中。格式化將受到限制。 | ASP.NET界面基于HTML樣式流布局,因此支持網(wǎng)頁(yè)面布局的所有功能。它在文本格式設(shè)置方面的功能尤其強(qiáng)大??梢猿浞值毓芾砜丶季郑ㄓ心承┫拗疲绮荒苤丿B控件)。如果用戶有支持DHTML的瀏覽器,可以用二維(x和y坐標(biāo))布局來(lái)指定更精確的布局。 |
對(duì)于.NET Framework的依賴 | WinForm需要在客戶端計(jì)算機(jī)上運(yùn)行.NET Framework。 | ASP.NET客戶端只需要一個(gè)瀏覽器。支持DHTML的瀏覽器可以利用額外的功能,而Web窗體可以被設(shè)計(jì)為適用于所有的瀏覽器。ASP.NET系統(tǒng)只需要在服務(wù)器運(yùn)行.NET Framework。 |
訪問(wèn)本地資源(文件系統(tǒng)、系統(tǒng)注冊(cè)表等) | 如果允許,應(yīng)用程序?qū)Ρ镜赜?jì)算機(jī)資源可擁有完全訪問(wèn)權(quán)。如果需要,可以精確地限制應(yīng)用程序,使其不能使用特定的資源。 | 瀏覽器安全性防止應(yīng)用程序訪問(wèn)本地計(jì)算機(jī)上的資源。 |
編程模型 | WinForm基于客戶端Win32消息轉(zhuǎn)儲(chǔ)模式,開(kāi)發(fā)人員在此模式中創(chuàng)建、使用和銷毀組件的實(shí)例。 | ASP.NET依賴于在很大程度上異步的斷開(kāi)連接模型,在此模型中,組件松散地耦合到應(yīng)用程序前端。通常,應(yīng)用程序組件通過(guò)HTTP協(xié)議調(diào)用。此模型可能不適合要求用戶端有極大吞吐量的應(yīng)用程序或具有大量事務(wù)處理的應(yīng)用程序。同樣,ASP.NET應(yīng)用程序可能不適合需要高級(jí)別并發(fā)控制的數(shù)據(jù)庫(kù)應(yīng)用程序。 |
安全性 | WinForm在其代碼訪問(wèn)安全性實(shí)現(xiàn)中使用權(quán)限,以保護(hù)計(jì)算機(jī)資源和敏感信息。這使功能得以被小心公開(kāi),同時(shí)保留安全性。例如打印權(quán)限,在某一級(jí)別上只允許在默認(rèn)打印機(jī)上打印,在另一級(jí)別上則允許在任何一臺(tái)打印機(jī)上打印。使用ClickOnce部署技術(shù),開(kāi)發(fā)人員可以輕松地配置應(yīng)用程序應(yīng)該和不應(yīng)該向客戶端要求什么權(quán)限。 | 通常,通過(guò)驗(yàn)證請(qǐng)求者的憑據(jù)(例如,名稱/密碼對(duì)),按URL控制獲得訪問(wèn)ASP.NET應(yīng)用程序資源的授權(quán)。ASP.NET允許開(kāi)發(fā)人員控制執(zhí)行服務(wù)器應(yīng)用程序代碼所使用的標(biāo)識(shí)。應(yīng)用程序可以用請(qǐng)求實(shí)體的標(biāo)識(shí)來(lái)執(zhí)行代碼。應(yīng)用程序也可以根據(jù)請(qǐng)求者的標(biāo)識(shí)或角色來(lái)動(dòng)態(tài)調(diào)整內(nèi)容。例如,經(jīng)理可以訪問(wèn)某一站點(diǎn)或更高級(jí)別的內(nèi)容,而擁有較低權(quán)限的人則不能這樣做。 |
原文作者:呂中華
原文地址:http://blog.whhpaccp.com/post-39.html
【編輯推薦】
- 淺談ASP.NET 4.0 SEO增強(qiáng)中的UrlRouting
- WPF與WinForm對(duì)比談 多線程編程優(yōu)化是關(guān)鍵
- 詳解Winform多線程編程基本原理
- 實(shí)戰(zhàn)ASP.NET大規(guī)模網(wǎng)站架構(gòu):Web加速器
- 專家暢談ASP.NET與PHP的未來(lái)