標籤:

淺談 IIS7.0 架構

淺談 IIS7.0 架構

從安全的觀點來考慮,這是IIS所涉及的一個新領域。 如此多的新特性,讓我們對Windows Server2008中的IIS7充滿了渴望,下面就讓我們一起看看IIS中五個最為核心的增強特性。

  IIS是Internet Information Server的縮寫,它是微軟公司主推的WEB伺服器,現在用戶一般常用的版本是Windows2003裡面包含的IIS 6或者是更早的IIS 5,IIS與Window NTServer完全集成在一起,因而用戶能夠利用Windows NT Server和NTFS(NT File System,NT的文件系統)內置的安全特性,建立強大、靈活而安全的Internet和Intranet站點。IIS支持ISAPI,使用ISAPI可以擴展伺服器功能, IIS的設計目的是建立一套集成的伺服器服務,用以支持HTTP、FTP和SMTP,它能夠提供快速且集成了現有產品,同時可擴展的Internet伺服器。

  新的IIS7在Windows Server2008中加入了更多的安全方面的設計,用戶現在可以通過微軟的.Net語言來運行伺服器端的應用程序。除此之外,通過IIS7新的特性來創建模塊將會減少代碼在系統中的運行次數,將遭受黑客腳本攻擊的可能性降至最低。從安全的觀點來考慮,這是IIS所涉及的一個新領域。 如此多的新特性,讓我們對Windows Server2008中的IIS7充滿了渴望,下面就讓我們一起看看IIS中五個最為核心的增強特性:

  完全模塊化的IIS

  

  如果你非常熟悉流行的Apache Web server軟體,那麼你會知道它最大的優勢就在於它的定製化,你可以把它配置為只能顯示靜態的HTML,也可以動態的載入不同的模塊以允許不同類型的服務內容。而現在使用的IIS卻無法很好的實現這一特性,這樣就造成了兩方面的問題:其一,由於過多用戶並未使用的特性對於代碼的影響,性能方面有時不能讓用戶滿意;第二,由於默認的介面過多所造成的安全隱患。

  新的IIS7則完全解決了這個問題,IIS7從核心層講被分割成了40多個不同功能的模塊。像驗證、緩存、靜態頁面處理和目錄列表等功能全部被模塊化。這意味著你的Web伺服器可以按照你的運行需要來安裝相應的功能模塊。可能存在安全隱患和不需要的模塊將不會再載入到內存中去,程序的受攻擊面減小了,同時性能方面也得到了增強。

  通過文本文件配置的IIS7

  IIS7另一大特性就是管理工具使用了新的分散式web.config配置系統。IIS7不再擁有單一的metabase 配置儲存,而將使用和ASP.NET支持的同樣的web.config文件模型,這樣就允許用戶把配置和web應用的內容一起存儲和部署,無論有多少站點,用戶都可以通過web.config文件直接配置,這樣當公司需要掛接大量的網站時,可能只需要很短的時間,因為管理員只需要拷貝之前做好的任意一個站點的web.config文件,然後把設置和web應用一起傳送到遠程伺服器上就完成了,沒必要再寫管理腳本來定製配置了。

  同時管理工具支持「委派管理(delegated administration)」,用戶可以將一些可以確定的web.config文件通過委派的方式,委派給企業中其他的員工,當然在這種情形下,管理工具里顯示的只是客戶自己網站的設置,而不是整個機器的設置,這樣IIS管理員就不用為站點的每一個微小變化而費心,版本控制同樣簡單,用戶只需要在組織中保留不同版本的文本文件,然後在必要的時候恢復它們就可以了。

  微軟的產品向來以用戶界面友好引以為豪,然而作為為IT人士設計的IIS7伺服器這一點卻好像並不明顯,回想從IIS 4 到IIS 6 ,提供給用戶的管理控制台操作起來並不十分方便,而且由於技術等原因的限制,用戶很難通過一個統一的界面來實現全部的管理工作。

  

   MMC 圖形模式管理工具

  而在新的IIS 7中,這一問題得到了明顯的改觀,用戶現在可以用管理工具在Windows客戶機器上創建和管理任意數目的網站。而不再局限於單個網站,同時相比IIS之前的版本,IIS7的管理界面也更加的友好和強大,此外IIS7的管理工具是用.NET和Windows Forms寫成的,是可以被擴展的。這意味著用戶可以添加自己的UI模塊到管理工具里,為自己的HTTP 運行時模塊和配置設置提供管理支持。

  IIS 7安全方面的增強

  安全問題永遠是微軟被攻擊的重中之重,其實並非微軟對安全漠不關心,實在是因為微軟這艘巨型戰艦過於龐大,難免百密一失,好在微軟積極的響應著每一個安全方面的意見與建議。IIS的安全問題則主要集中在有關.NET程序的有效管理以及許可權管理方面的問題。而IIS 7正是針對IIS 伺服器遇到了安全問題做了相應的增強。

  在新版本中IIS 和ASP.NET 管理設置集成到了單個管理工具里。這樣,用戶就可以在一個地方查看和設置認證和授權規則,而不是像以前那樣要通過多個不同的對話框來做。這給管理人員提供了一個更加一致和清晰的用戶界面,以及web平台上統一的管理體驗。

  在IIS7中,.NET應用程序直接通過IIS代碼運行而不再發送到Internet Server API擴展上,這樣就減少了可能存在的風險,並且提升了性能,同時管理工具內置對ASP.NET 3.0的成員和角色管理系統提供管理界面的支持。這意味著用戶可以在管理工具里,創建和管理角色和用戶,以及給用戶指定角色,下面是IIS 7 完整的組件分報圖。

  

   IIS 7 完整的組件分報圖

  IIS 7的Windows PowerShell 管理環境

  相信關註腳本編程或者是Exchange Server 2007的朋友都不會對Windows PowerShell感到陌生, Windows PowerShell是一個特為系統管理員設計的Windows 命令行shell 。在這個 shell 中包括一個交互提示和一個可以獨立,或者聯合使用的腳本環境。對於熱愛腳本管理的IT pro們Windows PowerShell必將讓他們愛不釋手。而對於IIS伺服器,Windows PowerShell同樣可以提供全面的管理功能。

  不過雖然PowerShell也可以管理運行在Windows Server 2003上的IIS6,但是IIS7才是特為通過PowerShell的命令行來進行管理的。它包括了新的APPCMD功能,APPCMD通過標準的命令行界面來創建和配置站點,這樣的命令行工具的應用場景也非常常見,當用戶的環境中用到例如腳本管理的時候,APPCMD就將發揮非常其極大的優勢。

  IS 7.0是包括在Windows Vista客戶機上的,該操作系統的家庭版本也帶有IIS 7.0(而不象IIS 5.1,只有在XP Professional上才有)。伺服器的IIS 7.0版本將在今年稍後隨Windows Server2008伺服器發布,將添加一堆額外的部署特性,包括更加豐富的主機支持,安全的FTP支持,以及內置的web farm部署支持等。

  Web farm支持將是特別地酷,它將允許你在一個包含了運行一個伺服器所需的所有編碼,配置,內容和密鑰的文件共享上部署你的web應用。然後你可以添加任意數目的無狀態,無配置的web伺服器到一個web farm上,只需將它們指向那個文件共享,來動態裝載它們的配置設置(包括綁定,虛擬目錄,應用池設置等等)和應用內容即可。這使得在多個機器上擴縮一個應用簡直是小菜一碟,可避免使用複製方法來做配置和應用部署(只要把文件拷貝到文件共享上,web farm里的所有機器就會馬上裝載變動過的文件)。

  推出Windows Server2008伺服器的Beta3版本支持go-live許可,所以你不久就能利用這個功能。我們已經在用IIS 7.0集群運行 Windows Server2008 了,所以你不會寂寞的!

  

   Windows PowerShell 管理圖

  IIS7.0 遷移

  IIS7.0 遷移網站比IIS6.0更方便,因為Apache Web server它最大的優勢就在於它的定製化管理,IIS7.0現在使用Apache概念,所以把站點的配置文件拷貝到另一台IIS7.0主機上即可以,詳情請了解上面《通過文本文件配置的IIS7》,《IIS 7的Windows PowerShell 管理環境》。

  ASP.NET和IIS 7.0之集成

  在早期的IIS版本中,開發人員需要編寫ISAPI擴展/過濾器來擴展伺服器的功能。除了寫起來非常痛苦外,ISAPI在如何接入伺服器以及允許開發人員定製方面也是非常有限。例如,你無法在ISAPI擴展中實現URL重寫代碼(註:ASP.NET是以ISAPI擴展的方式實現的)。假如你把運行時間長的代碼編寫成ISAPI過濾器的話,結果是你將佔用web伺服器的I/O線程(這就是我們不讓託管代碼在請求的過濾器執行階段運行的原因)。

  我們在IIS7中對核心IIS處理引擎做的一個重大的架構級變動是通過一個新的模塊化的請求管道架構來促成極其豐富的擴展性。你現在可以通過與web伺服器註冊一個HTTP擴展性模塊(HTTP Extensibility Module),在任意一個HTTP請求的生命周期的任何地方編寫代碼。這些擴展性模塊可以使用native的C++代碼或.NET託管代碼來編寫(你可以使用現有的ASP.NET System.Web.IHttpModule介面來實現)。

  所有「內置」的IIS7功能(認證,授權,靜態文件供應,目錄清單支持,經典的ASP,記錄日誌等),現在都是使用這個公開的模塊化的管道API來實現的。這意味著你可以除去這些IIS7「內置」功能的任意一個,而以你自己的實現來替換/擴展這些功能。

  IIS 7.0上的ASP.NET本身也從以ISAPI的實現形式變成直接接入IIS7管道的模塊:

  

   IIS6.0 和IIS7.0 比較圖

  這帶來諸多好處:

  1) 你現在可以對伺服器的所有請求(例如, .htm,.php,.jsp文件)使用ASP.NET表單認證,成員/角色,以及任何其他特性。

  2) 你現在可以輕鬆地重寫任何web請求的URL或者以種種有趣的方式對請求做改動。

  3) 你可以使用VB或C#替換或擴展任何現有的IIS特性(例如,你可以除去內置的目錄清單模塊,接入你自己的模塊)。

  這確實給.NET開發人員帶來了無窮多的擴展性機會。

  IIS 7.0 六大新特性:

  1)模塊化的網路核心允許用戶增加和刪除特定的功能。如果要使用服務統計構件,僅需幾個模塊(不包括ISAPI)。

  2)一個統一標準的HTTP管道,它對應於本地管理方面的應用程序。用戶可以對經典的ASP網頁使用基於窗體的認證系統。

  3)用戶可以建立自己的IHttpModule以及IHttpHandlers,並且把它們插入到統一的管道。

  4)新款分散式的XML設置系統,它利用了ASP.NET的設置系統的優點。

  5)改善的診斷和問題解答機制,包括了新Runtime狀態以及跟蹤功能。

  6)新型可擴展,面向任務的管理員用戶界面。

  總而言之,IIS 7將為Web管理員以及Web愛好者提供更加豐富,更加易用的管理工具。在新的IIS7中,無論是管理方面還是安全方面都得到了全新的設計,而從用戶群的角度上講,利用IIS7, 個人用戶可以更快,更簡便的建立自己的站點,而企業用戶則可以更加全面,更加安全的維護和管理自己的WEB環境。隨著Windows Server2008的日益臨近,相信有關IIS7管理的相關介紹也會越來越多,究竟新版本有沒有帶給我們實質的變革,還是只是一個IIS伺服器功能的增強,讓我們拭目以待吧。


推薦閱讀:

《架構即未來》(壹)
Docker、kubernetes、微服務、SpringBoot/Cloud...好亂!到底要不要學?
厲害了,螞蟻金服!創造了中國自己的資料庫OceanBase(上)
ApsaraDB For SQL Server Multi-AZ 高可用版資料庫使用介紹
關於這個世界的一個構想

TAG:架構 |