我有一個返回XML的.NET Web服務,我想在發送它之前壓縮它。壓縮Web服務的結果
有一對夫婦的方式,我可以做到這一點,但我寧願沒有這樣做的代碼。
我可以設置IIS來gzip由我的WebService返回的所有內容嗎?它沒有被瀏覽器調用。
另一個問題是,如果此Web服務正在被Java客戶端使用 - 是否會影響任何內容?
我想象的客戶端代理仍然需要解壓,但如果我用gzip不應該有任何問題 - 這是一個通用協議,對不對?
我有一個返回XML的.NET Web服務,我想在發送它之前壓縮它。壓縮Web服務的結果
有一對夫婦的方式,我可以做到這一點,但我寧願沒有這樣做的代碼。
我可以設置IIS來gzip由我的WebService返回的所有內容嗎?它沒有被瀏覽器調用。
另一個問題是,如果此Web服務正在被Java客戶端使用 - 是否會影響任何內容?
我想象的客戶端代理仍然需要解壓,但如果我用gzip不應該有任何問題 - 這是一個通用協議,對不對?
標準的方式做這種事情是用gzip通過HTTP壓縮,因爲它是直接由協議的支持。只要你的客戶支持,那麼你應該很好去。
如果您正在使用更多的基本工具,從頭開始編寫客戶端,您可能需要添加處理這個自己:就是一個很好的例子顯示here (python)。
我希望很多SOAP客戶端庫都有內置的支持,但您必須嘗試一下以確保:如果他們依靠較低級別的HTTP庫來完成他們的工作,它應該只是工作。
您可以在iis中配置metabase.xml以更好地控制壓縮。如果尚未包含您的Web應用程序格式(.asp,.asmx,...),可能需要重新定義元數據庫。 你可以看到下面: http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/25d2170b-09c0-45fd-8da4-898cf9a7d568.mspx?mfr=true 也 http://www.businessanyplace.net/?p=wscompress
這是我所期望的 - 但在客戶端會發生什麼?他們是否必須編寫代碼來顯式解壓縮請求,或者生成的SOAP代理是否會爲他們執行此操作?例如根據這個鏈接,他們需要編寫代碼 - http://janetandkevin.com/blog/articles/189.aspx – Duncan 2010-01-19 16:46:57
正如我所說的,取決於客戶端:一些客戶端將使用低級別的HTTP庫,將讀取標題並做正確的事情。其他人可能不會,在這種情況下,你可能需要做一些額外的工作。無論如何,您始終可以讓您的服務器端代碼查看來自客戶端的accept頭,以確定它是否支持gzip。 – jkp 2010-01-19 16:48:50
參見§14.3接受編碼:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html – trashgod 2010-01-19 18:57:35