999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

ASP.NET的性能優化及其安全性的探討

2008-12-31 00:00:00
商場現代化 2008年12期

[摘要] 本文主要從ASP.NET在網站開發中的性能及其安全性入手,介紹了如何將Web應用程序運行得越來越快,并且能夠得到擴展以處理更多的并發用戶,以及如何利用ASP.NET的安全系統來實現最高性能的安全代碼。

[關鍵詞] ASP.NET 性能優化 安全性

我們用ASP.NET開發網站,無論我們寫的ASP.NET應用程序有多么好,無論在Web站點中添加了多少很酷的新特性,如果我們的站點在處理用戶請求時哪怕只是讓用戶等待了幾秒鐘,用戶也不會對我們的站點留下好印象。事實上,如果用戶等得太久,他們就會放棄而去訪問另一個站點。那么,如何才能提高站點的響應速度,這就要考慮到我們在開發過程中如何優化ASP.NET的性能。

一、性能開發及其優化

性能表示系統執行任務的速度和效率。就Web站點的性能而言,它對整個站點的點擊率起著不可忽視的作用。如果一個性能很差的網站長期沒有改進,你就會發現潛在的用戶全都跑光了。

1.利用JIT編譯器提高程序執行速度

高性能代碼旨在能少做工作就少做工作,這是不言而明的。

在編譯任何ASP.NET的應用程序時,編譯器把源代碼轉換為Microsoft中間語言(MSIL)。要在一個具體環境中執行應用程序,一個JIT編譯器先接受MSIL輸出并把指令轉換為主機處理的本機指令,再以即時方式編譯代碼,以便應用程序開始執行。但是,JIT編譯器不是把程序集中所有的MSIL都在開始執行前轉換為本機代碼,只是一次編譯一個方法。JIT編譯器采用的這種方法有兩個性能上的優勢。第一個優勢:這項技術把編譯的成本分攤在一個較長的時間內,由于執行會比JIT編譯器把所有的MSIL都進行編譯看起來要快,這樣感覺到應用程序的性能提高了。如果把長時間的暫停或等待時間分成小塊,把它們分散開,你的用戶就不會注意到它們,用戶對你的應用程序的性能也會比較滿意。第二個優勢:JIT編譯器不編譯在執行期間用不到的方法。因此不會做沒有必要的工作,無論什么時候省去不必要的處理工作,你就會發現可以獲得真正的性能增益。

2.減少運行時的工作

在底層,ASP.NET基礎結構為了讓我們工作輕松,做了大量的基礎工作。雖然把這個體系結構用做一個黑盒很不錯,但有時了解使一切如此無縫的運行的實現細節也是很有益的。掌握了這些額外的信息,我們經常可以更有效地在運行程序時獲得速度上的優勢。其實現主要有以下三種方法:

(1)視圖狀態的優化

視圖狀態是性能的無聲殺手。自動視圖狀態管理是服務器控件的功能, 該功能使服務器控件可以在往返過程上重新填充它們的屬性值(不需要編寫任何代碼)。但是, 因為服務器控件的視圖狀態在隱藏的窗體字段中往返于服務器, 所以該功能確實會對性能產生影響。因此, 開發人員應該知道在哪些情況下視圖狀態會有所幫助, 在哪些情況下它影響配器的性能。例如, 如果將服務器控件綁定到每個往返過程的數據上, 則將用數據綁定操作獲得的新值替換保存的視圖狀態。在這種情況下, 禁用視圖狀態可以節省處理時間。默認情況下, 為所有服務器控件啟用視圖狀態。若要禁用視圖狀態,將控件的EnableViewState 屬性設置為1。

從某種意義上說, 視圖狀態是有史以來最偉大的事情。畢竟, 視圖狀態使頁面和控件能夠在回發之間保持狀態。因此, 不必像在傳統的ASP中那樣編寫代碼, 以防止在單擊按鈕時文本框中的文本消失, 或在回發后重新查詢數據庫和重新綁定DataGrid。但是, 視圖狀態也有缺點: 當它增長得過大時, 某些控件(例如文本框) 會根據視圖狀態做出相應判斷; 其他控件(特別是DataGrid 和GridView) 則根據顯示的信息量確定視圖狀態。一個糟糕的GridView 容易將瀏覽器和Web 服務器之間連接的有效帶寬減少50%以上。ASP.NET 2.0能夠提供比ASP.NET 1.x 更簡單的方法將視圖狀態保留在會話狀態中。

(2)盡量減少服務器控件的使用

服務器端的控件不僅能生成視圖狀態,它們也需要額外的運行時間處理綁定到成員變量。由于它們會使用服務器資源,即使它們非常易于使用, 但是服務器控件并不總是完成任務的最佳選擇, 在許多情況下, 一個簡單的呈現或數據綁定代入就可以完成任務。所以,Web頁面上服務器端的控件應該保持在最低的數量上。

(3)把異常減到最少

不要依賴代碼中的異常。因為異常大大地降低性能, 所以不應該將它們用作控制正常程序流程的方式。

異常是通知程序執行期間發生的錯誤的一個非常有用的設備。程序不能忽視異常——它們將會改變程序的執行流。在ASP.NET運行時的托管環境中,用try和catch設置異常處理代碼只對性能有可以忽略不計的影響,但程序拋出異常時卻有性能的損失。如果將try…catch語句使用為if語句,將拋出更少的異常,運行得更快。

3.有效使用內存和緩存

只要可能, 就緩存數據和頁面輸出。使用ASP.NET 緩存機制有兩點需要注意。首先, 不要緩存太多項,緩存每個項均有開銷, 特別是在內存使用方面。不要緩存容易重新計算和很少使用的項。其次, 給緩存的項分配的有效期不要太短。很快到期的項會導致緩存中不必要的周轉, 并且經常導致更多的代碼清除和垃圾回收工作。高周轉率可能說明存在問題, 特別是當項在到期前被移除時。

不要給每個請求分配過多內存, 因為這樣垃圾回收器將必須更頻繁地進行更多工作。另外, 不要讓不必要的指針指向對象, 因為它們將使對象保持活動狀態, 并且應盡量避免含Finalize 方法的對象, 因為它們在后面會導致更多的工作。特別是在Finalize調用中永遠不要釋放資源, 因為資源在被垃圾回收器回收之前可能一直消耗著內存。最后這個問題經常會對Web 服務器環境的性能造成毀滅性的打擊, 因為在等待Finalize 運行時, 很容易耗盡某個特定的資源。

二、安全性

ASP.NET提供了一個很健壯的安全系統,我們可以輕松地利用這個安全系統消除在ASP中為Web應用程序提供用戶級別的安全性而編寫的大量代碼。這就意味著你需要編寫較少的代碼可以實現標準化的安全。

1.ASP.NET 的配置體系和安全體系

NET 框架提供了一個豐富又靈活的配置系統, 使得應用程序開發及管理人員能夠在整個應用程序、站點和計算機中定義和使用可擴展的配置數據。其中Machine.Config 為整個Web 服務器提供配置設置, 每一個ASP.NET Web 應用程序根目錄以及各級子文件夾都可以有自己的名稱為Web. Config 的配置文件。配置文件都是基于XML 格式的文本文件, 通常用來保存一些常量或者安全設置、SQL 連接字符串和其他常規的配置數據等。每一個Web. Config 文件只在該文件夾和其子文件夾下起作用, 每個子文件夾的配置繼承父文件夾的的配置, 并覆蓋相同的選項。對于在Web. Config 中沒有進行設置的屬性, 其取值將繼承Machine. Config 中屬性的設置。如果配置文件被更改, ASP.NET 將檢測到新的配置并自動使它起作用, 無需重新啟動服務器。另外, ASP.NET 通過配置IIS 來保護各級Web. Config 配置文件, 拒絕瀏覽器直接URL 訪問。

2.ASP.NET身份驗證和授權策略

當IIS收到用戶請求時,它首先查看資源是如何受到保護的。資源可以用匿名訪問保護(大多數Web站點都是如此),或者用標準的本地或活動目錄證書保護。接下來,IIS通過標準的訪問控制列表(ACL)查看用戶對請求的資源是否有訪問權限。如果任一項檢查失敗,IIS甚至在請求到達ASP.NET之前就拒絕它。

在上述過程中發生了兩件事。用戶身份驗證,然后被授權。如果一個ASP.NET資源被請求,IIS對請求進行了身份驗證并授權,下一步是由ASP.NET提供它自己的身份驗證和授權。這為開發人員自定義的身份驗證提供了基礎結構,不必從頭開發一個安全基礎結構。

ASP.NET在應用程序中為驗證用戶身份提供了三種方法:

(1)Windows身份驗證

Windows身份驗證提供了與傳統的Windows賬號(或者是活動目錄賬號或者是本地賬號)相似的集成。該模式的工作方式和正常的IIS身份驗證相同。在這種模式下,要禁用對你站點的匿名訪問,以保護你的站點不被未授權用戶侵入。然后要更新Web. Config文件,指定身份驗證模式為Windows身份驗證,并指定ASP.NET應該使用用戶被IIS質詢時輸入的證書作為該應用程序的證書。

Windows身份驗證是最快的身份驗證模式,因為它依賴于IIS模式,因為你不能控制登錄頁面模式的證書來源——并且該模式要求通過網絡訪問Windows證書來源,這就意味著它不十分適合于公共的Web應用程序,因為你不能控制客戶端或網絡訪問。

(2)Forms身份驗證

Forms身份驗證允許開發人員生成他們自己的標準登錄頁面,并根據Web.Config文件中的條目進行身份驗證,或者使用他們自己的身份驗證文件。Forms身份驗證是可自定義性最強的身份驗證方法。因為你能夠控制身份驗證文件和方法。

和Windows身份驗證不同的是Forms身份驗證要求單獨訪問證書來源(即使證書存儲在Web.Config中)。應盡量簡化身份驗證例程,并去除總想包括在內的外部元素(像檢索個性化設置、用戶圖片等)。這些工作只能放在其他時間來作,它們只會延緩登錄進程。

(3)Passport身份驗證

Passport身份驗證允許你把你的應用程序和Microsoft Passport服務集成在一起。該模式的基本工作方式是當檢測一個未進行身份驗證的請求時,ASP.NET把登錄證書從一個Passport登錄窗口(在Web服務器上安裝Passport服務時也安裝該登錄窗口)發送到Passport服務。

Passport身份驗證是最慢的身份驗證方法,因為為了驗證證書,它要求通過Internet進行Web服務類型的通信。Passport方法也是有前途的,因為用戶只要記住一套證書就能登錄到受Passport保護的Web站點中。

三、結束語

對網站來說, 性能和安全性十分重要。ASP.NET 提供了若干新的策略和編程方式,在信息產業高速發展的今天,只有將這些新的策略和編程方式合理應用到站點的開發中,以此來提高站點的性能和安全性,我們的站點才會受到更多的用戶的親睞。

參考文獻:

[1 ]Scott Worle著王文龍劉湘寧譯:ASP. NET技術內幕[M]. 人民郵電出版社,2002

[2 ]K.scott AllenJames Avery著侯譯:ASP. NET性能高級編程[M].清華大學出版社,2003

[3 ]Patrick A.Lorenz. ASP. NET 2.0 Revealed[M].Wrox Press ,2004

[4]尚俊杰秦衛中:ASP.NET 程序設計案例教程[M].北京:清華大學出版社,2005

主站蜘蛛池模板: 亚洲天天更新| 人妻精品全国免费视频| 欧美国产综合视频| 1769国产精品视频免费观看| 日韩精品一区二区深田咏美| 国产电话自拍伊人| 日本不卡免费高清视频| 久久久久国产精品嫩草影院| 中文无码精品A∨在线观看不卡| 黄色网站不卡无码| 免费无遮挡AV| 91九色视频网| 国产精品蜜芽在线观看| 精品福利视频导航| 熟妇丰满人妻| 日韩免费毛片视频| 久久精品国产一区二区小说| 日韩毛片基地| AV网站中文| 国产人免费人成免费视频| 亚洲黄色高清| 亚洲国产日韩欧美在线| 欧美色99| 亚洲午夜国产精品无卡| 中国美女**毛片录像在线| 亚洲激情区| 亚洲午夜福利在线| 精品国产成人国产在线| 国产欧美日韩精品第二区| 精品久久久久成人码免费动漫| 成人午夜久久| 亚洲精品福利网站| 成人福利在线视频| 亚洲一区二区日韩欧美gif| 国产欧美综合在线观看第七页| 午夜福利无码一区二区| 3D动漫精品啪啪一区二区下载| 国产精品美女自慰喷水| 国产精品久久久久鬼色| a国产精品| 国产99热| 99福利视频导航| 亚洲色欲色欲www网| 99久久性生片| 欧美三级日韩三级| 亚洲欧美人成电影在线观看| 国产在线麻豆波多野结衣| 在线观看亚洲国产| 亚洲男人的天堂在线观看| 9966国产精品视频| 亚洲一级毛片在线观播放| 国产高清又黄又嫩的免费视频网站| 国产专区综合另类日韩一区| 亚洲日韩AV无码一区二区三区人| 亚洲综合片| 国产日本一区二区三区| 日韩欧美国产成人| 视频二区中文无码| 婷婷综合色| 成人一级黄色毛片| 精品国产三级在线观看| 国产裸舞福利在线视频合集| 无码免费的亚洲视频| 欧美精品v欧洲精品| 国产精品妖精视频| 日韩一区精品视频一区二区| 国产在线观看第二页| 日韩一区精品视频一区二区| 国产电话自拍伊人| 国产精品va| 国产成人一区免费观看| 狠狠色狠狠综合久久| 97视频在线精品国自产拍| 日韩小视频在线观看| 99久久精品免费看国产电影| 国产欧美又粗又猛又爽老| 国产精欧美一区二区三区| 久久青草热| 日韩欧美高清视频| 在线另类稀缺国产呦| 国产美女无遮挡免费视频| 麻豆精品在线播放|