close

ASP.NET 與 ASP 的差異:.NET Framework 是 ASP.NET 的基礎
ASP.NET優於ASP之處,不是ASP版本的更新,而是一個全新的統一Web開發平臺。ASP的直譯式語言架構,每次讀取網頁皆需逐行編譯程式碼,影響執行效率,而ASP.NET則是編譯式語言,執行編譯過的原生機器碼使效能大幅提升。ASP.NET和ASP一樣可以在記事本撰寫程式,更重要的是,ASP.NET不限於VBScript或JScript語言,可搭配Visual Studio .NET工具,使用任何.NET相容語言開發ASP.NET,包括Visual Basic .NET、Visual C#及JScript .NET。

ASP的副檔名為「.asp」,ASP.NET的副檔名為「.aspx」,具備ASP開發技術的人,會發現ASP.NET的撰寫模式並不陌生,但是,ASP.NET物件模型作了大幅修改,更加結構化和物件導向,並非完全回溯相容(Backward Compatible),大部分的ASP網頁必須稍加修改才能在ASP.NET下執行。

 

安裝ASP.NET並不會毀損ASP應用程式,開發人員不用擔心必須一次把所有ASP網頁轉換成ASP.NET網頁, IIS Web 伺服器容許ASP和ASP.NET網頁並存,不會互相干擾,但要特別注意ASP和ASP.NET不能共用session和應用程式狀態。

開發人員可於ASP.NET的應用程式檔Global.asax,撰寫應用程式層級的程式碼,回應ASP.NET或HTTP模組引發的應用程式層級的事件。Global.asax存放於ASP.NET應用程式的根目錄,並設定拒絕任何個別網頁呼叫使用,外部使用者也無法下載或檢視內容。ASP.NET的Global.asax與ASP的G.lobal.asa可以共同存在,且是選擇性的檔案,沒有應用程式層級的判斷和session事件處理程式,則不需要定義。

.NET Framework是新的運算平臺,簡化了在網際網路高度分散式的環境中,開發應用程式的困難度。.NET不是全新的作業系統,開發端只要安裝.NET Framework Component Update,即可將Windows升級成支援.NET Framework的工作平臺,伺服器則必須是Windows 2000 Server或Windows XP Professional。

.NET Framework有兩個主要的元件:Common Language Runtime和.NET Framework類別庫。Common Language Runtime則是.NET Framework的基礎,可視為程式執行期間管理程式碼的代理程式,提供記憶體的管理、執行緒的執行、程式碼的執行、程式碼安全驗證及編譯等服務。

Microsoft .NET Framework類別庫是作業系統層級的物件導向類別庫,與Common Language Runtime緊密整合,可供程式語言呼叫。所有支援.NET的程式語言都可以使用.NET Framework類別庫,減少學習新語言的時間。

ASP.NET 應用程式的兩種類型,效能大幅提升
建立ASP.NET應用程式可視企業需求選擇開發Web Form或XML Web Services,或者組合應用,因為兩者都建立在Common Language Runtime之上,所以都能享有相關技術的優點:安全性、繼承性、效能的提昇、執行環境的管理等。Web Form就是ASP.NET網頁,它與所有的瀏覽器及用戶端裝置例如WAP手機、PDA等相容, 所以aspx程式可以在任何用戶端裝置中執行,並自動轉譯成任何可使用HTTP的語言,包括HTML、XML、WML和ECMAScript。

Web Form網頁的使用者介面包含兩個部分:視覺化元件和程式邏輯。視覺化元件就是Web Form網頁,包含靜態HTML和ASP.NET伺服器控制項。程式邏輯就是與表單互動的程式碼,可以選擇直接撰寫在ASP.NET網頁裏面,若用Visual Studio .NET開發ASP.NET網頁,會自動將程式碼建置在不同的檔案中,稱作「程式碼後置」(Code-Behind)檔,可使用Visual Basic .NET或Visual C#撰寫程式碼後置檔,副檔名分別會是「.aspx.vb」和「.aspx.cs」。

Web專案中所有的程式碼後置類別檔,會被編譯成一個動態連結資料庫.dll。.ASPX檔也會被編譯,但略有不同,使用者首次瀏覽網頁時,ASP.NET會自動把它編譯成繼承自程式碼後置檔的.dll檔,當使用者連結網頁時,.dll檔會在伺服器執行,並動態產生網頁輸出。

XML Web Services是提供遠端伺服器服務的方法,主要服務的對象不是人,而是網路上的應用程式,透過XML文字格式和SOAP傳輸協定,資料可以穿越防火牆,進行企業對企業或者企業對個人的資料交換。

ASP.NET是編譯式語言,所以執行效率大幅提升,編譯方法是使用JIT(Just-in-Time Compilation;即時編譯),當使用者首次存取某ASPX網頁時,JIT Compiler便會即時將程式碼編譯成原生機器碼(Native Code),並以機器碼執行並暫存於快取,再有人存取同一個網頁時,系統便直接執行機器碼,不需再耗費系統資源和編譯時間。

快取功能可將指定的網頁和物件暫存起來,避免重複建立要求過的資訊,以節省時間和資源。ASP.NET提供兩種快取模式:輸出快取和應用程式資料快取。輸出快取使用@OutputCache,將經常存取的整分或部分網頁暫存一段時間,以提升Web伺服器的效能。應用程式資料快取則是以程式設計的方式將物件(如:資料集),暫存在伺服器的記憶體中一段時間,節省重複建立物件的時間與資源。

ASP.NET是可以輕易拆解的,開發人員可移除與開發的應用程式無關的模組。此外,ASP.NET支援兩個效能計數器群組:系統和應用程式。使用者可在Windows系統的效能計數器記錄檔中,新增有關ASP.NET的記錄檔,加入ASP.NET系統及ASP.NET應用程式的效能物件,開發人員及系統管理人員便能監視應用程式的效能。

依程式需求選擇狀態管理方法,擴充式且可繼承的組態設定,可啟動追蹤功能偵錯
HTTP是無狀態(stateless)的通訊協定,它不會自動識別各個要求是否來自相同的使用者,也無法知道使用者目前是否仍在檢視網頁。每一次要求的往返,網頁都會重新建立,所以除非設定快取,否則Web伺服器並不會保留網頁的變數值和控制項。藉著釋放伺服器的資源,Web應用程式才能同時支援成千上萬的使用者連線使用。為了克服Web程式設計的限制,ASP.NET內含檢視狀態的功能,會儲存網頁和控制項的屬性,並提供狀態管理機制,可儲存變數和特定應用程式或session的資訊,也可偵測第一次要求及張貼表單的時間。

應用程式的狀態可儲存全域性的資料,存取應用程式狀態最常用的方法是透過Page物件的Application屬性。開發人員應考量使用全域性變數的影響,儲存為應用程式狀態的資料,在被移除或取代之前,所佔用的記憶體不會被釋放,若要保留大型暫時性資料區塊,使用ASP.NET快取是較佳的方案。由於Common Language Runtime所設計的自訂物件沒有執行緒的限制,如果沒有撰寫同步處理程式,可能造成死結、競爭和存取違規的問題。此外,存取全域變數可能會影響延展性及安全性,而且如果系統當機或處理序重新啟動,資料將會遺失,所以若要避免重要資料遺失,應儲存在資料庫或其他持久性儲存設備。

工作階段(session)狀態管理功能,能自動識別單一用戶端的要求,在伺服器上儲存session資料,可供跨網頁的要求使用。當使用者在設定時間內未再度使用應用程式,便自動釋放資料。ASP.NET支援數個ASP尚未提供的功能,例如能自應用程式毀損中復原、跨多個背影工作處理分割應用程式,大幅改善應用程式的可用性和延展性,跨多個Web Form電腦分割應用程式。

在網頁之間傳遞訊息是經常需要的,可使用Server物件的Transfer方法傳遞資料,若無全性考量,使用cookie或隱藏欄位等方法,將資料儲存在用戶端,可享有較快速的伺服器效能。ASP.NET組態是擴充式基礎架構,可在首次部署應用程式時定義組態設定,也可隨時加入或修改設定,ASP.NET會自動偵測並套用新的設定,不需要重新啟動IIS或重新開機,使運作中的Web應用程式及伺服器的衝擊降到最低。

組態資訊儲存在XML架構的文字檔,可使用任何文字編輯器編輯組態檔,多個組態檔的檔名都命名為Web.config,存放在應用程式伺服器的多個目錄下,子目錄的組態檔會繼承父目錄的所有組態設定。\WINNT\ Microsoft.NET\Framework\version\
CONFIG\Machine.config是整個Web伺服器適用的組態設定。

開發人員常需要在程式中撰寫變數或判斷提示(Assert)來偵錯,程式部署時又必須移除偵錯陳述式,避免程式執行時,顯示奇怪的訊息。ASP.NET引進新功能,允許在網頁或應用程式中啟用追蹤功能-@Page指示詞的Trace屬性,可直接在程式碼中撰寫偵錯陳述式,程式完成時不用移除他們,只要把Trace屬性設定改為False,即停用網頁追蹤功能。

授權、驗證和模擬是網站安全機制,部署元件輕而易舉
多數的網站資源是開放給所有使用者存取,但是像信用卡資料、股票交易資料、付費資訊等不能公開的資料,則需要安全的防護機制,才能確保資料的安全性和使用者權益。ASP.NET結合Microsoft .NET Framework和IIS提供的Web應用程式驗證、授權及模擬三種主要的安全性機制。

驗證可透過帳號密碼、數位簽章、智慧卡等憑證資料,確認使用者身分。當登入者通過驗證,便可依據使用者權限,授權能否進行讀取、寫入、新增、修改、刪除等作業。模擬主要的目的是判斷使用者的要求,在他們自己的帳戶之下執行,或在本機系統帳戶之下執行。模擬功能預設是停用的,開發者必須在組態檔加入模擬設定:。當要求從IIS傳送到應用程式時,ASP.NET會檢查組態檔,是否啟用使用者帳號模擬,或透過匿名帳號存取本機資料。

部署ASP元件十分麻煩,因為IIS會鎖定(lock)線上服務的元件,所以更新元件必須先停掉IIS服務,再執行regsvr32.exe註冊新的元件,最後再啟動IIS服務。

ASP.NET在這方面有了很大的進步,IIS不再鎖定dll檔,所以可在服務不中斷的情況之下,將新版的元件複製到指定的目錄下。相較於ASP,ASP.NET在安全性、效能、相容性、延展性各方面都大幅改善許多,雖然ASP和ASP.NET可以並存,但是以ASP.NET的優異性來看,逐步將ASP程式移轉到ASP.NET才是長遠的做法。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 hsiung03 的頭像
    hsiung03

    hsiung.博格 ERP軟體

    hsiung03 發表在 痞客邦 留言(0) 人氣()