台灣最大程式設計社群網站
線上人數
1612
 
會員總數:245248
討論主題:189106
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> ServerXMLHTTP及XMLHTTP的差別
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
ServerXMLHTTP及XMLHTTP的差別
價值 : 0 QP  點閱數:1184 回應數:0

樓主

Tim
中級專家
3260 1
725 220
發送站內信

捐贈 VP 給 Tim
一般在 client side 的 ajax 會用到這個 component (for IE) Microsoft.XMLHTTP, 若是在 server 端的 asp 程式碼使用這組 code, 來訪問其他站台的內容時, 可以利用程式碼如下:

Set xmlhttp = Server.CreateObject("Microsoft.XMLHTTP")
xmlhttp.Open "GET", "http://diary.tw/tim/", False
xmlhttp.Send
Response.Write xmlhttp.ResponseTEXT
Set xmlhttp = Nothing


不過這個有一些些問題, 因為 XMLHTTP 本身的工作行為是綁在 IE API 上, 當然是有好有壞, 根據微軟的文件, 這組元件是適合用在客戶端而非 server 端, 在使用上會有一些穩定及效能的問題, 不過更有趣的還有一個地方, 就是他會增進效能而在本機的檔案系統上存入訪問的內容, 路徑如下:

C:\WINDOWS\Temp\Temporary Internet Files\Content.IE5

也就是說, 會佔用掉部分的空間, 但實際觀察又不全然是這種 cache 的狀況, 因為相同的網頁, 被重覆 reload 時, 該 cache 用的目錄居然也會成長, 也就是說, 原來設計為 cache 的功能, 也有可能用不到, 但用不到還沒關係, 會一直佔用空間成長(無上限), 這個就比較麻煩了.

之前筆者在追蹤一個案例(c:碟佔用空間持續成長的狀況), 原來就是這個元件的毛病, 實際再測, 若是訪問的網頁是非 xml 時, 似乎就沒有這種狀況, 不過大多數的應用環境, 資料都會選 xml 的方式來傳送, 所以仍會有這個問題存在.

為了解決這個問題, 還有另一組元件可供使用, MSXML2.ServerXMLHTTP, 這組元件提供了更穩定的方式來執行前述功能, 而且幾乎完全相容語法, 並提供了更多的功能, 也不會產生大量的cache 暫存檔案, 我們來看看微軟官網上對此二者的比較:

http://support.microsoft.com/kb/290761

主要差異點如下:
XMLHTTP is designed for client applications and relies on URLMon, which is built upon Microsoft Win32 Internet (WinInet). ServerXMLHTTP is designed for server applications and relies on a new HTTP client stack, WinHTTP. ServerXMLHTTP offers reliability and security and is server-safe. For more information, see the MSXML Software Development Kit (SDK) documentation.


如此一來便可以很清楚地了解在 asp 程式內, 使用 XMLHTTP 及 ServerXMLHTTP 的差異了, 將上面的程式碼改為:

Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
xmlhttp.Open "GET", "http://diary.tw/tim/", False
xmlhttp.Send
Response.Write xmlhttp.ResponseTEXT
Set xmlhttp = Nothing

這樣就完成囉!

本文為原作者發表, 原始文章請參閱: ServerXMLHTTP及XMLHTTP的差別
搜尋相關Tags的文章: [ XMLHTTP ] , [ ServerXMLHTTP ] , [ AJAX ] , [ ASP ] ,
本篇文章發表於2008-06-14 22:28
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
   

回覆
如要回應,請先登入.