国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.NET開發平臺研究(四)

2024-07-10 12:59:39
字體:
來源:轉載
供稿:網友
8. asp.net

微軟的asp.net對active server page(asp)進行了很大的改變,不僅使開發者更易于創建動態web內容,還使他們更易于創建復雜而可靠的web應用程序,例如web services。asp.net 是微軟的. net開發平臺的關鍵的一部分。為了微軟 .net戰略的成功,必須吸引開發者采用. net開發平臺,包括asp .net。asp .net beta版測試者報告了它的大量好處。

asp. net的主要目標是降低web應用程度開發的門檻,它采用與降低使用visual basic(vb)進行windows編程難度大致相同的方法實現了這個目標:通過設計——“事件-驅動”編程模型,在此模型中開發者向一表單中填加控件,然后編寫代碼處理與這些空間相關的事件(例如,數據進入文本框或者單擊鼠標)。由于允許開發者在由.net frame類庫顯示的xml支持上開發,這也使他們更易于創建以xml格式交換數據的service。



asp.net在哪些方面補充了.net開發平臺?

asp.net是.net開發平臺的一個部件,用來開發駐留在微軟的internet information server(iis)上并且使用諸如http和soap等internet協議的web應用程序。asp.net使兩種類型的web應用程序的開發和部署更為容易。

·web 表單應用程序,包括用于動態內容的從腳本生成的web頁和向一個客戶(例如瀏覽器)顯示ui或表單的web頁兩種。

·web services,用于顯示其他應用程序和“智能”客戶端的功能,使應用程序可以交換信息。

兩種web應用程序體現了超出傳統應用程序的一個主要的優點:它們使用基于internet的協議使信息可以輕易地穿過組織邊界(和防火墻)移動,如同在一個組織內移動一樣。

微軟以前試圖使用asp(1996年作為iis3.0的擴展功能首先引入)來降低web應用程序開發的門檻。asp支持vbscript和jscript,以及一些可用于web應用程序開發的簡單對象,例如request對象,允許開發者從客戶端獲得數據;response 對象則向客戶端發送數據。與以前的iis api(例如common gateway interface(cgi)(通用網關接口)和internet server application programming interface(isap)(internet服務器應用程序編程接口))相比,asp更易用于web應用程序開發。使用asp,一個有html和腳本使用經驗的程序員可以輕松地開發動態web內容。

盡管如此,介于其有限的對象模型,有限的腳本描述語言能力,有限的用于端到端應用程序調試的工具,以及對于外部xml工具和分析程序進行api級調用的要求,開發一個功能強大且穩定的web 表單仍然十分困難。

通過在.net開發平臺中嵌入asp.net,微軟將clr和類庫的益處提供給了開發者。asp.net使用clr 來編譯代碼,管理執行,創造了運行更快、表現更好的web應用程序。此外,asp.net使用類庫讓開發者更易于將xml格式數據合并到web應用程序中,添加處理異常的代碼,創建ui元素,并提供其他的編程功能。

















asp.net體系結構



asp.net使開發者能夠創建在internet information server(iis)和.net開發平臺上運行的web應用程序。asp.net通過internet server application programming interfaces(isapi)與iis通信,active server pages(asp)同樣。事實上,asp和asp.net可以共存于同樣的iis服務器上:iis將對于asp頁面的請求(帶有.asp擴展名)指向asp,將對于asp.net頁面的請求(帶有.aspx或.asmx擴展名)指向asp.net。

asp.net本身有一個cache,通過提供cache內的經常使用的頁面來提高性能。asp.net還包括一個跟蹤用戶會話的狀態管理service。在asp中,開發者通常不得不創建自己的cache和狀態管理services來擴大asp所提供的。

.net framework core開發平臺支持asp.net頁面中的代碼。特別地,common language runtime(clr)編譯和管理頁面中代碼的執行。類庫提供了一個用于接收請求和生成響應的統一類集(例如web 表單類和xml類)。





asp.net的好處:

asp.net在三個領域提供了超越asp的改進:編程模型,狀態管理,以及從.net開發平臺繼承過來的好處。

事件—驅動編程模型

事件—驅動編程允許開發者創建一旦特定事件發生時就執行的代碼。例如,在asp.net的情形中,當加載、卸載或單擊頁面上的控件時,一段特定的代碼將執行。asp使用線性代碼處理模型,每條asp代碼線都摻雜了靜態html,并且按照在asp文件中出現的順序加以處理。

事件—驅動編程使asp.net編程更接近于windows編程。這樣做的好處是開發者只需編寫響應事件的代碼,并且他們可以將事件—驅動編程的知識從windows桌面應用程序擴展到web應用程序上來。

事件—驅動編程的另一個優點是它可以使處理數據的代碼與向用戶顯示數據的代碼相分離。例如,asp.net允許開發者使用一種稱作“代碼隱藏”的機制將web應用程序邏輯(通常用vb.net或c#開發)從表示層(通常采用html格式)中分離出來。通過將邏輯與表示相分離,asp.net允許多個頁面使用相同的代碼,從而使維護更容易。開發者不再需要為了修改一個編程邏輯問題而瀏覽html表示,web設計者也不必通讀所有代碼來修正一個頁面的html錯誤,(參看“asp.net代碼隱藏”示意圖)。



更好的狀態管理

asp.net給web應用程序狀態帶來豐富的好處。狀態管理涉及到跟蹤每個人的會話數據,這是由用戶在與web站點發生交互時生成的獨特的數據。例如,用戶購物車內當前的產品信息,或者用戶目前是否登錄到了該站點上。

asp.net解決了和狀態管理有關的兩個問題。第一個,如果web服務器有問題,狀態信息經常丟失;第二個,駐留在一個服務器組或者web田上的web站點上的狀態信息難于管理。

和asp一樣,狀態信息存在于asp.net正在其中運行的程序中。盡管這種方法提供了最好的性能,但也最缺少穩定性和可擴展性。如果服務器重啟,保存的狀態信息就會丟失,而進程中的狀態管理不能提供給駐留在多個服務器的web應用程序。

和asp不同的是,asp.net還可以使用一個用于進程外狀態管理的windows service(aspstate)。盡管這比進程中狀態管理稍慢,但是即使asp.net進程被重啟,信息仍能保存下來,而且它也可以支持跨越web田中多個服務器上的web應用程序。

另一個狀態管理的選擇是讓asp.net將狀態信息保存在sql server上。這種方式確保狀態信息能幸免于web服務器上的問題,并且允許一個sql server(大站點上的sql server簇)保存駐留在—web田中的幾個服務器上的web應用程序的狀態信息。



從.net framework中受益

asp.net使開發者用.net framework類庫創建帶有ui的web頁面更為容易。.net framework類庫提供諸如文本和列表框,以及各種按鈕等控件,開發者可以通過將標簽(例如〈asp: button〉)插入到他們的動態web頁面中來使用這些控件,或者也可以使用visual studio.net的圖形頁面編輯器來添加控件。asp.net提供以下幾種類型的控件:

·現有html控件的服務器端版本,例如代表〈input type=submit〉的按鈕(html button)控件。現有的用于表單 的html與asp.net html控件之間的主要差別是“runat=server”屬性,它表示代碼在服務器上運行,而控件顯示在客戶端。

·web 表單控件,這是服務器端控件,一些是html控件,另外一些則是新增的更為復雜的控件,例如文本框(<asp:textbox>、列表框、日歷和數據網格等。這些控件比html控件更易于使用,因為諸如容量這樣的屬性在所有控件中均使用一致的方式設置。

·確認控件,這是一種鏈接到html控件和web 表單輸入控件(例如文本框)的控件。確認控件能夠通過比較、檢查輸入范圍或應用一個定制的確認代碼來確認用戶的輸入。

所有這些控件都減少了開發者不得不編寫的代碼的數量,開發者只需把控件定位在一個頁面中,初始化控件的性能和方法,然后編寫代碼來響應控件可能產生的事件,這種事件是用戶某些行為(如單擊按鈕)的結果。這些控件還支持數據綁定,這使開發者很容易將從數據庫取回的特定信息與指定給控制值關聯起來。

相比之下,asp僅僅提供了6個基本控件。盡管activex控件能夠由asp使用,但這通常會削弱web應用程序的穩定性。

另外,.net開發平臺的類庫不僅使web應用程序受益,同樣也有益于任何windows應用程序,這些助益如下:

減少了異常處理的編碼。異常處理類使開發者可以很容易地添加代碼處理公共編程問題,例如被0除,內存溢出,或是找不到文件等錯誤。

減少了用于數據交換的編碼。通過使用類庫,asp.net開發者可以方便地讀寫xml數據流。asp.net還可使用ado.net,一套新的擴展的active data objects(ado)(活動數據對象),來管理指向數據庫中的數據的連接,并且處理數據。

改進的性能。asp.net性能大大優于asp,這主要是因為以clr為目標的代碼是編譯執行,而用于asp的腳本語言則是解釋執行。當代碼第一次使用時,要被編譯,起始頁面加栽可能會慢些,但在隨后的頁面請求中,該頁面將從動態輸出緩存中的已編譯過的代碼中讀出。當識別到緩存頁面的控件事件或查詢字符串的變化時,asp.net甚至能夠專門緩存。甚至asp.net測試版看來也比asp要快好多。(微軟提供的比較,參看“asp.net性能”。)

增加的語言支持。asp.net允許開發者使用clr支持的任何語言,包括vb.net和c#。asp僅僅支持vbscript與jscript這樣的解釋型腳本描述語言。

改進的調試支持。基于asp.net的 web應用程序的開發者既可以使用包含在.net framework sdk中的調試器,也可使用集成在visual studio中的調試器。除了允許開發者逐步檢查代碼,設置斷點外, asp.net還支持跟蹤,它允許開發者跟蹤一個應用程序的執行,然后觀察跟蹤結果。要排除asp 頁面的故障,開發者不得不散布帶有自定義的“response.write”聲明的代碼,來顯示應用程序中特定點的變量值。調試完后,必須將這些代碼行清除或者注釋掉,以便應用程序作為產品運行時,不會輸出調試信息。可以輕松地設置跟蹤開或關,并且既可同單獨的web頁面也可同大范圍的web應用程序一起工作。





asp.net性能



數據是基于doculab的nile的基準,它常常用于評估應用程序服務器的相關性能。實現asp.net的nile基準需要4,000條c#代碼,用來生成一個ad-hoc搜索的混合,創建新客戶,管理購物車,以及處理定單等。保持硬件配置不變,通過對應用程序和數據庫服務器的測試,得出如下結果:附加測試表明用vb.net編寫代碼和用c#編寫代碼區別不大。





向asp.net進發:

asp 和asp.net之間的差異導致asp頁面不可能在asp.net上運行。然而,一個單一的iis服務器能同時駐留 asp應用程序 和基于asp.net的 web應用程序。

想利用asp.net的開發者有幾種選擇:

·保留現有的asp應用程序不動,在asp.net上開發新的應用程序。因為asp和asp.net可以共存,也就不必迫切地將現有的應用程序轉換到asp.net上,但是知道asp.net的重大優勢,開發者也許不會再想開發任何新的asp應用程序。

·將asp.net特征添加到現有的asp web應用程序上。從原理上講,開發者能夠建立帶有asp和 asp.net混合頁面的應用程序,這使應用程序可以逐漸遷移到asp.net上。然而,狀態管理還不能在asp和asp.net之間分開,如果狀態信息必須由asp和asp.net頁面共享,這就使得這種方法不切實際。

·把現有的asp web應用程序轉換到asp.net。這需要開發者將現有的基于腳本的代碼轉換到vb.net或c#,從ado轉換到ado.net,并且將事件驅動代碼添加到應用程序之中。仔細檢查現有的應用程序,確定有多少腳本代碼嵌入在頁面之中,并且考察asp.net的新的優勢,如服務器端控件和事件模型,將說明這種方法是否有意義。

·使用現有的頁面作為校驗的規范,充分利用asp.net功能的優勢,重建頁面的表示和邏輯,改寫現有的asp web應用程序,使之用于asp.net。這種方法花費的工夫可能最多,但是在應用程序的穩定性和性能方面可能會達到最好的效果。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 太和县| 安塞县| 青川县| 尼玛县| 崇州市| 苍梧县| 仪陇县| 长丰县| 镇巴县| 普兰店市| 太保市| 昌乐县| 阳春市| 文化| 鸡泽县| 达拉特旗| 临清市| 杭州市| 宣武区| 亚东县| 祁门县| 手机| 佛山市| 沭阳县| 龙江县| 正宁县| 鄄城县| 咸宁市| 旬邑县| 汉沽区| 保康县| 翁源县| 镇安县| 麻城市| 德兴市| 铁力市| 连城县| 台湾省| 罗源县| 陆良县| 德令哈市|