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


Образец службы AJAX, использующей сложные типы

В примере ComplexTypeAjaxService показано, как использовать Windows Communication Foundation (WCF) для создания службы ASP.NET асинхронной службы JavaScript и XML (AJAX), которая создает экземпляры сложных типов и отправляет их между службой и клиентом в виде нотации объектов JavaScript (JSON). К службе AJAX можно обращаться с помощью кода JavaScript из веб-браузера. Этот пример основан на примере базовой службы AJAX.

Поддержка AJAX в WCF оптимизирована для использования с ASP.NET AJAX с помощью ScriptManager элемента управления. Пример использования WCF с ASP.NET AJAX см. в примерах AJAX.

Примечание.

Процедура настройки и инструкции по построению для данного образца приведены в конце этого раздела.

Служба в следующем примере — это служба WCF без кода AJAX. Поскольку атрибут WebGetAttribute не применяется, используется HTTP-команда по умолчанию ("POST"). Служба имеет одну операцию, DoMath, возвращающую сложный тип с именем MathResult. Сложный тип является стандартным типом контракта данных, также не содержащим код, относящийся к AJAX.

[DataContract]
public class MathResult
{
    [DataMember]
    public double sum;
    [DataMember]
    public double difference;
    [DataMember]
    public double product;
    [DataMember]
    public double quotient;
}

Создайте конечную точку AJAX в службе с помощью WebScriptServiceHostFactory точно так же, как в образце базовой службы AJAX.

Веб-страница клиента ComplexTypeClientPage.aspx содержит ASP.NET и код JavaScript для вызова службы, когда пользователь нажимает кнопку "Выполнить вычисление " на странице. Код для вызова службы создает текст JSON и отправляет его с помощью HTTP POST, аналогичной службе AJAX с помощью примера HTTP POST .

После успешного вызова службы можно получать доступ к отдельным членам данных (sum, difference, product и quotient) в полученном объекте JavaScript.

function onSuccess(mathResult){
     document.getElementById("sum").value = mathResult.sum;
     document.getElementById("difference").value = mathResult.difference;
     document.getElementById("product").value = mathResult.product;
     document.getElementById("quotient").value = mathResult.quotient;
}

Настройка, сборка и выполнение образца

  1. Убедитесь, что вы выполнили процедуру однократной установки для примеров Windows Communication Foundation.

  2. Создайте решение ComplexTypeAjaxService.sln, как описано в разделе "Создание примеров Windows Communication Foundation".

  3. Перейдите к http://localhost/ServiceModelSamples/ComplexTypeClientPage.aspx (не открывайте ComplexTypeClientPage.aspx в браузере из каталога проекта).

См. также