Пример Web-службы

advertisement
Из цикла лекций «Internet-технологии разработки приложений» для студентов 4-го курса кафедры Компьютерных
технологий физического факультета Донецкого национального университета
Пример Web-службы
Калькулятор
с валидацией
Показать работу приложения GetWebServiceCalculate
проф. В.К.Толстых, www.tolstykh.com
Web-служба «Калькулятор»
Атрибуты службы
Имя службы
Поддержка сервиса
для ранних версий 1.1
Атрибуты метода
Параметры метода
Имя метода
Содержание файла –
одна строка
Реализация метода:
Атрибуты
CacheDuration – определяет промежуток времени в секундах на который кэшируется
Web-служба. По умолчанию он равен 0, т.е. кэширование отключено.
Description – описание метода, которое выводится на страницу службы под ссылкой
на страницу метода.
EnableSession – включает поддержку сеансов: [WebMethod(EnableSession=true)].
По умолчанию поддержка сеансов в Web-службах отключена, т.е. после
выполнения каждого метода связь со службой разрывается.
TransactionOption – управляет поддержкой транзакций
MessageName – альтернативное (уникальное) имя метода, если их несколько с одним
именем, т.е. – перегружаемые.
BufferResponse – по умолчанию true, т.е. – ответ Web-службы перед отправкой на
запрос клиента полностью формируется в буфере.
Тестирование Web-службы
«Калькулятор»
Ответ – результат тестирования
Показать
тестирование метода Calculate
Полное тестирование (в указанном
виде) доступно только с локального
сервера
Показать
WSDL Описание службы
Вызов Web-службы «Калькулятор» в
ASP.NET-приложении
GetWebServiceCalculate
Готовим ASP.NET проект для отправки исходных данных в Web-службу
Валидатор
CustomValidadtor
далее
Подключение ссылки в VS 2012
на Web-службу «Калькулятор»
Calculate.asmx
Если Web-служба когда-либо
будет модернизирована, то
необходимо ссылку обновить
через локальное меню папки
App_WebReferences
Операции
(методы)
службы
Пространство имён,
где будет находится
прокси-класс для
службы
Проверьте атрибут
асинхронного вызова страницы
Вызов Web-служб реализуется с асинхронных .aspxстраниц, т .е. в директиве Page файла .aspx должно быть
Async="true". Если вы делаете операцию асинхронно,
то это означает, что вы запускаете операцию и
продолжаете что-то делать, возвращаясь к результатам
вашей операции только тогда, когда она уже завершится.
Асинхронный вызов актуален если таких вызовов несколько и они связаны между
собой. При этом код прокси-класса (для взаимодействия с web-службой) автоматически
синхронизирует все поставленные в очередь вызовы и блокирует рендеринг страницы
до тех пор пока все они не будут выполнены.
Приложения, требующие длительного времени обработки (Web-службы, БД), должны
организовываться в виде асинхронных страниц. В момент ожидания ответа от других
серверов они не занимают пул приложений и не прерывают связь с клиентом из-за
ограниченности времени.
Синхронные страницы могут «забить» пул ожиданием ответов от внешних задач =>
новые запросы не обрабатываются (503 «Server too busy»), процессор приложения
почти бездействует, а задачи в пуле снимаются с указанным сообщением.
Код асинхронной страницы вызова
операции Web-службы в.NET 4.5
Входные переменные для
Web-службы
Вызов метода валидации
текущей страницы
далее
Идентификатор
прокси-класса
Web-службы
Валидаторы проекта
Проект может быть дополнен серверной и клиентской реализацией
валидатора CustomValidator. Контроль данных целесообразно
проводить до вызова удалённых служб.
Серверная часть валидатора:
Клиентская часть валидатора:
Клиентский скрипт программируется
вручную. Параметры функции –
стандартные идентификаторы.
Если преобразование к вещественному числу не дало результат NaN для
обеих текст-боксов, то валидация на клиентской машине – успешная.
Download