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