熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET 2.0+VS2005利器大評析之優點篇

2013-11-13 10:12:01  來源: .NET編程 

  ASPNET 與Visual Studio 正式上市至今已經有好幾個月了隨著時間的一天天向前推移如今越來越多的人能夠使用到這一產品本文作者基於對該產品的試用試圖從個人角度來對這一產品的優點與不足作出評析僅供參考

   引言

  說實在的我對ASPNET 與Visual Studio 之間的關系有些喜歡也有些討厭但是我最終還是決定把我的大多數內部應用程序遷移到並且決不後悔基本上ASPNET 中存在太多的新的特征使我的生活變得更為輕松並且從此以後再也不會返回到以前的版本中編程了

  到目前為止這個平台一直工作良好我已經發現了其中存在的許多改進能夠大量地降低編碼的復雜性和編碼數量在性能方面大約提高了%並且減少了內存需求量(這對於大型應用程序而言是十分重要的)但是對我的工作來說幾乎沒有太大的作用

  把特征加入到現有應用程序中絕對不是一夜之間的事情但是隨著我逐漸地習慣快速地把大量的特征加入到我的新式應用程序中我的最後感覺是如果再回到ASPNET 和VS 的話那將是一個很大的後退

   優點評析

  下面讓我們來逐步剖析這個新產品中的主要變化首先來看一下它的優點

  (一) Visual Studio 基於文件的工程開發

  現在在Visual Studio 你能夠把一個目錄作為一個web工程來打開這是一種相當不錯的改進在我的開發機器上我可能有個不同的web工程使用以前的VS要把所有這些作為IIS中的虛擬目錄加以配置和維護並且使工程實現正確地引用是令人相當頭疼的事情你不這樣認為嗎?你是否想把某些工程移動到一台新機器上?在VS你只需要簡單地指向一個目錄就可以打開工程你完全可以使用本地的Web服務器構建方式來運行應用程序這樣以來就免除了配置Web服務器的需要

  這個特征特別適合於共享示例的開發者—任何想檢查一個示例web應用程序的開發人員都不必經受基於IIS進行配置的痛苦現在借助於基於文件的工程你能夠—至少在開發場所下—實現真正的xCopy工程這個特征相當偉大但是也不無缺點(一會兒後我們會詳及)

  【另注】我接觸到的每一位都喜歡構建到Visual Studio內部的Cassini web服務器當然我也喜歡因為它極大地簡化了許多問題的處理然而有關它的使用也存在一些缺點主要是在使用過程中應當避免Cassini與IIS之間的相互干擾例如Cassini能夠把所有的請求傳遞給ASPNET而忽略擴展內容如果你擁有處理特定的文件類型的定制的處理器(例如動態地構建Excel報告等等)那麼你必須記住當發布你的應用程序時你要在IIS中為擴展內容建立定制的映射否則的話IIS不會把請求傳遞給ASPNET我接觸過許多朋友在發布時花費大量的時間來解決他們的應用程序中的問題因為他們在開發過程中從不擔心Cassini中的配置設置問題

  (二) 母版頁面

  現在你可以定義一個能夠在你的應用程序中重用的母版(Master)頁模板使用這個功能能夠節約你大量的開發時間事實上版本出現以前已經存在基於ASPNET x版本的這種概念但是對於我來說吸引我的最關鍵的特征在於Visual Studio提供了對它的可視化支持這可以使你看到母版的布局其中ContentPlaceholders可以應用於每一個頁面中以提供頁面級內容

  除了設計器提供的重要的可視化方面外母版頁模板還提供了一種良好的方式來把彼此相關的可重用的代碼聯系到一起母版頁面的目的是把以前需要使用若干用戶控件(例如HeaderFooter和Sidebar)才能實現的功能融合到一起從而使它們能夠比以前更為有效地實現邏輯分離

  【另注】你還能夠在運行時刻動態地改變母版頁面從而實現更大的靈活性這一支持使用戶能夠改變一個應用程序的整體外觀感覺而且這種效果是僅憑借切換層疊式樣表所無法實現的

  (三) 用戶控件可視化描述

  說實在的我非常希望自己在設計時就能看到整個頁面的樣子就象母版頁面一樣現在Visual Studio 能夠在Web表單編輯器內顯示一個生成的用戶控件不再象是以前的老式的非描述性的灰色的方框加上一個控件名現在你能夠在設計器內得到一個全面生成的恰當到位的控件雙擊它則VS就能把你導航到用戶控件設計器在我的開發中我一般不會大量地使用用戶控件而是使用母版頁面來替換我的許多現有的控件但是我發現這種用戶控件可視化描述使設計模式更為有用了對於我的現有版本的應用程序來說尤其如此—我的這些程序中通常仍然使用這樣的控件來表達頁面的頁眉側欄和頁腳

  【另注】完全自動地生成用戶控件極大地節約了開發時間當然我還需要花費不少的時間從IDE到一個浏覽器來回切換以觀察用戶控件最終生成的樣子僅此而已

  (四) 泛型

  不錯這並非是一個ASPNET特有的特征但是NET 中泛型的引入大大豐富了代碼的編寫以前在創建定制集合時我常常非常小心坦誠地說反反復復地從CollectionBase進行派生然後重新實現相同的代碼是一件非常折磨人的工作對於定制控件開發特別在ASPNET中開發時我發現當你需要集合特性時使用泛型集合效果相當好

  你只需簡單地使用列表或一個特定的泛型集合然後把它作為該控件的一個屬性—問題就這麼簡單!Visual Studio能夠看到這個集合並且在大多數情況下它還能夠為你提供相應的集合編輯器通過使用泛型列表你可以很容易地使用強類型化列表來代替許多基於ArrayList的列表這往往使編碼更為清晰

  最後在業務對象內使用動態的類型替換消除了對令人膽戰心驚的初始化編碼(以前在每一個業務對象中都要進行這種初始化以指定哪個實體類型與之相關聯)的需要在泛型出現以前往往需要借助於一個小型編碼代理來把業務對象和實體綁定到一起現在有了泛型類型後不再需要這樣的編碼而代之以一個泛型類型參數此後所有的類級代碼就能夠使用泛型類描述在運行時刻自動地生成正確的類型借助於一個類型化參數和一組父類級方法現在再也不需要從我的所有業務對象中剪切和粘貼大量的代碼其實還存在許多使用泛型的場所而且如今我發現不使用泛型類型很多問題變得十分棘手特別是在處理與集合相關的內容時

  【另注】泛型將會被廣泛應用於集合及業務對象操作方面而且你也可以在頁面基類和用戶控件開發中從中獲益最近我在網上看到有人構建一個泛型基頁面實現自動地加載業務對象數據並建立相應的Ajax回調機制以便更新這些對象你看以前在每一個新頁面中實現起來如此頭疼的事情一下變得如此簡單了!

  (五) 支持嵌入式資源

  我比較喜歡把大量的定制控件用於我自己的應用程序中經常情況下這些控件都會依賴於特定的資源例如圖像CSS文件XML資源等等此時任何這些控件的用戶必須記住要在他們的應用程序中發布相應的文件如今在ASPNET開發中你可以容易地把需要的Web資源嵌入到一個工程中然後經由一個ASPNET生成動態的URL來存取它們為此你只需要簡單地把[WebResource]屬性添加到你的控件的AssemblyInfo文件中然後使用PageClientScriptGetWebResourceUrl來檢索包含這些資源內容的URL即可

  (六) Visual StudioASPNET代碼編輯器

  Visual Studio 代碼編輯器比版本前進了一大步我認為最重要的新特征在於新的編輯器不會自動地打亂我的代碼格式除非我重新格式化文檔例如我想讓我的內容按我喜歡的方式進行組織然而當我使用VS時這卻成了一個問題—無論何時把新的控件添加到頁面系統都會重新格式化HTML在VS編輯器在大多數情況下會保留用戶自己的代碼格式並且還會提供一種更好的處理—把控件標記插入到代碼中

  一個真正提高生產效率的改進是在新的HTML編輯器中引入了智能感知技術—而且出現在每一處位置!我經常在一個頁面內嵌入<%=%>表達式而智能感知意味著它會幫助我避免錯別字ASPNET 還會編譯頁面並且檢查生成的嵌入式腳本代碼以便及早地在設計時刻而不是在運行時刻才捕獲HTML標記中的錯誤
智能感知適合於所有的控件包括你自己的定制控件因此你不必再提供一種私有類型模式文件Visual Studio能夠簡單地找到你的控件並且在內部管理智能感知智能感知支持真是太好了有時它甚至能夠超越可視化設計器一會兒後你就會明白為什麼這可能比你想像的更為重要

  【另注】作為一名最近才從Visual Basic轉到C#的新手我特別欣賞Visual Studio 提供的C#智能感知支持在Visual Studio以前的版本中好象在對VB和C#的智能感知支持方面存在很大的差距並且當我分析C#代碼時我常常發現我自己十分需要有一種VB風格的智能感知幫助現在現在這種差距消失了而且語言之間的切換也更為容易了


From:http://tw.wingwit.com/Article/program/net/201311/12873.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.