中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

防火墻:Web服務(wù)不可逾越的障礙?

2018-06-23    來源:

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

    本文介紹如何使用 Web 服務(wù)輪詢(Web Services Polling,WS-Polling)來解決異步消息傳遞中的難題。這種基于 WS-Addressing Header 內(nèi)的信息動態(tài)路由任何 SOAP 消息的概念給 SOAP 用戶帶了一種新的自由。他們不再局限于使用簡單的 HTTP 請求/響應(yīng)消息流。諸如 WS-Coordination/Transaction 和 WS-Reliable Messaging 之類的規(guī)范,現(xiàn)在只需使用 WS-Addressing Header,就可以假定存在使用標準方式定義的異步消息傳遞模型。但是,如同許多事情一樣,使用異步消息處理機制也有不利的方面,而且還存在一個阻礙其采用的障礙——防火墻。

  防火墻不好?請不要這樣想!

  是的,沒錯!其實防火墻本身并沒有什么不好,但如果您考慮到異步消息處理的含義,防火墻無疑會起干擾作用。設(shè)想您在家用計算機上運行一個 Web 服務(wù)客戶機,并且試圖調(diào)用 Web 上的某些需要花費一些時間才能執(zhí)行的服務(wù)。在此情況下,HTTP 連接所保持的時間可能不足以等到您接收響應(yīng),或者即使時間足夠,您可能也不希望這樣——為什么等待時還要占用資源?而且,我們現(xiàn)在討論的是異步消息處理,所以您期望通過一個新的連接返回結(jié)果。首先,讓我們研究一下如何告訴服務(wù)您希望異步返回響應(yīng)。您的請求消息將包含一個 WS-Addressing ReplyTo Header,如下所示:

  清單 1. WS-Addressing ReplyTo Header 示例

  <wsa:ReplyTo>
    <wsa:Address>http://myhomemachine.com/inMessages</wsa:Address>
  </wsa:ReplyTo>


  顯然,這指示任何響應(yīng)消息都應(yīng)該通過一個新的 HTTP 連接發(fā)送至 http://myhomemachine.com/inMessages。雖然這看起來已經(jīng)夠簡單了,但它意味著有兩件事必須是真實的:第一,SOAP 服務(wù)器/偵聽器必須正在該計算機(您的家用計算機)上運行,以接收傳入的消息。第二,Internet 上的計算機必須能夠打開一個返回到您的家用計算機的連接——通過您的防火墻。

  第一個問題的難度取決于您的經(jīng)驗水平。讓一個非技術(shù)人員建立一個 SOAP 服務(wù)器可能有些過分,而且并非每個人都想在自己的家用計算機上安裝像 SOAP 服務(wù)器這么龐大的內(nèi)容。然而,第二個問題更加棘手。由于外界所有的病毒都對操作系統(tǒng)中的安全漏洞虎視眈眈,而且多數(shù)人都不想受到它們的危害,因此他們從不打開路由器或防火墻的任何端口,所以即使某些掌握相關(guān)技術(shù)知識的人執(zhí)意要建立 SOAP 服務(wù)器,SOAP 響應(yīng)消息仍無法異步返回給他們。那么,您該如何做呢?

  他山之石,可以攻玉

  如果您看到其他基于 Internet 的消息傳遞系統(tǒng)解決了上述問題,您可以重用某些相同的解決方案。尤其是當今最流行的消息傳遞系統(tǒng):電子郵件系統(tǒng)。與上述 SOAP 場景非常相似,您可以打開防火墻上的 SMTP 端口 (25),并運行一個 SMTP 服務(wù)器來接收傳入的電子郵件。但這種技術(shù)所要求的知識遠遠超出了大多數(shù)非技術(shù)人員所掌握的范圍。因而,大多數(shù)人選擇將自己的電子郵件地址委托給其他人托管(某些郵件托管服務(wù)提供商)。然后,他們只需通過使用某些郵件客戶機下載自己的電子郵件消息即可。這解決了兩個問題:無需建立一個本地(且復(fù)雜的)服務(wù)器;無需冒著受攻擊的風險而打開防火墻。

  那么,您如何在 SOAP 中應(yīng)用這種技術(shù)呢?隨著 WS-Addressing 規(guī)范的制定,這個問題也隨之解決了,F(xiàn)在,通過 WS-Addressing,您可以告訴消息的收件人將響應(yīng)發(fā)送到何處——非常類似于電子郵件中的“發(fā)件人”字段。因此,請將您的 wsa:ReplyTo Header 做如下更改:

  清單 2. 使用郵箱的 wsa:ReplyTo Header 示例

  <wsa:ReplyTo>
    <wsa:Address>http://mailbox.soaphub.org/soaphub/services/soaphub</wsa:Address>
  </wsa:ReplyTo>
現(xiàn)在,您的響應(yīng)消息將發(fā)送到 SOAP 消息托管提供商 mailbox.soaphub.org。該站點僅接受該消息,然后等待您的 SOAP 客戶機檢索它,F(xiàn)在,您既不需要在客戶機上運行一個龐大的 SOAP 服務(wù)器,也不需要打開防火墻。另一件令人欣喜的事情是,您所調(diào)用的 Web 服務(wù)不必為支持這種技術(shù)而做出任何改變(假定該 Web 服務(wù)至少支持 WS-Addressing)。從服務(wù)的角度來看,它只將響應(yīng)發(fā)送到客戶機所告知的地址——無論是實際的客戶機地址,還是某些“消息托管提供商”的地址;它不知道也不關(guān)心——僅僅是打開一個到 wsa:ReplyTo 端點的連接,而不管其值是什么。

  當然,這里還有一個問題——當前的 SOAP 客戶機并未寫入如何“請求(也可以稱為輪詢)”某個 Web 服務(wù)調(diào)用的結(jié)果。但是值得慶幸的是,WS-Polling 規(guī)范定義了一種輪詢 Web 服務(wù)調(diào)用結(jié)果的標準方式,而且不需要編寫大量的代碼來執(zhí)行該操作。

  WS-Polling

  最基本的 WS-Polling 只定義一個 SOAP 操作,稱為 GetMessage,SOAP 客戶機可以對消息托管提供商執(zhí)行該操作。該操作將返回所需的 SOAP 消息,或者根本不返回任何內(nèi)容(如果沒有等待傳遞到 SOAP 客戶機的消息)。讓我們來看一個示例。假定一個 SOAP 客戶機正在調(diào)用一個 echoString 服務(wù)(該服務(wù)只返回傳入的字符串)。請求消息如下所示:

  清單 3. 指向 SOAP 消息托管提供商的請求消息

  <s:Envelope>
    <s:Header>
      <wsa:MessageID>uuid:705738e3907891e3</wsa:MessageID>
      <wsa:To>http://www.echostring.com/echoString</wsa:To>
      <wsa:Action>echoString</wsa:Action>

標簽: 安全 打開防火墻 代碼 電子郵件 防火墻 服務(wù)器 漏洞

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:卡巴斯基7.0簡體中文版發(fā)布 帶來了哪些改變?

下一篇:流氓軟件又添新貴,支付寶閃亮加盟用戶無語