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