Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Службы AJAX Windows Communication Foundation (WCF) можно получить на любой веб-странице с поддержкой JavaScript, не требуя ASP.NET AJAX. В этом разделе описывается создание такой службы WCF.
Инструкции по использованию WCF с ASP.NET AJAX см. в статье "Создание служб WCF для ASP.NET AJAX".
Существует три части для создания службы WCF AJAX:
Создание конечной точки AJAX, доступной из браузера.
Создание контракта службы, совместимого с AJAX.
Доступ к службам WCF AJAX.
Создание конечной точки AJAX
Самый простой способ включить поддержку AJAX в службе WCF — использовать WebServiceHostFactory в SVC-файле, связанном со службой, как показано в следующем примере.
<%ServiceHost
language=c#
Debug="true"
Service="Microsoft.Ajax.Samples.CityService"
Factory=System.ServiceModel.Activation.WebServiceHostFactory
%>
Кроме того, можно использовать конфигурацию для добавления конечной точки AJAX. Используйте WebHttpBinding на конечной точке службы и настройте эту конечную точку с помощью WebHttpBehavior как показано в следующем фрагменте кода.
<configuration>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="AjaxBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service name="Microsoft.Ajax.Samples.CityService">
<endpoint
address="ajaxEndpoint"
behaviorConfiguration="AjaxBehavior"
binding="webHttpBinding"
contract="Microsoft.Ajax.Samples.ICityService" />
</service>
</services>
</system.serviceModel>
</configuration>
Рабочий пример см. в службе AJAX с json и XML.
Создание контракта на услугу AJAX-Compatible
По умолчанию контракты сервисов, предоставляемые конечной точкой AJAX, возвращают данные в формате XML. Кроме того, по умолчанию операции службы доступны через HTTP-запросы POST к URL-адресам, которые включают адрес конечной точки, за которым следует имя операции, как показано в следующем примере.
[OperationContract]
string[] GetCities(string firstLetters);
Эта операция доступна с помощью HTTP POST http://serviceaddress/endpointaddress/GetCities и возврата XML-сообщения.
Для настройки этих основных аспектов можно использовать полную модель веб-программирования. Например, можно использовать атрибуты WebGetAttribute или WebInvokeAttribute для управления HTTP-глаголом, на который операция отвечает, или использовать свойство UriTemplate этих соответствующих атрибутов для указания пользовательских URI. Дополнительные сведения см. в разделе "Модель программирования ВЕБ-HTTP WCF ".
Формат данных JSON часто используется в службах AJAX. Чтобы создать операцию, которая возвращает JSON вместо XML, задайте значение ResponseFormat для свойства ResponseFormat (или Json). В разделе сериализации JSONStand-Alone показано, как встроенные типы и типы контрактов данных .NET сопоставляются с JSON.
Как правило, запросы и ответы JSON состоят только из одного элемента. Для предыдущей GetCities операции запрос похож на следующую инструкцию.
"na"
Ответ на этот запрос похож на следующее утверждение.
["Nairobi", "Naples", "Nashville"]
Если операция принимает дополнительный параметр, стиль запроса должен быть обернут так, чтобы оба параметра находились в одном объекте JSON. Пример сообщения JSON в этом стиле приведен в следующем примере.
{"firstLetters": "na", "maxNumber": 2}
Следующий контракт принимает это сообщение.
[WebInvoke(BodyStyle=WebMessageBodyStyle.WrappedRequest, ResponseFormat=WebMessageFormat.Json)]
[OperationContract]
string[] GetCities(string firstLetters, int maxNumber);
Доступ к службам AJAX
Конечные точки WCF AJAX всегда принимают запросы JSON и XML.
HTTP-запросы POST с типом контента application/json обрабатываются как JSON, а те с типом контента, указывающим XML (например, text/xml) обрабатываются как XML.
HTTP-запросы GET содержат все параметры запроса в самом URL-адресе.
Пользователь решает, как создать HTTP-запрос к конечной точке. Кроме того, пользователь имеет полный контроль над конструкцией JSON, которая формирует текст запроса. Пример создания запроса из JavaScript см. в службе AJAX с помощью JSON и XML.