Как создать веб-сервис, который получает и отправляет XML на основе файлов XSD? - PullRequest
1 голос
/ 02 октября 2011

Мне нужно создать веб-сервис .NET, который принимает XML, использует его для запроса базы данных, а затем возвращает XML. Мне дали файлы xsd для запроса и ответа. Может ли кто-нибудь указать мне правильное направление, откуда я начинаю или пример?

Я раньше не использовал WCF, поэтому предпочел бы использовать для этого простой файл asmx. Я знаю, как получить данные из базы данных, так что это биты XML и веб-службы, где я потерян.

Я уже некоторое время пытался найти это, но не знаю с чего начать. Спасибо.

Ответы [ 2 ]

5 голосов
/ 02 октября 2011

Проблема, с которой вы столкнулись, состоит в том, что asmx и WCF являются технологиями веб-службы * code-first . Это означает, что вы, как правило, начинаете с классов, а стек веб-служб заботится о том, чтобы ваши типы передавались в виде XML по проводам.

Вы начинаете со схемы, которая не является кодом. Поэтому, если вы хотите использовать asmx / wcf, вам нужно смоделировать свою схему в коде. Вы можете сделать это, выведя структуру класса из вашей схемы, используя xsd.exe (или svcutil.exe для WCF).

В качестве альтернативы вы можете моделировать свои классы вручную на основе определения схемы.

Когда у вас есть классы, вы можете добавить в код декларативные атрибуты (см. http://msdn.microsoft.com/en-us/library/83y7df3e.aspx для asmx, DataContract и DataMember для WCF). Эти атрибуты управляют:

  1. как десериализуется входящий поток XML в тип при получении запроса на обслуживание, и
  2. как экземпляры ваших типов ответов сериализуются в XML при передаче из вашего сервиса

Проблема с этим подходом состоит в том, что получение XML-кода для проверки на соответствие вашим схемам XSD будет немного хитом, поскольку вы не можете полагаться на 100% на вывод классов из XSD, и, кроме того, вы можете пропустить некоторые мелкие детали, если вы моделируем это вручную.

Каким бы способом вы это ни делали, вам нужно убедиться, что ваши экземпляры классов запросов и ответов чисто сериализованы в XML, который будет проверяться на соответствие заданным вами схемам XSD.

Также обратите внимание на среду под названием WSCF-Blue, которая позволяет создавать сначала веб-сервисов по контракту: http://wscfblue.codeplex.com/

Удачи, если вам нужно больше подробностей об этом, пожалуйста, дайте мне знать через комментарий.

0 голосов
/ 02 октября 2011

Насколько я понимаю, вам нужно создать веб-сервис, который будет принимать XML в качестве входных данных, выполнять некоторую обработку и выплевывать XML.

Я предполагаю, что у вас есть базовое понимание XML, но вы ничего не знаете о XSD. Проще говоря, XSD - это документ, который используется для проверки XML-файла. Подумайте об этом, как о правилах построения XML-файла, вы можете прочитать больше о XSD из W3schools . Не стоит беспокоиться о XSD сейчас. Получите несколько примеров XML-документов, которые вы должны принять в качестве входных и выходных данных. Создайте консольное приложение для анализа образца XML-файла и получения результатов из базы данных. Затем используйте результаты для построения выходного XML, посмотрев пример выходного XML. После этого вы можете использовать классы .NET для проверки вашего ввода и вывода XML из имеющегося у вас XSD.

Вы можете посмотреть этот ответ , чтобы увидеть, как выполняется проверка.

Как только это будет сделано, вы можете создать свой веб-сервис для возврата XML в виде строки.

Надеюсь, это поможет.

...