
- •14. Применение Веб-методов. Технология Jasp
- •14.1. Веб-сервисы
- •14.1.1. Введение
- •14.1.2. Веб-службы в asp.Net
- •14.1.3. Доступ к Веб-сервисам в управляемом коде
- •14.1.3.1. Взаимодействие клиент-сервер для клиентов ajax
- •14.1.3.2. Клиентская архитектура технологии ajax
- •14.1.3.3. Серверная архитектура ajax
- •Xml-сериализация. Уровень связи Веб-служб поддерживает xml-сериализацию для soap-запросов к Веб-службам и возвращения типов xml по json-запросам к Веб-службам.
- •14.1.4. Создание Веб-сервиса
- •14.1.4.1. Директива обработки WebService
- •14.1.5. Выполнение http-запросов из клиентского сценария ajax
- •14.1.6. Предоставление доступа к Веб-службам в клиентском сценарии
- •14.1.6.1. Предоставление доступа к сервисам из клиентского сценария на Веб-странице asp.Net
- •14.1.6.2. Примеры
- •14.1.7. Ключевые термины
- •14.2. Технология Jasp
- •14.2.1. Введение
- •14.2.2. "Hello World" на Jasp
- •14.2.3. Создание страницы с разметкой, скриптом и стилями
- •14.2.4. Ресурсы в Jasp
- •14.2.4.1. Css ресурсы
- •14.2.4.2. JavaScript ресурсы
- •14.2.4.3. Html ресурсы
- •14.2.4.4. Бинарные ресурсы
- •14.2.5. Страницы и компоненты
- •14.2.5.1. Создание страниц
- •14.2.5.2. Создание компонент
- •14.2.5.2.1. Создание экземпляров компонент программно
- •14.2.5.2.2. Создание экземпляров компонент через разметку
- •14.2.5.2.3. Создание экземпляров компонент на JavaScript
- •14.2.6. Передача данных на клиентскую сторону
- •14.2.7. Наследование компонент и страниц
- •14.2.7.1. Наследование разметки
- •14.2.7.2. Наследование стилей
- •14.2.7.3. Наследование JavaScript
- •14.2.8. Конфигурирование Jasp
- •14.2.9. Ключевые термины
- •14.3. Краткие итоги
14.1.4.1. Директива обработки WebService
В начале ASMX-страницы находится директива обработки WebService, атрибуты которой содержат сведения о реализации Веб-сервиса. Эта директива предоставляет среде ASP.NET необходимые сведения, например, о том, какой класс реализует функциональность. Ниже приведен пример директивы обработки WebService:
<%@ WebService Language="c#" Codebehind="Service1.asmx.cs"
Class="WebService1.Service1" %>
Атрибут Language указывает, какой язык программирования использовался для разработки сервиса. Веб-сервис можно разрабатывать на любом языке, совместимом с .NET – например, на Visual Basic .NET или на Visual C#.
При создании сервиса в управляемом коде с использованием Visual Studio .NET ее реализация находится в файле с выделенным кодом. Файл с выделенным кодом связывается с ASMX-страницей посредством атрибута Codebehind.
При использовании шаблона сервиса ASP.NET атрибут Class указывает, какой класс в файле с выделенным кодом реализует функциональные возможности сервиса.
Клиенты Веб-сервиса – это компоненты, службы и приложения, ссылающиеся на сервис и использующие его. Стоит отметить, что это не обязательно клиентские приложения – во многих случаях клиентами служб могут быть другие Веб-приложения или даже другие службы.
14.1.5. Выполнение http-запросов из клиентского сценария ajax
Прежде чем обсуждать, каким образом можно использовать прокси-классы для вызова Веб-методов, рассмотрим, как можно решить ту же задачу при помощи класса WebRequest. Этим может потребоваться, если необходимо управлять уровнем связи или выполнять проверку данных, отправляемых на или с сервера, или если заранее не известны параметры самого сервиса.
В следующем примере показаны способы использования объекта WebRequest для реализации Веб-запросов GET и POST при подключении к указанным URL-адресам (конечные точки HTTP):
var resultElement;
function pageLoad()
{
resultElement = $get("ResultId");
}
// Эта функция вызывает GET запрос.
function GetWebRequest()
{
// Создаем объект WebRequest.
var wRequest = new Sys.Net.WebRequest();
// Указываем адрес.
wRequest.set_url("getTarget.htm");
alert("Target Url: getTarget.htm");
// Указываем команду.
wRequest.set_httpVerb("GET");
// Указываем-callback функцию.
wRequest.add_completed(OnWebRequestCompleted);
// Очищаем содержимое элемента, который будет использоваться для вывода результата.
resultElement.innerHTML = "";
// Вызываем запрос.
wRequest.invoke();
}
// Эта функция вызывает POST запрос.
function PostWebRequest()
{
// Создаем объект WebRequest.
var wRequest = new Sys.Net.WebRequest();
// Указываем адрес.
wRequest.set_url("postTarget.aspx");
alert("Target Url: postTarget.aspx");
// Указываем команду.
wRequest.set_httpVerb("POST");
// Указываем обработчик запроса.
wRequest.add_completed(OnWebRequestCompleted);
// Указываем тело POST.
var requestBody = "Message=Привет, Мир!";
wRequest.set_body(requestBody);
wRequest.get_headers()["Content-Length"] = requestBody.length;
// Очищаем содержимое элемента, который будет использоваться для вывода результата.
resultElement.innerHTML = "";
// Вызываем запрос.
wRequest.invoke();
}
// Эта функция вызывается асинхронно, когда завершится запрос.
function OnWebRequestCompleted(executor, eventArgs)
{
if(executor.get_responseAvailable())
{
// Отобразим статус запроса.
resultElement.innerHTML +=
"Status: [" + executor.get_statusCode() + " " +
executor.get_statusText() + "]" + "<br/>";
// Отобразим заголовки запроса.
resultElement.innerHTML += "Headers: ";
resultElement.innerHTML += executor.getAllResponseHeaders() + "<br/>";
// Отобразим тело запроса.
resultElement.innerHTML += "Body:";
if(document.all)
resultElement.innerText += executor.get_responseData();
else
resultElement.textContent += executor.get_responseData();
}
}
if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
В табл. 11.1 перечислены основные классы, связанные с Веб-сервисами, которые можно вызвать из клиентского сценария.
Таблица 14.1. Пространства имен для клиента | |
Имя |
Описание |
Пространство имен Sys.Net |
Содержит классы, управляющие взаимодействием между клиентскими приложениями AJAX в ASP.NET и Веб-службами на сервере. Пространство имен Sys.Net является частью Microsoft AJAX (библиотека). |
Пространство имен Sys.Serialization |
Содержит классы, связанные с сериализацией данных для клиентских приложений AJAX в ASP.NET. |
Пространство имен Sys.Services |
Содержит типы, которые обеспечивают доступ сценариев клиентских приложений AJAX в ASP.NET к службе проверки подлинности, службе профилей и другим службам приложения ASP.NET. Пространство имен Sys.Services является частью Microsoft AJAX (библиотека). |
В табл. 11.2 перечислены основные классы, связанные с Веб-сервисами, которые можно вызвать на сервере.
Таблица 14.2. Пространства имен для сервера | |
Имя |
Описание |
System.Web.Script.Serialization |
Содержит классы, обеспечивающие сериализацию в формат JSON и десериализацию из этого формата для управляемых типов. Также обеспечивает расширенные возможности для настройки сериализации. |