Поделиться через


Передача формы

Данный образец демонстрирует расширение программной модели WCF REST для поддержки новых форматов входящих запросов. Образец также содержит реализацию модуля форматирования, который может десериализовать запрос из передачи формы HTML методом POST в тип .NET Framework. Кроме того, образец использует шаблон T4 для возврата страницы HTML, которая предоставляет форму HTML, дающую пользователям возможность возвращать данные в службу WCF REST.

Демонстрации

  • Расширение поддержки для форматов входящих запросов.

  • Интеграция шаблонов T4.

Обсуждение

Этот образец состоит из двух проектов. Один проект представляет собой библиотеку HtmlFormProcessing, которая содержит пользовательский модуль форматирования запросов, реализующий десериализацию запросов из форм HTML, метода POST в типы .NET Framework. Второй проект представляет собой консольное приложение, которое расширяет образец базовой службы ресурсов для поддержки использования пользовательского модуля форматирования запросов библиотеки HtmlFormProcessing.

Пользовательский модуль форматирования, который может десериализовать передачу форм HTML методом POST (HtmlFormRequestDispatchFormatter), принимает как типы .NET Framework, которые можно преобразовать из строки с помощью QueryStringConverter, так и типы, отмеченные атрибутом DataContractAttribute и имеющие только члены, которые допускают преобразование из строки с помощью QueryStringConverter.

Проект библиотеки HtmlFormProcessing также содержит абстрактный базовый класс, RequestBodyDispatchFormatter, который можно использовать для создания других пользовательских модулей форматирования запросов. Наследование от RequestBodyDispatchFormatter позволяет разработчику сосредоточиться на логике десериализации текста запроса, что обеспечивает сопоставление базовым классом параметров шаблона URI параметрам метода операции. Также в проекте библиотеки HtmlFormProcessing содержится класс HtmlFormProcessingBehavior, который показывает, как наследовать от класса WebHttpBehavior, чтобы заменить модуль форматирования по умолчанию на пользовательский модуль форматирования запросов.

Этот проект консольного приложения расширяет образец Основная служба ресурсов. В образце базовой службы ресурсов показано, как предоставить доступ к ресурсу с использованием модели программирования WCF REST. В образце базовой службы ресурсов доступ к коллекции клиентских ресурсов предоставляется образом, позволяющим создавать, извлекать, обновлять и удалять клиентов в коллекции. В образце базовой службы ресурсов используются только два непосредственно поддерживаемых формата входящих запросов — XML и JSON.

Консольное приложение в этом образце формы использует пользовательский модуль форматирования в библиотеке HtmlFormProcessing, что дает пользователям возможность создавать клиентов, отправляя запрос из формы HTML с помощью веб-обозревателя. Кроме того, добавляется операция, которая возвращает страницу HTML, содержащую форму для публикации в службе. Эта страница HTML формируется с использованием предварительно обработанного шаблона T4, который состоит из TT-файла и автоматически формируемого файла CS. TT-файл позволяет разработчику записывать ответ в виде шаблона, содержащего переменные и управляющие структуры. Дополнительные сведения T4 см. в разделе Generating Artifacts By Using Text Templates (на английском языке).

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

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

  2. Нажмите кнопку F6, чтобы создать решение, а затем нажмите сочетание клавиш CTRL+F5, чтобы запустить проект FormPost.

  3. Открывается окно консоли с URI запущенной службы и URI HTML-страницы справки для запущенной службы.

  4. При выполнении образца клиент записывает состояние текущего действия, будь то добавление заказчика, обновление заказчика, удаление заказчика или получение списка текущих заказчиков из списка в окно консоли.

  5. Затем выдается предложение перейти к URI формы заказчика. Откройте веб-обозреватель и перейдите по заданному URI. Введите имя и адрес для заказчика и нажмите кнопку Отправить.

  6. Нажмите любую клавишу, чтобы продолжить выполнение образца в окне консоли.

  7. После завершения обратите внимание, что заказчик, созданный из веб-обозревателя, включен в окончательный список заказчиков.

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

Ee818241.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\Extensibility\Web\FormPost