Хорошо ли Python для написания стандартных, совместимых и полных веб-сервисов SOAP? - PullRequest
1 голос
/ 29 июля 2010

Я использовал несколько библиотек Python для мыла ( SOAPpy, soaplib и Twisted обертка вокруг SOAPpy ) для написания моего мыльного веб-сервиса.

Когда я использовал клиенты Python (SOAPpy.SOAPProxy и SUDS), я мог общаться с моим веб-сервисом (возвращая объекты простого и сложного типа).

Но когда я попробовал с C # ASP.net, у меня возникло много проблем. Я подошел к вопросу возврата простых типов (int, string, double, boolean) с некоторым взломом библиотеки SOAPpy. Но я все еще борюсь с возвратом ComplexTypes из SOAPpy.

Мне не удалось найти какую-либо полную, совместимую альтернативную библиотеку Python для написания моего веб-сервиса.

Основной вопрос: Будем весьма благодарны за любые предложения / примеры возврата совместимого с точечными сетями комплексного типа из веб-службы python.

Примечание: Мне пришлось немного взломать SOAPpy, чтобы он работал в первую очередь. И мне пришлось вручную написать файл wsdl в случае SOAPpy.

1 Ответ

1 голос
/ 29 июля 2010

По моему личному мнению, совместимость библиотек Python SOAP с другими платформами не очень хорошая.

Я думаю, что здесь есть две проблемы:

  • Во-первых, совместимостьвеб-сервисы среди стеков веб-сервисов - это скорее стремление, чем реальность.Например, посмотрите на этот вопрос , чтобы увидеть, как использовать веб-сервисы между Java и WCF.
  • При этом концепция WSDL, которая в значительной степени является типизацией времени компиляции, не соответствуетПервоначальная философия Python, поэтому в него было вложено меньше усилий.

Я больше года не работал с веб-сервисами, так что, возможно, все изменилось.Но совет тот же, что и в предыдущем вопросе:

  • Начните с написания WSDL, если вы используете более одного языка / библиотеки.
  • Как скопировано из другого вопроса,«Начнем с XSD, но ограничимся основными типами. Примитивы, сложные типы, состоящие из примитивов, одинаковых массивов».
  • В конце я остановился на использовании suds для веб-клиентов Python, после экспериментов с ним иsoappy и zsi.Через некоторое время я использовал библиотеку на основе C (gsoap) и ссылки на нее из Python.
  • Я никогда не был удовлетворен реализацией серверов в Python, поэтому я использовал для сборки серверов Python иподключитесь к ним из другой библиотеки, которая может экспортировать сервисы SOAP (в моем случае Java или C, вы, вероятно, будете использовать C #).Соединение обычно является гораздо более простым протоколом.
  • При этом, если вы начнете с WSDL, вы, вероятно, получите хорошие результаты, используя soaplib или zsi.Но я боюсь, что практически нет возможности медленно создавать типы при проверке совместимости.
...