MTOM檔案的續傳功能(一)

Web Service使用MTOM的技術,做到檔案的續傳功能.

  最近因為工作的關係,接觸到了MTOM這個技術的東西,而所要做的就是籍用呼叫Web Service的方式,呼叫端就可以把檔案上傳,而這過程中,如果傳輸中斷,它必需要能夠"斷點重傳",這樣就不用再重頭傳起,而這傳輸速度不能太慢,當時光聽到要用Web Service來傳檔案,想到的就是它怎麼可能會快,不過就在慢慢瞭解了一下MTOM的技術後,似乎可以試看看,可能速度沒有我想像中的那麼慢.

 MTOM是幾年前所冒出來的一個技術,剛接觸到這個名詞時,我是一頭霧水,不知道這又是什麼怪東西,MTOM為Message Transmission Optimization Mechanism的簡寫,中文名稱就是『訊息傳輸最佳化機制』,簡單的來說,這個技術就是以未經處理的位元組形式,以二進位附件與SOAP訊息一起傳輸的方式,因此它的傳輸資料量就會比較少,而且二進位的傳輸方式會快於文字傳輸。

  這個技術除了WCF已經可直接使用外,也可安裝WSE(Web Services Enhancements)來使用,後續所有的討論將是以WSE為主,在開發過程中發現它的中文參考資源很有限,所以把這段時間所學到的東西整理寫出來,或許這點東西會有點幫助,拉回正題,它所使用的.Net Framework為2.0(含)以上,目前的版本為3.0,我想也不會再有新的版本了,因為後續就是WCF的世界.
 
  WSE這個套件在Visual Studio的add-in支援並不是那麼的全面,像Visual Studio 2005 Express Editions就有問題,VS2008也不支援(整合到WCF了,所以WSE就沒有add-in的必要吧),不過沒有add-in也沒什麼大問題,它還是有WSE configuration tool可以使用,只是在開發上有點不便,但不致於這個技術不能使用,這個configuration tool主要是用來設定app.config與web.config,後續會介紹到怎麼去使用這個工具來設定.
 
(而VS2005之前的版本例如VS2002及VS2003就”完全”不支援,因為首段就提到,它是在.Net 2.0以上,而2002及2003是使用.Net 1.X,所以是完全不支援)
 
  MTOM就先大至介紹到這,有興趣的人可以在網路上搜尋到更多相關資訊,我這就不再繼續介紹補充,後續將會拿它來玩一個有趣的功能,就是用它來傳檔案,而且還可以支援斷點續傳的功能,(多點續傳也是OK,但因為寫下去就多了,反正它只是額外的功能延伸,基礎上是一樣的,所以沒寫多點續傳的部份),使用Web Service來傳檔案,以過去傳統的技術來想像,會是很可怕的慢,可是在MTOM技術上的表現卻是意料之外的好,主要差別是兩者的傳輸資料型態不同,那跟WCF比較起來呢?從微軟的官方文件看來,WCF可是比WSE快了200%~300%,看起來真是心動的數字啊,不過不知道它的比較方式跟標準為何,未來有機會再玩,這次先拿WSE來玩檔案傳輸。
 
待續……..
 
參考資料:

下載WES 3.0