Я планирую веб-сервис XML, который берет запрос XML и возвращает ответ XML по HTTP. Это не SOAP, и это не чистый REST ни один - я думаю, что это могло бы быть лучше всего описано как POX (Простой XML) API. (Больше деталей к концу этого сообщения, если Вам интересно, но я пытаюсь сохранить свой основной вопрос общим.)
Мой опыт с XML включает немного больше, чем DOM и SAX... У меня нет большой части подсказки о видах инструментариев, которые разработчики обычно используют для интегрирования их приложений со сторонними веб-сервисами. Но я хочу сделать этот веб-сервис максимально простым, чтобы другие использовали.
Я сделал XML-схему для описания то, что позволяется в запросе XML и ответе XML. Достаточно простой, кроме я не знаю, как хорошо это будет работать с различными инструментариями. Я понимаю, что существуют инструментарии там, которые могут взять XML-схему и превратить ее в классы (например, для .NET или Java). Много потенциальных клиентов, с которыми я говорил, использует .NET в некоторой форме или форме, таким образом, я предполагаю, что инструментарии .NET являются самыми релевантными в этом экземпляре. (Хотя я определенно не хочу делать что-то .NET конкретный, я действительно хочу попытаться сделать его максимально легким, чтобы типичный клиент использовал этот веб-сервис.)
Так конкретно я задаюсь вопросом о том, что я должен сделать для создания вещей легче для разработчиков:
Немного больше информации о том, что я пытаюсь сделать (только если Вы хотите ее):
Я пытался сохранить свой основной вопрос общим, так, чтобы другие нашли это полезным, но, в случае, если это релевантно, вот немного больше информации о том, чего я пытаюсь достигнуть, и что я планирую.
Я разрабатываю веб-сервис, который вычислит данные по требованию для авторизованных клиентов только. Клиентский запрос будет состоять из спецификации XML данных, которые они хотят, наряду с аутентификацией. Мои серверы вычислят данные, которые они попросили, и отправьте их как ответ XML.
Я никогда не создавал веб-сервис прежде, но я провел долгое время, изучая SOAP, REST, XML-схему, безопасность и много существующих веб-сервисов/API как Amazon SimpleDB, Flickr и Netflix.
После большого обдумывания я решил что:
Я разработал XML-схему для запроса и ответа, в настоящее время все только в одном .xsd файле, но я задаюсь вопросом о том, как лучше всего структурировать вещи для совместимости и простоты использования с различных платформ/инструментариев и т.д.
Вы задумываешься над этим. Идея веб-сервисов состоит в том, чтобы функционировать как интерфейс для использования приложений. В конце концов, это просто некоторая полезная нагрузка, отправляемая от клиента к серверу по протоколу HTTP.
Большинство упомянутых вами проблем связано со сборкой клиентов-заглушек / прокси для приложения-потребителя. .Net имеет Visual Studio и утилиты командной строки wsdl.exe, Java имеет Apache Axis2 и другие инструменты и т. Д. Список можно продолжить для всех других языков / платформ, о которых вы только можете придумать. Я бы не стал слишком сильно беспокоиться о деталях этих инструментов; они постоянно меняются, так что не отставать от них может быть нелегко.
Чтобы найти нужную информацию, погрузитесь в миры - напишите клиент .Net, клиент Java, клиент Python, клиент Ruby и т. Д. Узнайте, что необходимо для использования вашего сервиса в этих средах (если это действительно (необходимо). Расставьте приоритеты в списке на основе набора ваших клиентов или того, кем вы хотите быть.
Я уверен, что вы обнаружите, что разработчики, которые разбираются в этих средах, также будут знать, как использовать ваш сервис. Если они являются достойной частью вашего рынка, узнайте, что им нужно от вас, чтобы облегчить их доступ и использование.
SOAP далеко не так плох, как вы думаете. Фактически, для многих клиентов было бы проще , просто , потому что существуют наборы инструментов. Вся эта «цифровая подпись», о которой вы говорите, не существует при использовании простого SOAP 1.2 поверх HTTP.
Также имейте в виду, что если вы выберете технологию, отличную от SOAP, всем вашим клиентам придется создавать свои «прокси-классы» «вручную».
Вам следует рассмотреть возможность раскрытия этой службы несколькими способами. Нет причин не раскрывать один и тот же код с использованием как SOAP, так и REST или POX. Вы не знаете, какую платформу вы используете, но WCF упрощает такие вещи, и я уверен, что это, по крайней мере, возможно на платформах на основе Java.