close
文章出處

寫在前面:

Windows Server 2008 R2發布有一段時間了,我于2009年11月份開始體驗R2,整體感覺非常不錯,建議有實驗條件的開發人員都體驗一下,即使是在虛擬機中。Windows Server 2008 R2中IIS的版本也升級到了7.5,在平時工作學習中經常遇到IIS出現各種各樣的問題,歸根到底是對IIS的底層實現機理不甚了解,決定有體系的學習一下。本人Windows Server經驗薄弱,措辭不當之處請廣大同行前輩多多指教。

示例代碼下載

本系列所有示例代碼均在 Windows Server 2008 R2 DataCenter(IIS 7.5) + Visual Studio 2010 Ultimate RC 下測試通過。

 

一、IIS 7.5概述

園子里有朋友介紹了IIS 7.5的新特性,很全面,翻譯的很好。由于寫的較早,當時還只是Windows Server 2008 R2 Beta,現在我就用Windows Server 2008 R2 DataCenter正式版來適當補充一下吧:)

雖然寫的是IIS7.0,但是同樣適用于IIS7.5.

在【開始】--【運行】,輸入:inetmgr,打開IIS管理器:

 

可以看到,雖然顯示的是Internet Information Services 7,但是在關于窗口看以看出明確的版本號:7.5.7600.16385

IIS 7.5是對IIS7的一次升級,是IIS的最新版本,園子里也有朋友做了介紹,這里只列了個綱要:

  • 集成擴展(Integrated extensions
    • Web分布式創作版本管理和文件傳輸服務(WebDAV and FTP
    • 請求過濾(Request Filtering
    • 管理員維護模塊(Administration Pack modules
  • 管理功能的增強(Management enhancements
    • 最佳體驗分析器(Best Practices Analyzer
    • Windows PowerShell支持和擴展命令(Windows PowerShell™ Provider and cmdlets
    • 可配置的日志記錄與跟蹤(Configuration logging and tracing
  • 應用程序宿主增強(Application hosting enhancements
    • 服務增強(Service hardening
    • 托管的服務賬戶?(Managed service accounts
    • 可在Web核心版本中宿主?(Hostable Web Core
    • 針對于通用網關接口的失敗請求的跟蹤(Failed Request Tracing for FastCGI
  • 對服務器核心版本的.NET功能增強(Enhancements to .NET support on Server Core

注:標紅色的我認為翻譯的有點問題

 

二、使用PowerShell管理IIS 7.5

PowerShellIIS7.0IIS7.5提供了擴展命令,可以像訪問文件系統一樣訪問IIS站點。

1、打開Windows PowerShell Modules:

 

2、輸入:Set-Location IIS:\,就進入了IIS的"驅動器":

3、輸入:Get-ChildItem來查看IIS下的項:

 

4、查看當前的所有站點:

 

5、下面我們用PowerShell將一個ASP.NET網站發布到IIS7.5中:

1)建立一個ASP.NET網站:

2)發布到IIS7.5:

輸入:New-Item IIS:\Sites\TestSite –Bindings @{Protocol="http";BindingInformation=":82:localhost"} –PhysicalPath E:\IIS7.5\SimpleWebSite\WebSiteDemo

我們建立了一個端口號為82的網站:TestSite

現在來瀏覽一下剛剛創建的網站:

 

 

可以輸入:Remove-Item TestSite來刪除站點:

PowerShell的功能十分強大,具有很強的靈活性與可擴展性,后面我們會繼續深入學習PowerShell在IIS7.5中的管理方法。

 

三、使用AppCmd來管理IIS7.5

PowerShell的耀眼光芒使得人們幾乎忘記了另一個隨同IIS7.0發布的命令行管理工具:AppCmd. AppCmd是用于IIS7.0的管理工具,可以完成GUI所能完成的全部工作,提供了更大的靈活性與快捷性。AppCmd默認存放在:%SystemRoot%\System32\inetsrv目錄下,建議將其添加進PATH環境變量,在PowerShell中輸入AppCmd:

 

下面我們用AppCMD來建立一個網站:

輸入:appcmd add site /name:"AppCmdTest" /bindings:http://localhost:83 /physicalpath:" E:\IIS7.5\SimpleWebSite\WebSiteDemo"

可以看到:

SITE … added

APP…added

VDIR…added

在瀏覽器中打開:

AppCmd也是相當快捷與高效的,那么在實際開發中應該選擇PowerShell還是AppCmd呢?個人感覺AppCmd很小巧,如果是小型應用,需要批量管理IIS7.x,建議用AppCmd;如果項目比較復雜,同時摻雜著跨平臺、跨數據庫的企業級應用,則應該使用PowerShell,因為它更加高效,易于擴展,與微軟的許多服務器產品進行了整合。

 

四、使用IIS API來管理IIS7.5

從IIS7開始提供了一組全新的、方便使用的、面向對象的API,該API分為兩部分:托管的和本地的。本地API由C++編寫,可以用來開發本地模塊并插入IIS內核。而托管API則可以借助于.NET Framework的優勢來更方便的對IIS7.x進行管理。

下面我們使用Microsoft.Web.Administration(MWA) API來創建一個Web站點,效果與之前用PowerShell和AppCmd的一樣。

1、創建一個控制臺程序,并添加引用:System.Web、Microsoft.Web.Administration

注意要將控制臺項目的.NET Framework版本設置為4.0,不能用Cilent Profile。

2、添加如下代碼:

代碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Web.Administration;

namespace MWADemo
{
    
class Program
    {
        
static void Main(string[] args)
        {
            ServerManager sm 
= new ServerManager();
            sm.Sites.Add(
"MWASite""http"":84:localhost"@"E:\IIS7.5\SimpleWebSite\WebSiteDemo");
            sm.CommitChanges();
        }
    }
}

 

3F5運行后,在瀏覽器中測試一下:

 

小結:

本次 主要介紹了IIS7.5的新特性,因為很多朋友已經介紹過,故只提了些綱要。然后分別用PowerShellAppCMDMWA API的方式對IIS7.5的站點進行了簡單的管理操作,三者功能都很強大,只是適用場合不同。后續篇章會主要以MWA APIPowerShell來對IIS7.5進行開發與管理,深入學習IIS7.5底層各部件的實現機理。


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 AutoPoster 的頭像
    AutoPoster

    互聯網 - 大數據

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