2010-07-29 83 views
1

我已經使用了幾個python soap庫(SOAPpy,soaplib和SOAPpy的Twisted wrapper)來編寫我的soap web服務。Python是否適合編寫標準,兼容和完整的SOAP Web服務?

當我使用python客戶端(SOAPpy.SOAPProxy和SUDS)時,我能夠與我的web服務進行通信(返回簡單和複雜的類型對象)。

但是,當我嘗試使用C#ASP.net時,我遇到了很多問題。我回過頭來簡單的類型(int,string,double,boolean)與一些黑客入侵SOAPpy庫問題。 但是,我仍在努力從SOAPpy返回ComplexTypes。

我找不到任何完整的,兼容的替代python庫來編寫我的web服務。

主要問題:任何建議/示例爲dotnet兼容複雜類型返回從python web服務將不勝感激。

說明:我不得不對SOAPpy進行一些破解,使其在第一時間正常工作。而且,在SOAPpy的情況下,我必須手寫wsdl文件。

+0

我還沒有嘗試過,但您可能想查看http://pywebsvcs.sourceforge.net/zsi.html – 2010-07-29 01:25:02

+0

服務器返回什麼數據? – PirosB3 2010-07-29 08:33:25

+0

@(詹姆斯布萊克)zsi是圖書館和SOAPpy一樣的家庭的一部分。但是,如果zsi中有更新版本的SOAPpy,我會查看代碼。 @(PirosB3) - 我的服務器在幾個API函數中返回複雜類型(例如[{'field_1':'value1','field_2':'value2'},{'field_1':'value3 ''''field_2':'value4'}]。 – 2010-07-30 04:06:13

回答

1

我個人認爲,Python SOAP庫與其他平臺的兼容性不好。

我認爲這裏有兩個問題:

  • 首先,Web服務的Web服務棧之間的兼容性是一種願望,而不是現實。例如,查看this question以瞭解如何在Java和WCF之間使用Web服務。這就是說,大部分編譯時輸入的WSDL概念不符合Python的原始哲學,因此投入較少的努力。

我還沒有使用網絡服務一年多,所以可能是事情已經改變。但建議與上一個問題相同:

  • 如果您使用的是多個語言/庫,則從WSDL編寫開始。
  • 從另一個問題中複製出來,「從XSD開始,但僅限於主流類型。原始類型,由基元組成的複雜類型,相同的數組。
  • 最後,我決定使用suds作爲Python Web客戶端,經過試驗後,soappyzsi。那是在一段時間後使用基於C的庫(gsoap)並從Python鏈接到它。
  • 我從來沒有滿意於Python中的服務器實現,所以我曾經構建Python服務器並從另一個可以導出SOAP服務的庫(在我的情況下是Java或C,您可能會使用C#)連接到它們。連接通常是一個更簡單的協議。
  • 這就是說,如果你從WSDL開始,你很可能使用soaplib或可能是zsi獲得好結果。但是恐怕在檢查兼容性的時候,幾乎沒有辦法繞過你的類型。
+0

由於我的項目有一些技術上的複雜性,我只能用Python編寫我的web服務。但是,客戶可能來自任何語言。對於python,SOAPpy.SOAPProxy客戶端工作正常,但我關心的是c#和java。我手寫了我的wsdl文件,以確保我使用基本類型和由基本類型組成的複雜類型。但是,SOAPpy返回列表如下: ....... 你能指點我複雜類型從SOAPpy返回的例子嗎? – 2010-07-30 04:21:58