2012-12-27 34 views
26

Tôi có một tệp wsdl mô tả máy khách-máy chủ truyền thông trên một sản phẩm Java. Tôi đang triển khai một máy chủ mới dựa trên Python sẽ triển khai cùng một dịch vụ.Tạo máy chủ xà phòng python dựa trên wsdl

Bạn có biết phương pháp nào để tạo mã máy chủ Python dựa trên wsdl không yêu cầu tôi viết tất cả các kiểu phức tạp liên quan?

Ngoài ra, bạn khuyên bạn nên làm gì Api?

+3

I gốc 'thêm một tiền thưởng cho điều này. Tôi chỉ không thể tin rằng không có giải pháp tốt. –

+0

BTW: bạn có biết bất kỳ thư viện nào có thể tạo mã (không phải là một thư viện Python) dựa trên WSDL không? Tôi tự hỏi làm thế nào cứng nó sẽ được thực hiện như một chức năng cho Spyne (tạo ra các mô hình dựa trên WSDL). – Pax0r

+1

Dường như không có máy chủ xà phòng python trưởng thành ... không thể tin điều này đang xảy ra với python –

Trả lời

13

Khi nói đến hỗ trợ SOAP, Python tiếc là không còn là "pin đi kèm". Sự hỗ trợ trên phía khách hàng là chấp nhận được nhưng về phía máy chủ bạn về cơ bản là của riêng bạn.

Bạn có thể muốn nhìn vào những điều sau đây cho người mới bắt đầu:

http://wiki.python.org/moin/WebServices

http://pywebsvcs.sourceforge.net/

http://doughellmann.com/2009/09/01/evaluating-tools-for-developing-with-soap-in-python.html

Nếu bạn thực sự muốn đi trên tuyến đường này, có vẻ như ZSI là công cụ để sử dụng, mặc dù tôi có nghi ngờ rằng nó sẽ làm việc với bản phân phối Python 2.x mới nhất.

Sử dụng Python 2.6.6, tôi đã cố gắng sử dụng ZSI 2.0 để xây dựng một dịch vụ web bắt đầu từ WSDL. Có một số cảnh báo "mô-đun đã không được dùng nữa" khi tạo mã bằng wsdl2pywsdl2dispatch, phải cài đặt riêng PyXML và hack sys.path của tôi chỉ để giải quyết vấn đề này trước khi tôi nhận được "mô-đun ext.reader không tồn tại" với một lỗi "ZSI: EvaluateException Got None" không đáng thất vọng đối với lỗi không phải là lỗi (sai), minOccurs (1) "trên cơ sở" Hello world! " WS với một yếu tố cần thiết.

Chuyển sang ZSI 2.1_a1 mà không còn cần PyXML và wsdl2py sẽ làm tất cả (những gì đã làm cho wsdl2dispatch 2.0) nhưng vẫn kết thúc trong một ngõ cụt với "ZSI: EvaluateException Got Không cho nillable (False), minOccurs (1) phần tử "lỗi.

Trải nghiệm không thú vị lắm nhưng tôi đã đủ để tạo ra ý kiến ​​về những gì Python cung cấp cho dịch vụ web SOAP ... không nhiều (và đó chỉ là dịch vụ web cơ bản không có gì ưa thích như WS-* specs). YMMV!

EDIT: Gần đây tôi đã gặp phải this SO question và mặc dù được định hướng so với giải pháp máy khách, nó cũng đề cập đến một số thư viện để xây dựng các dịch vụ SOAP.

+2

Thật không may, tôi đã đồng ý với giải pháp của bạn. Hỗ trợ Python cho SOAP Server không tốt lắm. Hy vọng rằng những thư viện "mới" này có một số thành công. Cảm ơn! – inversus

15

Câu hỏi này chưa nhận được đủ sự chú ý.

Câu trả lời hiện được chấp nhận là tốt, nhưng câu trả lời của nó là 'không'. Có thực sự không có giải pháp tổng hợp và duy trì hợp lý không?

Thật không may, tôi không nghĩ câu trả lời phủ định là do thiếu sự chú ý đến câu hỏi. Có thực sự không có hỗ trợ cho WSDL trong python.Nếu bạn muốn tránh những phức tạp của việc xây dựng phong bì xà phòng của riêng bạn từ đầu, điều duy nhất tôi có thể khuyên bạn là xây dựng một phong bì mẫu bằng cách sử dụng bất kỳ công cụ webservices xà phòng nhiều (ví dụ soapui) và sau đó sử dụng nó như là một chuỗi mẫu (I biết, khủng khiếp) trong mã python của bạn

CẬP NHẬT bạn có thể sử dụng spyne. Đó là một bộ công cụ RPC python trong số các giao thức khác hỗ trợ SOAP. Nó sẽ tạo WSDL cho bạn, nhưng nếu mục tiêu của bạn đang thực hiện dịch vụ được mô tả bởi WSDL bạn đã có thì bạn sẽ phải tinh chỉnh dịch vụ gián điệp của mình (viết bằng python) cho đến khi WSDL được tạo ra phù hợp với

Các vấn đề liên quan