Образец службы 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;
}
Настройка, сборка и выполнение образца
Убедитесь, что вы выполнили процедуру однократной установки для примеров Windows Communication Foundation.
Создайте решение ComplexTypeAjaxService.sln, как описано в разделе "Создание примеров Windows Communication Foundation".
Перейдите к
http://localhost/ServiceModelSamples/ComplexTypeClientPage.aspx
(не открывайте ComplexTypeClientPage.aspx в браузере из каталога проекта).