引言
Web服務(wù)是計(jì)算世界的新寵 , 它有望解決我們的所有計(jì)算問題 , 包括平臺(tái)差異以及與舊系統(tǒng)間的互操作性等問題 。幾乎每篇相關(guān)文章都提到Web服務(wù)可以在各種協(xié)議上工作 , 但它們卻只具體討論了SOAP/HTTP 。HTTP較輕易理解 , 所以最常被定義和實(shí)現(xiàn) , 但顯然它并不是Web服務(wù)的唯一選擇 。
本系列的文章將討論在Web服務(wù)托管于WebSphere瓵pplicationServer的情況下 , 如何通過實(shí)現(xiàn)簡單郵件傳輸協(xié)議(SimpleMailTransferProtocol , SMTP)上的SOAP使Web服務(wù)可用 。本文展示了一些支持不同的“服務(wù)質(zhì)量”并利用現(xiàn)有基礎(chǔ)結(jié)構(gòu)的不同方法 。本文將不討論Web服務(wù)的創(chuàng)建 , 只討論為什么為Web服務(wù)的接口使用SMTP上的SOAP綁定而不用更常用的HTTP/HTPPS上的SOAP 。
本系列假設(shè)您已經(jīng)對SOAP和Web服務(wù)技術(shù)有了大致的了解 , 所以就不再向您提供比較熟悉的顯示“面向服務(wù)的體系結(jié)構(gòu)(Service-OrientedArchitecture)”的三角圖 。對HTTP和SMTP有一定程度的了解也會(huì)有所幫助 , 但卻不是必要的 。
這一系列文章中的示例使用的是IBMWebSphereStudioApplicationDeveloper , 它使用內(nèi)置的WebSphereApplicationServer , 但任何遵守J2EE的應(yīng)用程序服務(wù)器(包括Tomcat)也應(yīng)該可行 。
為什么選用SMTP?
HTTP上的SOAP之所以如此常用 , 原因有以下幾個(gè):
HTTP協(xié)議無處不在-它隨處可見 。
HTTP協(xié)議與防火墻兼容性很好 , 它只使用一些大家熟悉的端口 , 而且防火墻幾乎總是配置為答應(yīng)HTTP協(xié)議通過 。
HTTP協(xié)議使用HTTPS的“安全套接字層(SecureSocketLayer)”進(jìn)行加密 , 并使用各種證書類型進(jìn)行認(rèn)證 , 很輕易保護(hù) 。
這些原因中的一部分也適用于SMTP協(xié)議 。電子郵件和Web瀏覽一樣普遍-我們許多人都有多個(gè)可供天天查對的電子郵件帳戶 。SMTP使用的是一個(gè)大家都熟悉的端口 , 所以很輕易設(shè)置答應(yīng)它通過的防火墻 , 而幾乎每個(gè)防火墻都被配置為答應(yīng)該協(xié)議通過 。加密沒有這么普遍 , 但通過PGP或其他方式的數(shù)字簽名還是很輕易設(shè)置的 。
此外 , SMTP協(xié)議是異步的 。調(diào)用者可以通過電子郵件發(fā)送請求 , 而且假如目標(biāo)服務(wù)器宕機(jī)了 , 那么為了確保該電子郵件的發(fā)送 , 任何中間服務(wù)器都將重發(fā)好幾次 。另一方面 , 假如目標(biāo)服務(wù)器在請求時(shí)不可用 , 那么HTTP協(xié)議也將失敗 。
選用POP還是原始SMTP?
SMTP協(xié)議提供了兩種獲取電子郵件的方法:
實(shí)現(xiàn)一個(gè)SMTP服務(wù)器 , 自己實(shí)現(xiàn)對基礎(chǔ)協(xié)議的支持 。
使用一個(gè)現(xiàn)有的“郵局”協(xié)議 , 使用這種協(xié)議時(shí)電子郵件存儲(chǔ)在一個(gè)服務(wù)器上 , 并可由某個(gè)進(jìn)程在適當(dāng)?shù)臅r(shí)機(jī)接收 。
毫無疑問 , 您對這兩種方法都很熟悉 , 因?yàn)槟碾娮余]件程序把這兩種方法都用上了 。傳出的郵件被配置為使用一個(gè)SMTP服務(wù)器 , 直接把消息發(fā)送給理解該協(xié)議的服務(wù)器 。收到的電子郵件通常是用一個(gè)郵局協(xié)議-郵局協(xié)議(PostOfficeProtocol , POP)或因特網(wǎng)消息訪問協(xié)議(InternetMessageAccessProtocol , IMAP)-處理的 , 在您連接到因特網(wǎng)上檢索到這封電子郵件之前 , 它會(huì)留在您的ISP的服務(wù)器上 。
SMTP協(xié)議或者郵局協(xié)議都可以用作Web服務(wù)分派器接口 , 接收請求并將它們發(fā)送給目標(biāo)Web服務(wù) 。我們將分別展示兩者的實(shí)現(xiàn) , 但首先我們來討論一下它們各自的優(yōu)缺點(diǎn) 。為簡單起見 , 我們選擇POP作為我們的中間服務(wù)器協(xié)議 , 因?yàn)樗菼MAP協(xié)議更常見也更簡單 。
此外還有其他SOAP/SMTP實(shí)現(xiàn) , 比如ApacheSOAP就是其中一個(gè) 。然而 , 這種方法是先獲得一個(gè)傳入的SMTP請求 , 然后調(diào)用一個(gè)servlet接收HTTP協(xié)議上的請求 , 并將該請求傳遞給服務(wù)的實(shí)現(xiàn) 。這一系列的文章將實(shí)現(xiàn)直接的SMTP , 同時(shí)不會(huì)為將請求傳遞給目標(biāo)服務(wù)而進(jìn)行要求另一次網(wǎng)絡(luò)跳轉(zhuǎn)(即便是在同一臺(tái)機(jī)器上)的協(xié)議切換 。
推薦閱讀
- switch日版和港版區(qū)別
- SMTP在X.25上
- 手機(jī)QQWiFi免費(fèi)上網(wǎng) QQWiFi是怎么使用
- qq同步怎么轉(zhuǎn)移照片
- 平移和旋轉(zhuǎn)有什么相同點(diǎn)和不同點(diǎn)
- 太和殿屋檐上的仙人走獸分別叫什么名字
- 按鍵精靈安卓版找圖 按鍵精靈安卓版找圖使用技巧
- 蕭道成和蕭衍是什么關(guān)系
- 蘭字的寓意和象征
- Motorola KRZR K1使用感受
