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


Создание служб WCF для ASP.NET AJAX

Microsoft 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, путем добавления соответствующей конечной точки ASP.NET AJAX.

Если вы используете Visual Studio, вы можете использовать предварительно созданный шаблон для служб WCF с поддержкой AJAX, доступный в диалоговом окне "Добавление нового элемента " при работе с веб-сайтами или веб-приложениями ASP.NET.

Если вы не используете шаблоны Visual Studio, есть два способа создать конечную точку ASP.NET AJAX:

Модель веб-программирования, описанная в обзоре модели программирования ВЕБ-HTTP WCF , может использоваться с ASP.NET службами AJAX. Конкретно:

  • Вы можете использовать атрибуты WebGetAttribute и WebInvokeAttribute для выбора между глаголами HTTP GET и HTTP POST. При правильном использовании это может значительно повысить производительность приложения. Дополнительные сведения см. в разделе "Практическое руководство. Выбор между HTTP POST и HTTP GET-запросами для ASP.NET конечных точек AJAX".

  • Вы можете использовать свойства ResponseFormat и ResponseFormat, чтобы ваша служба возвращала данные в формате XML вместо нотации объектов JavaScript по умолчанию (JSON). Это происходит с ASP.NET платформой AJAX, что приводит к тому, что клиент JavaScript получит объект XML DOM.

    Предупреждение

    Чтобы это работало, операция должна задать тип контента как text/xml. В противном случае клиент JavaScript получит строку, содержащую XML- вместо объекта XML DOM.

    Ниже приведен пример операции, возвращающей XML-данные с заданным типом контента соответствующим образом:

    [OperationContract, WebGet(ResponseFormat=WebMessageFormat.Xml)]
    public XElement GetData()
    {
        XElement x;
        //Get some data here...
    
        WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
        return x;
    }
    
  • Никакие другие свойства атрибутов WebGetAttribute и WebInvokeAttribute не могут быть изменены, если требуется совместимость с ASP.NET AJAX. Другие аспекты модели веб-программирования можно использовать, если соглашения о вызовах AJAX для ASP.NET не нарушаются.

Более сложные сценарии требуют получения дополнительных сведений о поддержке 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.

См. также