Лекция: Использование Web-службы с помощью страницы ASP.NET. Обнаружение. Создание класса представителя

Веб-службы — это компоненты веб-сервера, которые клиентское приложение может вызывать, выполняя запросы HTTP через Интернет. Платформа ASP.NET позволяет создавать пользовательские веб-службы или использовать встроенные службы приложения, вызывая их из любого клиентского приложения.

Веб-службы можно создавать, используя архитектуру ASP.NET, что позволяет им использовать разнообразную функциональность платформы .NET Framework: например, проверку подлинности, кэширование и управление состоянием. Поскольку основой для веб-служб в управляемом коде служат ASP.NET и платформа .NET Framework, разработчики могут сосредоточиться на создании веб-служб или на их использовании, не утруждаясь разработкой кода инфраструктуры.

В модели приложений ASP.NET веб-страницы, рассчитанные на просмотр в обозревателе, используют расширение ASPX. Чтобы отличаться от обычных страниц ASP.NET, веб-службы используют расширение ASMX.

При работе с веб-службами существуют две фундаментальные роли:

Создание веб-службы — при создании XML веб-службы создается приложение, которое предоставляет некую функциональность клиентам этой XML веб-службы.

Обращение к веб-службе — при обращении к веб-службе клиентское приложение находит веб-службу, создает ссылку на нее и использует ее функциональные возможности. Обычно клиентом XML веб-службы является приложение, способное отправлять, принимать и обрабатывать сообщения, отправляемые веб-службе и получаемые от нее. Тем не менее минимальное требование заключается в том, что клиент должен быть способен отправлять сообщения веб-службам. Это требование относится ко всем приложениям, работающим под управлением платформы .NET Framework.

Веб-службы могут быть как отдельными приложениями, так и составными компонентами более крупных веб-приложений. Предположим, что создается веб-приложение, которое используется для продажи книг через Интернет. Такое веб-приложение может взаимодействовать с веб-службами следующим образом:

Создание веб-службы — приложение публикует функциональность обработки заказов в качестве веб-службы, которую партнеры, в свою очередь, используют в своих веб-приложениях для продажи книг через интернет-магазин, не вынуждая покупателей переходить на веб-узел продажи книг.

Обращение к веб-службе — приложение обращается к веб-службе, опубликованной другой сетевой компанией, специализирующейся на рецензировании и предоставлении рецензий книжным интернет-магазинам. Когда посетители интернет-магазина просматривают описание определенной книги, они также видят рецензию на эту книгу на той же странице.

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

Обнаружение — это процесс определения местонахождения одного или нескольких документов с описанием конкретной веб-службы XML на языке описания веб-служб WSDL (Web Services Description Language). После того, как служба найдена, документ WSDL содержит описание действий, поддерживаемых службой. Веб-службы XML используют открытые форматы для связи, т.е. протоколы, которые распознаются всеми системами, поддерживающими наиболее общие веб-стандарты. SOAP является ключевым протоколом для связи с веб-службами XML.

Для обнаружения веб-службы по URL-адресу можно использовать инструмент обнаружения веб-служб (Disco.exe), запускаемый из командной строки.

«Disco /out:location /username:user /password:mypwd /domain:mydomain www.contoso.com/my.disco»

Параметр Значение

www.contoso.com/my.disco

URL-адрес, по которому должно производиться обнаружение.

/out: расположение

Расположение для создания файла с результатами обнаружения. Значением по умолчанию является текущий каталог. (Необязательный параметр)

/username: пользователь

Имя пользователя, используемое для подключению к веб-серверу, требующему проверку подлинности. (Необязательный параметр)

/password: мой_пароль

Пароль, используемый для подключению к веб-серверу, требующему проверку подлинности. (Необязательный параметр)

/domain: мой_домен

Домен, используемый для подключению к веб-серверу, требующему проверку подлинности. (Необязательный параметр)

Определение объекта предполагает выделение области памяти, достаточное для размещения данных-членов объекта и организацию ссылки на объект.

В C++ существует множество способов определения (создания) объектов.

В частности, объект может быть создан:

как глобальная переменная,

как локальная переменная,

как элемент области активации при вызове функции,

при явном обращении к конструктору,

в результате выполнения выражения размещения,

как временная переменная.

В каждом из этих случаев в определении объекта принимают участие конструкторы, передача управления которым при создании объекта обеспечивается транслятором, как правило, без участия программиста.

Особенности объявления конструктора в C++ и его свойства делают синтаксически неразличимыми выражения преобразования и обращения к конструктору. В ряде случаев можно утверждать, что передача управления конструктору («вызов» конструктора) является лишь побочным эффектом выполнения выражения преобразования.

Для изучения свойств конструктора мы объявим новый класс — класс комплексных чисел. Это благодарный пример для изучения объектно-ориентированного программирования. В дальнейшем мы не раз будем обращаться к этому классу.

class ComplexType

{

public:

double real, imag;

/* Действительная и мнимая часть комплексного числа. */

};

/*Это было объявление класса, а сейчас — определения объекта.*/

ComplexType GlobalVal;

/* Как глобальная переменная.*/

void main ()

{

ComplexType MyVal;/* Как локальная переменная.*/

ComplexType *pVal = new(ComplexType);

/* В результате выполнения выражения размещения*/

}

Если объект создаётся в результате выполнения выражения размещения, он располагается в динамической памяти и остаётся безымянным, поскольку значениями выражений размещения является значение указателя на выделенную область памяти. В этом случае обращение к объекту возможно только по указателю, означенному в результате выполнения этого выражения.

В объявлении класса невозможно указать начальные значения данных-членов (это всё-таки объявление). И поэтому после создания объекта эти значения оказываются неопределёнными. Объекты приходится дополнительно инициализировать, специально присваивая значения данным-членам класса.

В принципе нет ничего предосудительного в поэтапном определении и модификации объектов. Для этого достаточно определить несколько управляющих функций-членов класса, которые можно вызывать «от имени новорожденного объекта» для задания соответствующих значений данным-членам класса. Однако в C++ существует возможность совмещения процесса определения и инициализации. Дело в том, что у оператора определения объекта сложная семантика. C++ позволяет совмещать обязательные работы по размещению объекта в памяти, выполняемые специальным программным кодом, который автоматически подставляется транслятором на стадии генерации и работы по инициализации значений данных-членов.

Для программиста это может означать только одно: он может самостоятельно включить собственные операторы в особый список операторов, после чего транслятор гарантирует, что эти операторы будут выполняться в нужное время. Нам остаётся выяснить, куда следует встраивать эти операторы, и когда они будут выполняться.

Тот самый список операторов, который выполняется при определении объекта, и называется конструктором.

Основное назначение конструктора — определение объектов. Если программист не вмешивается в процесс построения объекта, транслятор свмостоятельно формирует стандартный конструктор, который невидим для программиста. Как и когда он используется, и что при этом он делает — об этом известно только транслятору.

Программист может объявить и определить в классе собственные версии конструктора. Собственная версия конструктора — это собственная последовательность операторов. Эти операторы выполняются непосредственно после прогаммного кода, который обеспечивает регламентные работы по созданию объекта.

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

еще рефераты
Еще работы по информатике