|
Программирование >> Программирование с использованием ajax
рибутом. Вызов таких методов возможен из 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 ;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |