2010-05-14 95 views
0

我正在將舊的asmx webservice移動到帶有IIS7的新服務器。
這個web服務基本上發送一個大數據集(10mb +)到一個winform應用程序。
舊的解決方案是使用自定義soap擴展實現的,該擴展在將流發送到客戶端之前壓縮了內容。
客戶端當然實現了相同的自定義soap擴展,以解壓縮數據集中的流。 一切都很好,多年來工作。
我的客戶不想更改升級到WCF的代碼。他們只想將舊應用程序放在新服務器上,並使用新的動態內容壓縮功能。
我們在測試服務器上測試了一些東西(win serv 2008),看起來它工作得很好,即使它看起來很慢:我們看不到未壓縮和壓縮的流之間的性能(速度)差異。
下面是問題。我應該在哪裏放置設置?大多數人說我不能把它放在我的web.config中;別人說可以放在那裏。我有點困惑。
有什麼技巧或我應該知道的事情嗎? mimeTypes呢?我應該設置一些參數嗎?考慮到我的流是XML(數據集)??IIS7動態內容壓縮和web服務

回答

1

假設你可以很容易地禁用你的壓縮代碼,那麼使用IIS7壓縮功能非常簡單。

您可以使用IIS7中的web.config在文件夾級別啓用和禁用壓縮。

但是,控制哪些mimetypes被壓縮而哪些不被存儲在web服務器級別的配置。

要在給定site/vdir /文件夾上啓用動態壓縮(假設服務器安裝了動態壓縮功能),只需在IIS管理器中打開您的站點/文件夾,然後點擊'壓縮'圖標即可。在這裏,您可以啓用靜態和動態壓縮。

在這一點上,檢查它是否工作(即流量確實被壓縮)。如果是這樣,那麼默認的動態壓縮配置的工作,如果沒有,那麼你需要,你可以去抓住和早午餐:)

  • 單擊服務器節點(在根)在IIS管理器中。然後打開'配置編輯器'(位於最下面一行,通常位於左側)。
  • 在出現的窗體的下拉列表中,展開system.webserver節點,然後單擊'httpCompression'葉節點。
  • 現在您將看到所有服務器範圍的壓縮配置選項 - 您需要打開'dynamicTypes'設置。
  • 在那裏你可以爲你需要壓縮的mimetypes添加額外的規則。

一兩件事,這是一個有點討厭這個的是,MIME類型都完全匹配,有時默認規則將不會匹配你想要的一切。

我舉個例子,增加了4個額外的規則,我們的服務器:

  • 應用/ JSON
  • 應用程序/ XML

然後:

  • 應用/ JSON; charset = utf8
  • application/xml; charset = utf8

因爲某些原因,我發現我的來自.Net的json/xml響應的mimetype在末尾有這個額外的'charset ='位。如果確實如此,並且它不在規則列表中,那麼IIS7壓縮將無法啓動。讓我度過這段時間(以及很多Fiddler的使用!)來弄清楚這一點!

+0

感謝您的回覆Andras。 當你在談論「配置編輯器」時,你的意思是你安裝AdministrationPack時的那個,對嗎? 因此,基本上,對於你所說的,沒有辦法在網站級別進行設置。如果我想針對不同的網站/虛擬網站有不同的行爲,我無法使用我的web.config;那是對的嗎? 謝謝 – LeftyX 2010-05-14 12:46:21

+0

@vandalo - 抱歉延誤。我不確定是否需要管理包......我所知道的是,在安裝IIS之後(確保我在功能中啓用了靜態和動態壓縮選項)後,這些選項在IIS管理器中可用。至於不同的站點/虛擬站點級別 - 您可以簡單地通過web.config在單個文件夾(因此站點和虛擬文件夾)上打開和關閉壓縮;但動態壓縮的內容類型只能在服務器級別配置。 – 2010-05-27 11:11:34