在.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允許開發人員控制執行服務器應用程序代碼所使用的標識。應用程序可以用請求實體的標識來執行代碼。應用程序也可以根據請求者的標識或角色來動態調整內容。例如,經理可以訪問某一站點或更高級別的內容,而擁有較低權限的人則不能這樣做。
|