Выбор дополнительного формата

Данный образец демонстрирует расширение программной модели Windows Communication Foundation (WCF) REST для поддержки новых форматов исходящих ответов. Кроме того, образец использует шаблон T4 для возврата ответов в виде страницы XHTML, показывая, как можно реализовать наглядную программную модель.

Подробные сведения об образце

Образец состоит из простой службы, а также клиентского кода, производящего запросы к этой службе. Служба поддерживает единственную операцию [WebGet], имеющую следующую сигнатуру метода: Message EchoListWithGet(string list);

Когда клиент производит запрос к службе, он предоставляет разделенный запятыми список элементов в параметре строки запроса list, а служба возвращает тот же список в одном из следующих форматов: XML, JSON, Atom, XHTML или jpeg.

Формат ответа, возвращаемого службой, определяется, во-первых, параметром строки запроса format, а во-вторых, заголовком HTTP Accept, содержащимся в запросе. Если значение параметра строки запроса format указывает один из перечисленных ранее форматов, ответ возвращается в этом формате. Если параметр строки запроса format отсутствует, служба перебирает элементы заголовка Accept в запросе и возвращает формат первого поддерживаемого ею типа содержимого content-type.

Возвращаемый тип операции можно игнорировать. Программная модель WCF REST сама по себе поддерживает только форматы ответа XML и JSON, если операция возвращает тип, отличный от Message. Однако, если используется тип ответа Message, разработчик имеет полный контроль над тем, какой формат должно иметь это сообщение.

Образец использует методы CreateXmlResponse, CreateJsonResponse и CreateAtom10Response для сериализации списка строк в сообщениях XML, JSON и ATOM соответственно. В случае формата ответа jpeg используется метод CreateStreamResponse, а изображение сохраняется в потоке. Ответ XHTML использует метод CreateTextResponse, а также предварительно обработанный шаблон T4, который состоит из TT-файла и автоматически формируемого файла CS. TT-файл позволяет разработчику записывать ответ в виде шаблона, содержащего переменные и управляющие структуры. Дополнительные сведения T4 см. в разделе Generating Artifacts By Using Text Templates (на английском языке).

Образец состоит из резидентной службы и клиента, который работает в консольном приложении. Во время выполнения консольного приложения клиент совершает запросы к службе и выводит в окно консоли нужные сведения из ответов.

Выполнение этого образца

  1. Откройте решение образца «Advanced Format Selection». Для успешного выполнения образца среду Visual Studio 2010 необходимо запускать от имени администратора. Для этого щелкните правой кнопкой мыши значок Visual Studio 2010 и выберите в контекстном меню команду Запуск от имени администратора.

  2. Нажмите клавишу F6 для построения решения, затем нажмите сочетание клавиш Ctrl-F5 для запуска консольного приложения проекта AdvancedFormatSelection без отладки. Открывается окно консоли с URI запущенной службы и URI HTML-страницы справки для запущенной службы.

  3. Во время выполнения образца клиент отправляет запросы к службе и выводит ответы в окно консоли. Обратите внимание на различные форматы ответов: XML, JSON, Atom и XHTML.

  4. После этого вам будет предложено перейти к URI, в котором можно запросить ответ в формате JPEG. Откройте веб-обозреватель и перейдите по заданному URI.

  5. Чтобы завершить образец, нажмите любую клавишу.

Ee662965.Important(ru-ru,VS.100).gif Примечание
Образцы уже могут быть установлены на компьютере. Перед продолжением проверьте следующий каталог (по умолчанию).

<диск_установки>:\WF_WCF_Samples

Если этот каталог не существует, перейдите на страницу Образцы Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4, чтобы загрузить все образцы Windows Communication Foundation (WCF) и WF. Этот образец расположен в следующем каталоге.

<диск_установки>:\WF_WCF_Samples\WCF\Basic\Web\AdvancedFormatSelection