目錄
目錄X

動易3.5版本產品將全面支持IIS7眾多特性

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

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

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

用戶登錄