2010-08-13 42 views
3

我一直在尋找將基於Perl的SOAP服務器添加到我們的系統的方法。每次我在Perl中查看SOAP工具時,我都感到失望的是,VS.net世界中的開發人員似乎需要多少開銷。 (而且我一直在尋找很長時間)描述與WSDL的Perl接口

從這裏回顧其他問題,它看起來像XML::Compile::SOAP似乎是最近流行的工具。我已經設法讓我的代碼作爲服務通過它服務,但是我也必須手動按摩以。Pod::WSDL開頭的.WSDL文件。

在CPAN或其他地方找不到更直接的方法嗎? Pod::WSDL默認吐出rpc/encoded,我知道它不再是'最好'的方式。文檔說文檔/文字還不被支持,閱讀源代碼可以看到文檔/文字的部分代碼,但它不直接與XML::Compile::SOAP一起工作。理想情況下,我在POD或perl5屬性中爲我們的代碼添加一些註釋,並按下一個按鈕,並獲取我可以提供給XML :: Compile包的WSDL。

在此先感謝。

+1

謝謝思南,您的格式編輯:) – Jason 2010-08-13 03:01:28

+0

另一種選擇是自己做必要的增強,並將其作爲新的CPAN模塊或現有補丁發佈。 – Ether 2010-08-13 16:18:34

+0

@其他 - 當我瞭解這個過程時,我正在考慮這種方法。如果我這樣做,我會關閉這個q並留下一張紙條。 – Jason 2010-08-20 00:55:52

回答

1

據我所知,沒有更好的方法。至少對於簡單的服務。

我發現如果我用RPC心態編寫我的Web服務,那麼SOAP :: Lite很容易使用。

  • 寫有子程序一個小Perl程序在同一文件中OO風格
  • 重構,則params &返回值作爲perl的對象。
  • 將子程序移動到一個單獨的模塊中進行測試。
  • 將子程序模塊移動到服務器。也複製數據傳輸對象模塊。
  • 將SOAP :: Lite分派器添加到服務器(少數幾行)。
  • 在perl程序(客戶端)的頂部添加一些SOAP :: Lite行。完成。

確實,這是使用RPC /編碼風格的SOAP不受歡迎。但是,如果添加一點點POD標記,您可以生成WSDL(後按摩).Net客戶端 可以愉快地消費(至少,我測試了與單聲道和第三方測試與MS C#)

當你比如說,Pod :: WSDL的輸出確實需要按摩,我記得我必須修復一個命名空間作爲我的構建過程的一部分。

不足之處在於很多先進的SOAP相關XML處理似乎缺少或沒有很好地集成,SOAP :: Lite和Pod :: WSDL看起來有點瀕死。

但是,對於簡單的遠程方法調用,傳遞Perl對象,我發現它比我曾刺過的Java框架要簡單得多。你的旅費可能會改變。