Программирование >>  Программирование с использованием ajax 

1 ... 224 225 226 [ 227 ] 228 229 230 ... 396


рибутом. Вызов таких методов возможен из WebMethod, но не из клиентского приложения. Класс атрибута WebMethodAttribute позволяет вызывать метод из удаленных клиентов и определять, должен ли ответ подвергаться буферизации, в течение какого времени кэш должен оставаться действительным, и должно ли состояние сеанса сохраняться с именованными параметрами. Свойства класса WebMethodAttribute перечислены в табл. 21.3.

Таблица 21.3. Свойства класса WebMethodAttribute

Свойство

Описание

BufferResponse CacheDuration

Description EnableSession

MessageName TransactlonOption

Получает или устанавливает флаг, указывающий необходимость буферизации ответа. Значение этого свойства по умолчанию - true. При буферизации ответа только готовый пакет отправляется клиенту

Устанавливает продолжительность временного интервала, в течение которого должно выполняться кэширование результата. При вторичном выполнении того же запроса только кэшированное значение будет возвращено, если запрос выполняется в течение периода, заданного этим свойством. Значение этого свойства по умолчанию - о, что означает отключение кэширования результата

Используется при генерировании справочных страниц службы для предполагаемых клиентов

Булевское значение, указывающее, является ли состояние сеанса допустимым. Значение этого свойства по умолчанию - false, т.е. свойство Session класса WebService не может использоваться для хранения состояния сеанса

По умолчанию имя сообщения устанавливается совпадающим с именем метода

Указывает поддержку транзакций для метода. Значение этого свойства по умолчанию - Disabled

Атрибут WebServiceBindlng

Атрибут WebServiceBinding служит для пометки уровня соответствия Web-службы требованиям пригодности для взаимодействия между Web-службами. Свойства этого атрибута описаны в табл. 21.4.

Таблица 21.4. Свойства класса WebServiceBinding

Свойство

Описание

ConformanceClaims

EmitConformanceClaims

Name

Location

Namespace

Устанавливается равным значению перечисления Wsiciaims. WsiClaims может иметь два значения: BasicProf ilell, когда Web-служба соответствует базовому профилю Basic Profile 1.1, или None при отсутствии какого-либо соответствия

Булевское свойство, которое определяет, должны ли заявления о соответствии, указанные свойством ConformanceClaims, передаваться в обобщенную документацию WSDL

Определяет имя привязки. По умолчанию это имя совпадает с именем Web-служб с добавлением к нему строки Soap

Определяет расположение информации о привязке, например,

http: www.wrox.com/DemoWebservice.asmx?wsdl

Определяет пространство имен привязки



Клиент

Чтобы вызывать метод, клиент должен создать HTTP-подключение к серверу Web-службы и отправить HTTP-запрос для передачи сообщения SOAP. Вызов метода должен быть преобразован в сообщение SOAP. Все эти действия выполняются прокси-клиентом. Реализация прокси-клиента осуществляется в классе SoapHttpClientProtocol.

Класс SoapHttpClientProtocol

Класс System.Web.Services.Protocols.SoapHttpClientProtocol - базовый класс прокси-клиента. Метод Invoke () преобразует аргументы для построения сообщения SOAP, отправляемого Web-службе. Вызываемая Web-служба определяется свойством Url.

Класс SoapHttpClientProtocol поддерживает также асинхронные вызовы с помощью методов Beginlnvoke () и Endlnvoke ().

Альтернативные клиентские протоколы

Вместо класса SoapHttpClientProtocol можно использовать и другие классы прокси-клиента. HttpGetClientProtocol и HttpPostClientProtocol просто выполняют простые HTTP-запросы GET или POST, не порождая накладных расходов, связанных с вызовом SOAP.

Классы HttpGetClientProtocol и HttpPostClientProtocol можно использовать, если в данном решении каркас .NET использован в системе как клиента, так и сервера. При необходимости использования других технологий придется применять протокол SOAP.

Сравните следующий HTTP-запрос POST с ранее приведенным вызовом SOAP:

POST /WebServiceSample/Servicel.asmx/ReverseString HTTP/1.1 Host: localhost

Content-Type: application/x-www-form-urlencoded Content-Length: длина

HTTP-запрос GET еще короче. Недостаток запроса GET состоит в том, что длина отправленных параметров ограничена. Если их длина превышает 1 Кбайт, следует подумать об использовании запроса POST.

GET /WebServiceSample/Servicel.asmx/ReverseString?message=string HTTP/1.1 Host: localhost

Накладные расходы, связанные с классами HttpGetClientProtocol и HttpPost ClientProtocol, меньше чем те, что связаны с методами SOAP. Однако недостаток этого подхода в том, что какая-либо поддержка со стороны Web-служб, действующих на других платформах, и поддержка отправки чего-либо кроме простых данных отсутствует.

Создание простой Web-службы ASP.NET

В следующем практическом занятии мы создадим простую Web-службу с помощью Visual Studio.



Р !?!!!!- Создание проекта Web-службы

1. Выбрав пункт меню File NewProject (Файл=>Создать=>Проект), создайте новые проект Web-службы, укажите шаблон ASP.NET Web Service Application (Приложение Web-службы ASP.NET), как показано на рис. 21.4, присвойте проекту имя WebServiceSample и щелкните на кнопке ОК.

о

AOOpOill

LINQ 10 SOPir,.n

R omne

.mth Опигч Traipiali(

NT AM/ J*rv i ConliOl bt

D ttl)ttt PiOKti Oitti ctjird SmUai * (Kqfta lot p * no *

Puc. 21.4. Создани£ нового проекта WebServiceSample

Описание полученных результатов

Файлы, сгенерированные шаблоном проекта, перечислены ниже.

□ Servicel. asmx. Этот файл содержит класс Web-службы. Все Web-службы ASRNET обозначаются расширением .asmx. Исходный код хранится в файле Service. cs, поскольку связанные с ним функциональные возможности используются средой Visual Studio.

□ Servicel. asmx. cs. Шаблон проекта генерирует в файле Servicel. asmx. cs класс Servicel, который является производным от System.Web. Services .WebService. Этот файл содержит также образец кода для кодирования метода Web-службы - он должен быть общедоступным и помеченным атрибутом WebMethod:

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

[WebService(Namespace = http: tempuri.org)] [WebServiceBinding(ConformsTo=WsiProfile.BasicProfilel l)] [Toolboxltem(false)]

public class Service : System.Web.Services.WebService {

[WebMethod]

public string HelloWorldO

return Hello World ;



1 ... 224 225 226 [ 227 ] 228 229 230 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика