目錄
目錄X

動易3.5版本產(chǎn)品將全面支持IIS7眾多特性

簡述
 1、IIS的定義
   IIS是Internet Information Server的縮寫,它是微軟公司主推的WEB服務(wù)器,現(xiàn)在用戶一般常用的版本是Windows 2003里面包含的IIS 6或者是更早的IIS 5,最新版本為IIS 7.0。
 
 2、目前支持IIS7.0的軟件現(xiàn)狀
   目前大部分軟件是以兼容性的角度來支持IIS7.0,其實只是IIS7.0模擬IIS6.0的運行模式,并沒有完全發(fā)揮出IIS7.0的優(yōu)勢。
 
 3、動易軟件產(chǎn)品支持IIS7.0的特點
   動易核心產(chǎn)品研發(fā)部門為了不斷提升系統(tǒng)性能,積極跟蹤微軟最新技術(shù),對產(chǎn)品各方面的運行環(huán)境支持進(jìn)行了認(rèn)真的研究,發(fā)揮系統(tǒng)環(huán)境的改善對應(yīng)用程序的提升,所以我們進(jìn)一步完善了產(chǎn)品對IIS7.0集成模式的支持,發(fā)揮IIS 7.0所有新特性,如模塊化后減少通過HttpModule的次數(shù)提高性能、通過文本文件配置IIS、安全方面的增強(qiáng)等等。
 
動易系統(tǒng)產(chǎn)品對IIS 7的支持
ASP.NET 2.0和IIS 7發(fā)生不兼容變化
  IIS7的主要部分已被重新編寫,重寫的大部分都涉及到新的集成模式,該模式允許.NET模組可以在IIS管道的任何階段掛接進(jìn)來。然而,當(dāng)我們讓ASP.NET運行于這一集成模式時,就會曝露出一些無法兼容的改變。
  傳統(tǒng)的HTTP Module和Handler必須在web.config文件中重新進(jìn)行配置;
  不再支持BeginRequest和AuthenticateRequest階段中的身份模擬(Impersonation);
  應(yīng)用再也不能同時使用Form和Windows身份證驗;
  非標(biāo)準(zhǔn)Http客戶端在使用Windows身份驗證時可能會遇到問題,因為身份驗證的功能已移至內(nèi)核中;
  其它在某些特定時刻引發(fā)的認(rèn)證問題,如當(dāng)客戶端正在進(jìn)行身份模擬時;
  不再支持全局事件方法DefaultAuthentication_OnAuthenticate,事件WindowsAuthentication_OnAuthenticate也不再是每次都會被觸發(fā);
Passport驗證已被徹底標(biāo)識為過期,與以前所有的不兼容變化所不同的是,這一功能將徹底失效,即使以傳統(tǒng)模式運行IIS,Passport也不再有效。
 
Web.config的配置情況改變
  根據(jù)IIS 7的新情況,兼容IIS6等,對Web.config進(jìn)行了重新配置,主要是對HTTP Module和Handler 進(jìn)行了重新調(diào)整。
  Web.config 文件中的 system.webServer 節(jié)用于指定適用于 Web 應(yīng)用程序的 IIS 7 設(shè)置。同時還保留了原HttpModule的配置,使其同時對更低版本的IIS的支持。
對HttpModule重寫和調(diào)整
  由于IIS7對HTTP Module作了很大調(diào)整,使很多以往支持的方法事件在IIS7集成模式中不再支持,集成模式下運行的優(yōu)勢可參見附錄中的集成模式與經(jīng)典模式的比較。
  如:
  不再支持BeginRequest和AuthenticateRequest階段中的身份模擬
  在Application_Start里使用不再支持Request。
  為了適應(yīng)IIS7的這些變化,動易系列產(chǎn)品對HttpModule進(jìn)行重寫,以使其適應(yīng)IIS7集成模式。
  例如:
  在應(yīng)用程序運行時更新系統(tǒng)虛似目錄,這項工作是放在Application_Start 中進(jìn)行,而Application_Start中卻不再支持 Request.ApplicationPath。如果把這項目工作放到Application_BeginRequest中,這將會浪費很多性能。為了解決這個問題,我們把取得虛似目錄的方法更改為更加通用的HttpRuntime.AppDomainAppVirtualPath。這樣,問題得以解決。
 
IIS 7 完全整合 .NET 之后,這些 ASP.NET 模塊不只能處理 ASP.NET 網(wǎng)頁程序,也能處理其他如 ASP 程序、PHP 程序或靜態(tài) HTML 網(wǎng)頁,也因為 ASP.NET 的諸多功能已經(jīng)成為 IIS 7 的一部份,因此 ASP 程序、PHP 程序或靜態(tài) HTML 網(wǎng)頁等類型的要求,也能使用像是Forms認(rèn)證(Forms Authentication)或輸出緩存(Output Cache)等。因此,默認(rèn)情況下HTTP Module需要處理更多沒有必須的工作。如css、jpg、gif、html等某些不需要HTTPModule檢查的請求會浪費系統(tǒng)很多沒有必要的性能。為了解決這個問題,我們對HTTPModule模塊化和可配置等改進(jìn)。重新合理調(diào)整HTTPModule的功能模塊,使其各施其職。HTTPModule的可配置化,可以隨時根據(jù)不同的需求進(jìn)行調(diào)進(jìn)。
大家可以在Config/ PageModule.config 下看到:
                       圖: HTTPModule配置文件
 
  經(jīng)過上面的調(diào)整和優(yōu)化,使系統(tǒng)在IIS7集成模式下更能發(fā)揮IIS7的特性。
 
 
未來針對IIS7的開發(fā)
IIS 7 允許自行以 ASP.NET API 開發(fā)并加入模塊,因此 ASP.NET 網(wǎng)頁開發(fā)人員將更容易擴(kuò)充 IIS 7 和網(wǎng)站應(yīng)用程序的功能,甚至能自行以 .NET 編寫管理 IIS 7 的程序(例如以程序控制 IIS 7 以建立網(wǎng)站或虛擬目錄)。
  出于這種種特性,未來動易產(chǎn)品有將針對IIS7 開發(fā)更加完善,功能強(qiáng)大的網(wǎng)站管理系統(tǒng),如站群,子域名等多站點管理系統(tǒng)等。敬請密切期待…
 
附:IIS7介紹
Internet Information Services(IIS,互聯(lián)網(wǎng)信息服務(wù)),是由微軟公司提供的基于運行Microsoft Windows的互聯(lián)網(wǎng)基本服務(wù)。常用的版本是Windows 2003里面包含的IIS 6或者是更早的IIS 5,它與Windows NT Server完全集成,允許使用Windows NT Server內(nèi)置的安全性以及NTFS文件系統(tǒng)建立強(qiáng)大靈活的Internet/Intranet站點。IIS支持ISAPI,使用ISAPI可以擴(kuò)展服務(wù)器功能, IIS的設(shè)計目的是建立一套集成的服務(wù)器服務(wù),用以支持HTTP、FTP和SMTP,它能夠提供快速且集成了現(xiàn)有產(chǎn)品,同時可擴(kuò)展的Internet服務(wù)器。
 
新的IIS 7.0中加入了更多的安全方面的設(shè)計,用戶現(xiàn)在可以通過微軟的.Net語言來運行服務(wù)器端的應(yīng)用程序。除此之外,通過IIS7新的特性來創(chuàng)建模塊將會減少代碼在系統(tǒng)中的運行次數(shù),將遭受黑客腳本攻擊的可能性降至最低。下面就讓我們一起簡單看看IIS7中五個最為核心的增強(qiáng)特性:
完全模塊化IIS
如果你非常熟悉流行的Apache Web server軟件,那么你會知道它最大的優(yōu)勢就在于它的定制化,你可以把它配置為只能顯示靜態(tài)的HTML,也可以動態(tài)的加載不同的模塊以允許不同類型的服務(wù)內(nèi)容。而以前使用的IIS卻一直無法很好的實現(xiàn)這一特性,這樣就造成了兩方面的問題:其一,由于過多用戶并未使用的特性對于代碼的影響,性能方面有時不能讓用戶滿意;第二,由于默認(rèn)的接口過多所造成的安全隱患。
新的IIS7則完全解決了這個問題,IIS7從核心層講被分割成了40多個不同功能的模塊。像驗證、緩存、靜態(tài)頁面處理和目錄列表等功能全部被模塊化。這意味著你的Web服務(wù)器可以按照你的運行需要來安裝相應(yīng)的功能模塊。可能存在安全隱患和不需要的模塊將不會再加載到內(nèi)存中去,程序的受攻擊面減小了,同時性能方面也得到了增強(qiáng)。
 
通過文本文件配置IIS7
  IIS7另一大特性就是管理工具使用了新的分布式web.config配置系統(tǒng)。IIS7不再擁有單一的metabase 配置儲存,而將使用和ASP.NET支持的同樣的web.config文件模型,這樣就允許用戶把配置和web應(yīng)用的內(nèi)容一起存儲和部署,無論有多少站點,用戶都可以通過web.config文件直接配置。
同時管理工具支持“委派管理(delegated administration)”,用戶可以將一些可以確定的web.config文件通過委派的方式,委派給企業(yè)中其他的員工,當(dāng)然在這種情形下,管理工具里顯示的只是客戶自己網(wǎng)站的設(shè)置,而不是整個機(jī)器的設(shè)置,這樣IIS管理員就不用為站點的每一個微小變化而費心,版本控制同樣簡單,用戶只需要在組織中保留不同版本的文本文件,然后在必要的時候恢復(fù)它們就可以了。
用戶現(xiàn)在可以用管理工具在Windows客戶機(jī)器上創(chuàng)建和管理任意數(shù)目的網(wǎng)站。而不再局限于單個網(wǎng)站,同時相比IIS之前的版本,IIS7的管理界面也更加的友好和強(qiáng)大,此外IIS7的管理工具是用.NET和Windows Forms寫成的,是可以被擴(kuò)展的。這意味著用戶可以添加自己的UI模塊到管理工具里,為自己的HTTP 運行時模塊和配置設(shè)置提供管理支持。
 
MMC 圖形模式管理工具
IIS7安全方面的增強(qiáng)
安全問題永遠(yuǎn)是微軟被攻擊的重中之重,其實并非微軟對安全漠不關(guān)心,實在是因為微軟這艘巨型戰(zhàn)艦過于龐大,難免百密一失,好在微軟積極的響應(yīng)著每一個安全方面的意見與建議。IIS的安全問題則主要集中在有關(guān).NET程序的有效管理以及權(quán)限管理方面的問題。而IIS 7正是針對IIS 服務(wù)器遇到了安全問題做了相應(yīng)的增強(qiáng)。
在IIS7中,.NET應(yīng)用程序直接通過IIS代碼運行而不再發(fā)送到Internet Server API擴(kuò)展上,這樣就減少了可能存在的風(fēng)險,并且提升了性能,同時管理工具內(nèi)置對ASP.NET 3.0的成員和角色管理系統(tǒng)提供管理界面的支持。這意味著用戶可以在管理工具里,創(chuàng)建和管理角色和用戶,以及給用戶指定角色,下面是IIS 7 完整的組件分報圖。

IIS 7 完整的組件分報圖
IIS7的Windows PowerShell 管理環(huán)境
相信關(guān)注腳本編程或者是Exchange Server 2007的朋友都不會對Windows PowerShell感到陌生, Windows PowerShell是一個特為系統(tǒng)管理員設(shè)計的Windows 命令行shell 。在這個 shell 中包括一個交互提示和一個可以獨立,或者聯(lián)合使用的腳本環(huán)境。對于熱愛腳本管理的IT pro們Windows PowerShell必將讓他們愛不釋手。而對于IIS服務(wù)器,Windows PowerShell同樣可以提供全面的管理功能。
不過雖然PowerShell也可以管理運行在Windows Server 2003上的IIS6,但是IIS7才是特為通過PowerShell的命令行來進(jìn)行管理的。它包括了新的APPCMD功能,APPCMD通過標(biāo)準(zhǔn)的命令行界面來創(chuàng)建和配置站點,這樣的命令行工具的應(yīng)用場景也非常常見,當(dāng)用戶的環(huán)境中用到例如腳本管理的時候,APPCMD就將發(fā)揮非常其極大的優(yōu)勢。

Windows PowerShell 管理圖
IIS7 遷移
IIS7 遷移網(wǎng)站比IIS6.0更方便,因為Apache Web server它最大的優(yōu)勢就在于它的定制化管理,IIS7現(xiàn)在使用Apache概念,所以把站點的配置文件拷貝到另一臺IIS7主機(jī)上即可以。
ASP.NET和IIS 7之集成
在早期的IIS版本中,開發(fā)人員需要編寫ISAPI擴(kuò)展/過濾器來擴(kuò)展服務(wù)器的功能。除了寫起來非常痛苦外,ISAPI在如何接入服務(wù)器以及允許開發(fā)人員定制方面也是非常有限。例如,你無法在ISAPI擴(kuò)展中實現(xiàn)URL重寫代碼(注:ASP.NET是以ISAPI擴(kuò)展的方式實現(xiàn)的)。假如你把運行時間長的代碼編寫成ISAPI過濾器的話,結(jié)果是你將占用web服務(wù)器的I/O線程(這就是我們不讓托管代碼在請求的過濾器執(zhí)行階段運行的原因)。
我們在IIS7中對核心IIS處理引擎做的一個重大的架構(gòu)級變動是通過一個新的模塊化的請求管道架構(gòu)來促成極其豐富的擴(kuò)展性。你現(xiàn)在可以通過與web服務(wù)器注冊一個HTTP擴(kuò)展性模塊(HTTP Extensibility Module),在任意一個HTTP請求的生命周期的任何地方編寫代碼。這些擴(kuò)展性模塊可以使用native的C 代碼或.NET托管代碼來編寫(你可以使用現(xiàn)有的ASP.NET System.Web.IHttpModule接口來實現(xiàn))。
所有“內(nèi)置”的IIS7功能(認(rèn)證,授權(quán),靜態(tài)文件供應(yīng),目錄清單支持,經(jīng)典的ASP,記錄日志等),現(xiàn)在都是使用這個公開的模塊化的管道API來實現(xiàn)的。這意味著你可以除去這些IIS7“內(nèi)置”功能的任意一個,而以你自己的實現(xiàn)來替換/擴(kuò)展這些功能。
IIS 7上的ASP.NET本身也從以ISAPI的實現(xiàn)形式變成直接接入IIS7管道的模塊:
IIS6.0 和IIS7 比較圖
 
總而言之,IIS 7將為Web管理員以及Web愛好者提供更加豐富,更加易用的管理工具。在新的IIS7中,無論是管理方面還是安全方面都得到了全新的設(shè)計,而從用戶群的角度上講,利用IIS7, 個人用戶可以更快,更簡便的建立自己的站點,而企業(yè)用戶則可以更加全面,更加安全的維護(hù)和管理自己的WEB環(huán)境。
IIS7的集成模式和經(jīng)典模式
IIS7中的Web應(yīng)用程序有兩種配置模式:經(jīng)典模式和集成模式。經(jīng)典模式是為了與之前的版本兼容,使用ISAPI擴(kuò)展來調(diào)用ASP.NET運行庫,原先運行于IIS6.0下的Web應(yīng)用程序遷移到IIS7中只要將應(yīng)用程序配置成經(jīng)典模式,代碼基本不用修改就可以正常運行。集成模式是一種統(tǒng)一的請求處理管道,它將ASP.NET請求管道與IIS核心管道組合在一起,這種模式能夠提供更好的性能,能夠?qū)崿F(xiàn)配置和管理的模塊化,而且增加了使用托管代碼模塊擴(kuò)展IIS時的靈活性。如果老的Web應(yīng)用程序運行于IIS7的集成模式下,可能需要對應(yīng)用程序的web.config文件進(jìn)行修改,尤其是使用了實現(xiàn)IHttpHandler接口的自定義模塊的情況。IIS7在同一個服務(wù)器上能夠同時支持兩種模式的應(yīng)用程序。
IIS6.0中ASP.NET MMC管理單元用于配置ASP.NET,IIS7中ASP.NET應(yīng)用程序的管理域IIS管理更加緊密的集成在一起,不存在單獨的管理單元,所有的IIS和ASP.NET配置都是使用IIS管理器完成的。IIS7配置信息基于.NET Framework配置系統(tǒng),所以IIS7中運行的應(yīng)用程序的web.config文件同時包含web服務(wù)器和ASP.NET配置設(shè)置,例如可以再web.config文件中設(shè)置擴(kuò)展名和文件的映射(IIS6.0中必須在IIS中進(jìn)行配置)。
 
集成模式優(yōu)點
 
IIS 7 完全整合 .NET 之后,架構(gòu)的處理順序有了很大的不同(如下圖),最主要的原因就是 ASP.NET 從 IIS 插件(ISAPI extension)的角色,進(jìn)入了 IIS 核心,而且也能以 ASP.NET 模塊負(fù)責(zé)處理 IIS 7 的諸多類型要求。這些 ASP.NET 模塊不只能處理 ASP.NET 網(wǎng)頁程序,也能處理其他如 ASP 程序、PHP 程序或靜態(tài) HTML 網(wǎng)頁,也因為 ASP.NET 的諸多功能已經(jīng)成為 IIS 7 的一部份,因此 ASP 程序、PHP 程序或靜態(tài) HTML 網(wǎng)頁等類型的要求,也能使用像是Forms認(rèn)證(Forms Authentication)或輸出緩存(Output Cache)等 ASP.NET 2.0 的功能(但須修改 IIS 7 的設(shè)定值)。也因為 IIS 7 允許自行以 ASP.NET API 開發(fā)并加入模塊,因此 ASP.NET 網(wǎng)頁開發(fā)人員將更容易擴(kuò)充 IIS 7 和網(wǎng)站應(yīng)用程序的功能,甚至能自行以 .NET 編寫管理 IIS 7 的程序(例如以程控 IIS 7 以建置網(wǎng)站或虛擬目錄)
IIS 7 的執(zhí)行架構(gòu)圖(集成托管信道模式下的架構(gòu))
 
參考資料: 
ASP.NET 2和IIS 7發(fā)生不兼容變化
Windows Server 2008中的IIS7的五大特性
Server2003對決2008之IIS6對比IIS7
【打印正文】 發(fā)布時間:2010-01-29 16:37:26 瀏覽次數(shù): 作者:佚名 來源:本站原創(chuàng)
×

用戶登錄