當前位置:編程學習大全網 - 源碼下載 - asp.net如何使用緩存

asp.net如何使用緩存

asp.net如何設置瀏覽器客戶端緩存

1。過期時間:過期時間

這意味著瀏覽器緩存在指定時間後失敗。需要註意的是,這裏的到期時間必須是HTTP格式的日期和時間,其余的將被解釋為當前時間的“之前”。緩存將立即過期,HTTP中的日期和時間必須是格林威治標準時間(GMT)而不是當地時間。示例:

使用Expires的過期必須要求服務器的時間正確,否則發送的兩條或兩條以上的巷道循序地首尾相連接在壹起、中間不分岔的通風網路。

多條風路依次連接起來的網絡。

seriesventilationnet兩條或兩條以上的巷道循序地首尾相連接在壹起、中間不分岔的通風網路。串聯通風網路總風阻大,等級孔小,通風困難;網路中各條巷道中的風量不能調節,前面工作面所產生的炮煙、礦塵能直接影響後邊工作面,壹旦發生火災就不易控制。應盡量避免采用串聯通風網路,否則應采取相應措施

ASP、ASP.NET、PHP、JSP四種語言的特點及區別是什麽?

ASP,全稱為ActiveServerPages

ASP是微軟(Microsoft)所開發的壹種後臺腳本語言,它的語法和VisualBASIC類似,可以像SSI(ServerSideInclude)那樣把後臺腳本代碼內嵌到HTML頁面中。雖然ASP簡單易用,但是它自身存在著許多缺陷,最重要的就是安全性問題。目前在微軟的.net戰略中新推出的ASP.net借鑒了Java技術的優點,使用CSharp(C#)語言作為ASP.net的推薦語言,同時改進了以前ASP的安全性差等缺點。但是,使用ASP/ASP.net仍有壹定的局限性,因為從某種角度來說它們只能在微軟的WindowsNT/2000/XP+IIS的服務器平臺上良好運行(雖然像ChilliSoft提供了在UNIX/Linux上運行ASP的解決方案,但是目前ASP在UNIX/Linux上的應用可以說幾乎為0)。所以平臺的局限性和ASP自身的安全性限制了ASP的廣泛應用。

ASP在執行的時候,是由IIS調用程序引擎,解釋執行嵌在HTML中的ASP代碼,最終將結果和原來的HTML壹同送往客戶端。

PHP,全稱為PHP:HypertextPreprocessor

PHP的全名非常有趣,它是壹個巢狀的縮寫名稱——“PHP:HypertextPreprocessor”,打開縮寫還是縮寫。PHP是壹種HTML內嵌式的語言(就像上面講的ASP那樣)。而PHP獨特的語法混合了C,Java,Perl以及PHP式的新語法。它可以比CGI或者Perl更快速地執行動態網頁。

PHP的源代碼完全公開,在OpenSource意識擡頭的今天,它更是這方面的中流砥柱。不斷地有新的函數庫加入,以及不停地更新,使得PHP無論在UNIX或是Win32的平臺上都可以有更多新的功能。它提供豐富的函數,使得在程式設計方面有著更好的資源。目前PHP的最新版本為4.1.1,它可以在Win32以及UNIX/Linux等幾乎所有的平臺上良好工作。PHP在4.0版後使用了全新的Zend引擎,其在最佳化之後的效率,比較傳統CGI或者ASP等技術有了更好的表現。

平臺無關性是PHP的最大優點,但是在優點的背後,還是有壹些小小的缺點的。如果在PHP中不使用ODBC,而用其自帶的數據庫函數(這樣的效率要比使用ODBC高)來連接數據庫的話,使用不同的數據庫,PHP的函數名不能統壹。這樣,使得程序的移植變得有些麻煩。不過,作為目前應用最為廣泛的壹種後臺語言,PHP的優點還是異常明顯的。

JSP,全稱為JavaServerPages/Servlet

JSP和Servlet要放在壹起講,是因為它們都是Sun公司的J2EE(Java2platformEnterpriseEdition)應用體系中的壹部分。

Servlet的形式和前面講的CGI差不多,它是HTML代碼和後臺程序分開的。它們的啟動原理也差不多,都是服務器接到客戶端的請求後,進行應答。不同的是,CGI對每個客戶請求都打開壹個進程(Process),而Servlet卻在響應第壹個請求的時候被載入,壹旦Servlet被載入,便處於已執行狀態。對於以後其他用戶的請求,它並不打開進程,而是打開壹個線程(Thread),將結果發送給客戶。由於線程與線程之間可以通過生成自己的父線程(ParentThread)來實現資源***享,這樣就減輕了服務器的負擔,所以,JavaServlet可以用來做大規模的應用服務。

雖然在形式上JSP和ASP或PHP看上去很相似——都可以被內嵌在HTML代碼中。但是,它的執行方式和ASP或PHP完全不同。在JSP被執行的時候,JSP文件被JSP解釋器(JSPParser)轉換成Servlet代碼,然後Servlet代碼被Java編譯器編譯成.class字節文件,這樣就由生成的Servlet來對客戶端應答。所以,JSP可以看做是Servlet的腳本語言(ScriptLanguage)版。

由於JSP/Servlet都是基於Java的,所以它們也有Java語言的最大優點——平臺無關性,也就是所謂的“壹次編寫,隨處運行(WORA_WriteOnce,RunAnywhere)”。除了這個優點,JSP/Servlet的效率以及安全性也是相當驚人的。因此,JSP/Servlet雖然在國內目前的應用並不廣泛,但是其前途不可限量。

在調試JSP代碼時,如果程序出錯,JSP服務器會返回出錯信息,並在瀏覽器中顯示。這時,由於JSP是先被轉換成Servlet後再運行的,所以,瀏覽器中所顯示的代碼出錯的行數並不是JSP源代碼的行數,而是指轉換後的Servlet程序代碼的行數。這給調試代碼帶來壹定困難。所以,在排除錯誤時,可以采取分段排除的方法(在可能出錯的代碼前後輸出壹些字符串,用字符串是否被輸出來確定代碼段從哪裏開始出錯),逐步縮小出錯代碼段的範圍,最終確定錯誤代碼的位置。

JSP和ASP相比較:

運行速度、運行開銷、運行平臺、擴展性、安全性、函數支持、廠商支持、對XML的支持等等,ASP都不是JSP的對手。COM組件的復雜性實編程實現有壹定的難度。而JAVABeans和JAVA的結合卻是天衣無縫的。

JSP和ASP.NET相比較:

1.相對C#,JSP的腳本語言JAVA也是面向對象的、分布式的、解釋的語言。

2.與C#相似JAVA同樣去掉了難以理解的指針等概念,取而代之的是類和對象。

3.JSP有壹項全新的技術——Servlet(服務器端程序)很好的節約了服務器資源。

4.JAVABeans是針對ASP.NET的ServerControl的技術。只要會JAVA,JavaBeans就很容易寫出。

5.再有就是JAVA的JDBC數據庫連接技術。

6.JSP對XML同樣有十分廣泛的支持。

1)面向對象性:

ASP+將C#作為壹種面向對象語言,在很多方面來看,C#將成為微軟的與Java相似的語言。

C#另壹個有趣的地方是所有對象都自動變成為COM對象。如果C#能取得很大的市場份額,那麽它將給ASP+帶來類似於Java的功能,並且具備更快的性能,因為它可以和Windows環境緊密集成。

C#是ASP+開發中壹個最重要的功能,微軟會將C#發展成為Java的強勁對手。這也是他們.Net框架的壹個重要組成部分。我認為C#是微軟在編程市場上擊敗對手的主要工具。我期待著微軟能在這個產品後面傾註全力,這樣,C#可以成為許多程序員的又壹種選擇。C#產生的結果是將進壹步加固微軟和Sun產品的戰線。這對用戶是有利的,他們可以選擇兩者之壹來開發新的應用。

2)數據庫連接:

ASP另壹個亮點是它使用ADO對象,ODBC,OLE-DB和事務處理管理器。因此ASPWeb數據庫應用開發特別簡單。ASP+發展了更多的功能,因為有了ADO+!ADO+帶來了更強大更快速的功能。JSP和JDBC目前在易用性和性能上同ASP/ADO相比已有些落後,當新版本ASP+/ADO+出現後這樣的差別會更明顯。我個人希望SUN應盡快能花大力氣來追趕ASP+/ADO+的組合。

3)大型站點應用:

ASP+將對大型站點(webfarms)有更好的支持。事實上,微軟在這方面付出了巨大的努力。ASP+可以讓妳考慮到多服務器(multipleservers)的場合,當妳需要更強大的功能時,僅僅只需要增加壹臺服務器。整個.Net框架已經充分地提供了這個方法。ASP+提供了外部會話狀態(externalsessionstate)來提供內置式webfarm的支持。另外,由於請求的各組件相互間經過了充分的優化,所以速度很快。

於是ASP+現在可以在大型項目方面與JSP壹樣具有等同的能力。而ASP+還有價格方面的優勢,因為所有的組件將是服務器操作系統的壹部分。對於JSP,妳需要購買昂貴的應用服務器群來達到同樣的目的。

4)ASP+還提供更多的其它方面的新特性,例如:

*內置的對象緩存和頁面結果緩存。

*內置的XML支持,可用於XML數據集的簡單處理。

*服務器控制提供了更充分的交互式控制。

ASP+確實對ASP進行了較大的發展。

NET.Framework主要包括哪些內容?詳細壹點?

它是壹個語言開發軟件

NETFramework通過COMInterop(COM互操作)技術支持COM+和MTS。壹個傳統的COM應用程序能夠調用壹個.NET組件,同時.NET組件(在.NET中稱為.NETAssembly)也能夠調用壹個COM組件。這壹非常強大的雙向互操作特性使妳可以在應用程序中混合使用兩類技術。

NETFramework是微軟的幾個開發團隊壹起努力發展的成果,最主要用來產生壹個可以用來快速開發、部署網站服務及應用程序的開發平臺。這個架構是兩個項目的結果:第壹個項目的目的是用來改善Windows作業平臺上的程序開發,特別是改善COM(ComponentObjectModel,組件對象模塊。壹種微軟所制定的軟件技術;讓對象的功能可以被其它軟件所叫用,可以讓組件重復使用、容易更新及維護);第二個項目則是制作壹個以發展服務(Service)軟件為目標的開發平臺。這兩個項目團隊三年多前就已經在壹起工作,他們希望可以發展出壹種可以快速開發出以因特網為基礎,而且易學易用的開發平臺。

目前的安全問題

在今天的軟件環境中,應用程序的來源很多,它們執行很多任務。對應用程序代碼的信任是壹個主要需求,因為我們誰也不想軟件或信息遭到破壞。給予許可的安全策略不會允許對敏感信息的不適當的訪問,或將本地機器暴露給惡意的程序或甚至是有平常錯誤的代碼。

過去,安全結構提供了基於用戶帳號的隔離和訪問控制--在這些限制內給予代碼完全訪問權,並假定由特定用戶可運行的代碼具有相同的信任度。不幸的是,如果所有程序都代表某用戶運行,根據用戶對代碼的隔離對於保護壹個程序不被其它用戶使用是不夠的。另壹種情況,不能被完全信任的代碼經常被轉移到"沙箱"模型中執行,在此代碼運行於隔離環境,而不會訪問大部分的服務。

對今天應用程序的成功的安全解決方案必須能強化兩個安全模型間的平衡。它必須提供對資源的訪問,以便以完成有用的工作,它需要對應用程序的安全性作細致的控制以確保代碼被識別,檢測,並給予合適的安全級別。.NETFramework就提供了壹個這樣的安全模型。

Microsoft.NETFramework安全解決方案

.NETFramework安全解決方案基於管理代碼的概念,以及由通用語言運行時(CLR)加強的安全規則。大部分管理代碼需要進行驗證以確保類型安全及預先定義好的其它屬性的行為的安全。例如,在驗證的代碼中,聲明為接收4字節值的訪問將拒絕提供8字節參數的調用,因為不是類型安全的。驗證過程還確保了執行流只傳送到已知的位置,如方法入口點--這個過程去除了跳轉到任意位置執行的能力。

驗證將阻止不是類型安全的代碼執行,在它們引起破壞前捕獲很多常見的編程錯誤。通常的弱點--如緩存溢出,對任意內存或沒有初始化的內存的讀取,對控件的隨意傳送--都不再可能出現。這將使最終用戶受益,因為在他們執行代碼前對其進行檢查。這也有益於開發人員,他們會發現很多常見錯誤(過去壹直在困繞前開發)現在可以查明,並能阻止它們引起破壞。

CLR也能使非管理代碼運行,但非管理代碼不能從這些安全措施中受益。特殊的許可與對非管理代碼的調用能力相關,壹個強大的安全策略能確保這些許可被恰當地給予。經過很長時間後,非管理代碼到管理代碼的移植將減少對非管理代碼的調用頻率。

微軟.NETFramework安全機制的構件

基於證據的安全

.NETFramework引入了"基於證據的安全"的概念。在本質上,它是對安全策略暴露出來問題的解答:

·組合從哪個站點獲得?

組合是.NETFramework應用程序的構件。它們組成了部署,版本控制,重用,激活作用域,安全認證的基本單元。應用程序的組合是從網站上下載到客戶端的。

·組合是從哪個URL獲得的?

安全策略需要明確的地址,而組合是從這個地址下載的。

·組合是從哪個區獲得的?

區是基於代碼的位置,對安全標準,如Internet,intranet和本機等等,的描述。

·組合的強名(strongname)是什麽?

強名是由組合的創建者提供了密碼強化後的標識符。盡管它沒有提供對創建者的任何證明,但它唯壹標識了組合,確保了組合沒有被破壞過。

根據對這些問題的,及其它證據,安全策略可以對賦予組合垢合適許可進行計算。從多種來源可以得到證據,包括CLR,瀏覽器,微軟ASP.NET,及外殼--這依賴於代碼的來源。

策略驅動的信任模型使用代碼證據

當組合被調入內存進,CLR策略系統通過收集組合的證據並在策略環境中對證據進行計算,從而決定賦予組合什麽樣的許可權。CLR策略系統然後根據評估過的證據和組合作出的許可請求給予組合壹組許可。只有在組合被給予了壹組最少的許可後,或組合根本不需要許可權,組合的創建者才能知道組合正確運行。通過壹個或多個對特定許可的請求,這樣的附加需求可以被傳送室策略系統。

根據許可請求的類型,策略系統可以進壹步限制給予組合的許可(刪除不必要的許可)或甚至拒絕將組合裝入內存(如果運行組合所需的最小許可沒有被策略給予)。在不存在任何許可請求的情況下,組合永遠不會被給予多於策略系統將會給予的許可權限,請求只是進壹步限制得到的許可。

安全策略包含了許多代碼組,這些組包含了根據證據應給予的許可權。代碼組描述的許可可提供給從特定的安全區域獲得的組合,或提供給由特定發行商簽名過的組合,等等。盡管隨CLR發行了壹組默認的代碼組(及相關許可),但管理員可以對這些CLR安全的進行定置,以適合他們的特殊需求。記住,通過定義與證據相關的代碼組,任何東西都可以作為證據提交,只要安全策略可以使用它。

創建許可的的過程涉及到對證據的評估,以確定代碼組適用於哪個等級:企業,機器,和用戶。策略按上面順序對這三個等級進行評估,然後創建交插了三個等級的許可設置。管理員可以將任何壹個策略等級標記為終結(final),這樣做應付阻止在其它等級上對策略做進壹步評估。例如,管理員可以在機器級別上對組合終止策略,這樣就會阻止用戶級策略對該組合的應用。

壹旦策略完成,許可的最初設置也就創建了。組合通過從三個方面做出特定的請求可以優化這些許可:

·第壹方面是指定為了使組合運行它必須擁有的最小許可設置。如果這些許可沒有給予,那麽組合將不同調入到內存,並拋出例外。

·第二,可以指定壹組可選的許可。盡管組合希望存在這些許可,但如果無法獲得這些許可,它仍可以調入到內存。

·最後,行為特別好的組合實際上會拒絕它們所不需的有風險的許可。這三個優化選項是調入時作為聲明語句實現的。

在運行時,許可是根據代碼的執行計算的。右側的圖總結了這個過程的發生順序。組合A3將它的證據和來自主機的證據提供給策略評估器。策略評估器在創建許可時也要考慮從組合得到的許可請求,"G3"。組合A3由組合A2調用,而A2又是由組合A1調用的。當組合A3執行壹個引發安全檢查的操作時,A2和A1獲得的許可同樣也要進行檢查,以確保它們擁有A3所請求的許可權限。在這個過程中,此過程稱為堆棧遍歷(walking),堆棧中每個組合的許可權限都要進行檢查以確定所給予的權限設置是否包含安全檢查所需要的許可。如果堆棧中的每個組合被給予了安全檢查所需要的許可,調用將成功。如何任何組合沒有給予所需要的許可,堆棧遍歷過程失敗,安全例外將被拋出。

NETFramework調用的"自由"安全性壹些活動,如讀寫文件,顯示對話框,讀寫環境變量,可以通過包含在框架安全構架中的.NETFramework方法實現。這就使.NETFramework能根據安全策略允許或不允許壹個操作,而不需要程序員做額外的工作。盡管暴露了保護資源的管理類的創建者在他們的庫中做了明確的安全需求,使用.NETFramework類庫訪問受保護資源的開發人員可以自由地利用代碼訪問安全系統;他們不必作出明確的安全調用。

管理員可以通過決定給予哪些許可來優化安全策略,然後,依靠.NETFramework處理所有的安全操作。代碼訪問安全能阻止大部分的惡意攻擊,對代碼的驗證減少了緩存溢出和其它會導致安全攻擊的不期望的行為。因此,應用程序和組件生來就受到了保護,它們免於大多數安全問題的沖擊,而這些安全問題壹直困繞著本地代碼的實現。

基於角色的安全

有時根據已認證的身份或根據與代碼執行上下文相關的角色作出認證決定是合適的。例如,金融和企業軟件可以通過評估角色信息的企業邏輯加強策略。根據作出請求的用戶角色可以對金融交易的數據進行限制。出納被允許可以處理壹定金額的請求,而多於該金額的所有工作需要監督人的角色來處理。

身份可以映射到登錄系統的用戶,或由應用程序定義。相應的原則封裝了身份和其它相關的角色信息(例如,但並不限於此,用戶的"組"由操作系統定義)。

認證和授權

認證是壹個過程,它接收來自用戶的證書,並對證書的授權進行確認。如果證書是有效的,那麽用戶就可以說他擁有已認證的身份。而授權的過程是:確定認證用戶是否能夠訪問給定的資源。認證可通過系統或企業邏輯來完成,通過某個API它是或獲得的。認證API是完全可擴展的,因此開發人員根據需要使用自己的企業邏輯。開發人員可以對他們的認證需求進行編碼,也可以修改底層的認證方法而無需對他們的代碼作太大變化。除了微軟Windows?操作系統身份認證外,還有的認證方法包括基本HTTP,摘要和Kerberos,以及微軟Passport和基於窗體的認證。這些認證方法已經完全集成到ASP.NET中了。

在ASP.NET窗體認證中,用戶提供證書,並提交窗體。如果應用程序簦別請求,系統發送壹個cookie,該cookie以某種形式包含包含了證書或包含重新獲得身份的關鍵字。接下來發送的請求在頭中包含了cookie,ASP.NET處理程序通過應用程序所期望的任何有效方法對這些請求認證和授權。如果請求沒有經過認證,HTTP客戶端將用於把請求發送到認證窗體,在那裏用戶可能提供信任證書。窗體認證有時用於個性化--為已知用戶的內容進行定置。在壹些情況下,身份是問題所在而不是認證,因此用戶的個性化信息可以簡單地通過訪問用戶或獲得。

授權的目的是確定作出請求的身份是否被給予了對給定資源的訪問權。ASP.NET提供了兩種類型的授權服務:文件授權和URL授權。文件授權根據正在作用的方法和作出請求的身份決定用戶使用於哪個訪問控制列表。URL授權是URI名稱空間和不同用戶或角色間的邏輯映射。

隔離存儲

.NETFramework提供了壹個特殊的功能,隔離存儲,用於存儲數據,甚至是當不允許對文件進行訪問時--例如,當從Internet下載了壹個管理控件,並運行它,為它提供了有限的許可權但沒有權力讀寫文件。

隔離存儲是壹組新的用於.NET支持的用於本地存儲的類型和方法。在本質上,每個組合可以訪問磁盤上壹斷被隔離的存儲空間。它不允許訪問其它數據,隔離存儲只對為它創建的組合有效。

隔離存儲也可被應用程序用於保存活動記錄,保存設置,或者將狀態數據保存到磁盤上以備將來之用。因為隔離存儲的位置是預先決定好的,所以隔離存儲為指定唯壹存儲空間提供了壹種方便的方式,而不需要決定文件路徑。

從本地企業局域網獲得的代碼具有相似的限制,但更少,它可以訪問大限額的隔離存儲。最後,從受限站點區域(不信任站點)來的代碼沒有對隔離存儲的訪問權。

加密

.NETFramework提供了壹組加密對象,它們支持加密算法、數字簽名、散列、生成隨機數,是通過眾所周知的運算法則實現的,如RSA,DSA,Rijndael/AES,TripleDES,DES,和RC2,以及MD5,SHA1,SHA-256,SHA-384和SHA-512散列算法。同時還支持在IETF和W3C開發的XML數字簽名規範。.NETFramework使用加密對象支持內部服務。這些對象還作為管理代碼提供給需要加密支持的開發人員。

如何指定安全性?

如果要對組合運行時的行為進行修改,根據程序員的需要,可以作出聲明式安全或強迫式安全的修改。

聲明式安全

聲明式安全使程序員可以直接在組合代碼的元數據中為組合指定安全需求。許可請求和所有其它形式的聲明式安全是在代碼中是作為定置屬性指定的。類,屬性和方法的註釋用於優化許可。例如,聲明式安全可用於類的調用者在調用方法前檢查調用者是否被已知地行商簽名過,或有壹個特定的強名。

由於聲明屬性是組合元數據的壹部分,所以組合的安全需求易於辨別。可以使用工具對組合進行掃描,以發現哪些方法需要某些許可,哪些方法斷言了某些許可。

當被請求的活動和許可在編譯時是知道時,聲明式檢查可作為選擇的解決方案之壹。例如,如果方法總是檢查對C:temp的寫訪問許可,那麽許可檢查就會從聲明中得到好處。另壹方面,如果被請求的具有訪問權的位置發生了變化,那麽強迫式安全也許是壹個比較好的解決方案。

強迫式安全

強迫式安全直接在代碼中實現。程序員

  • 上一篇:Elasticsearch date 類型詳解
  • 下一篇:突破之前的高源碼
  • copyright 2024編程學習大全網