Создание служб WCF для ASP.NET AJAX
Технология ASP.NET AJAX корпорации Майкрософт позволяет быстро создавать веб-страницы, содержащие широкий набор средств взаимодействия с пользователем с известными элементами пользовательского интерфейса. Эта технология предоставляет библиотеки клиентских сценариев, включающие не зависящие от веб-обозревателя технологии ECMAScript (JavaScript) и динамического HTML (DHTML), и интегрирует их с платформой разработки на базе сервера ASP.NET 2.0. Используя ASP.NET AJAX, можно улучшить взаимодействие веб-приложений с пользователем и повысить их эффективность.
Технология ASP.NET AJAX состоит из библиотек клиентских сценариев и серверных компонентов, интегрированных для обеспечения надежной инфраструктуры разработки. Доступ к службе со страницы ASP.NET: если URL-адрес службы добавляется в элемент управления диспетчера скриптов ASP.NET на странице, операции службы могут вызываться с помощью кода JavaScript, что выглядит абсолютно аналогично обычному вызову функции JavaScript.
Большинство служб Windows Communication Foundation (WCF) могут предоставляться в качестве службы, совместимой с ASP.NET AJAX, добавив соответствующую конечную точку AJAX ASP.NET.
Если вы используете Visual Studio, вы можете использовать предварительно созданный шаблон для служб WCF с поддержкой AJAX, доступный в диалоговом окне "Добавление нового элемента " при работе с ASP.NET веб-сайтами или веб-приложениями.
Если шаблоны Visual Studio не используются, конечную точку ASP.NET AJAX можно создать двумя указанными ниже способами.
Создайте конечную точку, используя динамическую активацию основного приложения, не применяя никакой конфигурации. Это основной подход при незнании системы конфигурации WCF. Дополнительные сведения см. в статье "Практическое руководство. Добавление конечной точки AJAX ASP.NET без использования конфигурации".
Добавьте конечную точку с поддержкой AJAX в службу WCF с помощью конфигурации. Дополнительные сведения см. в разделе "Практическое руководство. Использование конфигурации для добавления конечной точки ASP.NET AJAX".
Модель веб-программирования, описанная в обзоре модели программирования ВЕБ-HTTP WCF, может использоваться с ASP.NET службами AJAX. В частности:
Для выбора команд HTTP GET и HTTP POST можно использовать атрибуты WebGetAttribute и WebInvokeAttribute. При правильном применении это может существенно повысить производительность приложения. Дополнительные сведения см. в разделе "Практическое руководство. Выбор между HTTP POST и HTTP GET-запросами для ASP.NET конечных точек AJAX".
Чтобы вынудить службу возвращать XML-данные вместо нотации объекта JavaScript (JSON) по умолчанию, можно применить свойства ResponseFormat и ResponseFormat. При использовании этой возможности с инфраструктурой ASP.NET AJAX клиент JavaScript будет принимать DOM-объект XML.
Предупреждение
Для правильной работы необходимо с помощью операции задать тип содержимого text/xml. В противном случае клиент JavaScript будет принимать строку, содержащую XML вместо DOM-объекта XML.
В следующем примере показана операция, возвращающая XML-данные с типом содержимого, настроенным соответствующим образом.
[OperationContract, WebGet(ResponseFormat=WebMessageFormat.Xml)] public XElement GetData() { XElement x; //Get some data here... WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml"; return x; }
Если требуется совместимость с ASP.NET AJAX, никакие другие свойства в атрибутах WebGetAttribute и WebInvokeAttribute изменять нельзя. Можно использовать другие аспекты модели веб-программирования, пока не нарушены соглашения о вызовах ASP.NET AJAX.
Более сложные сценарии требуют получения дополнительных сведений о поддержке AJAX в WCF:
Сведения о том, как данные передаются между клиентом страницы AJAX и службой WCF с помощью JavaScript, а также подробные сведения о том, как платформа .NET Framework типы сопоставляются с типами JavaScript, см. в статье "Поддержка json и других форматов передачи данных".
чтобы воспользоваться преимуществами возможностей ASP.NET, например проверкой подлинности на основе URL-адреса и доступом к данным сеансов ASP.NET, можно включить режим совместимости с ASP.NET с использованием конфигурации.
Конечные точки AJAX в WCF могут использоваться даже без ASP.NET платформы AJAX. Для этого требуется понимание архитектуры поддержки поддержки поддержки AJAX в WCF. Обсуждение этой архитектуры см. в статье WCF Web Http Programming Object Model. Пример кода, демонстрирующий этот подход, см. в статье AJAX Service with JSON and XML.
См. также
- Модель веб-программирования HTTP WCF
- Практическое руководство. Добавление конечной точки ASP.NET AJAX без использования конфигурации
- Практическое руководство. Использование конфигурации для добавления конечной точки ASP.NET AJAX
- Практическое руководство. Выбор между запросами HTTP POST и HTTP GET для конечных точек ASP.NET AJAX