Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Литвинов / Лабораторна робота 3.print.doc
Скачиваний:
25
Добавлен:
23.03.2015
Размер:
1.69 Mб
Скачать

Атрибут WebService

Щоб повідомити клієнта про можливості, що надаються службою, потрібен відповідний механізм документування такої інформації. Середовище .NET для даної мети надає атрибут WebServiceAttribute, що є членом простору імен System.Web.Services. З його допомогою можна вказати клієнту, де знайти інформацію про web-службу. Як і атрибути інших типів, клас WebServiceAttribute успадковує функції класу System.Attribute. В більшості випадків для зручності використовування слово Attribute в імені класу можна опустити, вказавши просто WebService. Щоб спростити текст програми, ми скористаємося даною можливістю. Атрибут WebService має дві наступні властивості:

• Namespace - встановлює для служби простір імен XML;

• Description - додає текстовий і HTML-опис служби, який стає частиною WSDL-документа опису служби.

Як вже говорилося раніше, простори імен XML необхідні для забезпечення унікальної ідентифікації елементів і атрибутів XML-документів. Простори імен XML не мають нічого спільного з просторами імен .NET, які служать для організації класів.

У наступному представлений документ web-служби DNSLookUpService, в якому використовуються властивості Namespace і Description атрибуту WebService. Цей документ містить хост-ім'я як рядковий аргумент і застосовує клас Dns з простору імен System.Net для визначення і повернення відповідної IP-адреси.

public class WebService : MarshalByValueComponent

using System.Web.Services;

using Sestem.Net;

[WebService(Namespace = "http://www.bostontechnical.com/webservices/"

Descriptiоn="<Ь>WеЬ-служба. яка виконує проглядання доменних імен.</Ь>")]

{

[WebMethod]

public string getIPforHostname(string strHostname)

{

IPHostEntry hostlnfo = Dns.GetHostByName(strHostname);

return hostlnfo.AddressList[0].ToString();

}

}

У приведеному прикладі простір імен для web-служби знаходиться за адресою http://www.bostontechnical.com/webservices/. Web-служба використовуватиме цей простір як сховище всіх XML-документів, що повертаються у відповідь на її виклик. Пам'ятайте, що простори імен XML призначені для виключення суперечностей в назвах елементів і атрибутів. Звичайно використовується простір імен URI як більш універсальний, оскільки він гарантує унікальність доменного імені (у нашому випадку - www.bostontechnical.com). Цей простір також указує область відповідальності організації (в даному випадку власника домена www.bostontechnical.com) за унікальність елементів домена в просторі імен /webservices.

Атрибут WebMethod

Атрибут WebMethod, повідомляє середовище .NET, що деякий загальний метод повинен бути представлений як метод, що викликається через Web. Для документування і зміни поведінки web-методу даний атрибут включає наступні шість властивостей:

Description;

MessageName;

EnableSession;

CacheDuration;

TransactionOption;

BufferResponse.

Перші дві властивості служать для документування web-методу, тоді як інші визначають його поведінку.

Властивості Description і MessageName

Щоб не примушувати споживачів витрачати зайвий час на з'ясування того, що робить web-служба, потрібно включати опис в кожен web-метод. Це необхідно, зокрема, коли web-служба містить перевантажені методи. Наприклад, в наступному фрагменті коду оголошуються два методи з ім'ям Add(), один з яких приймає параметри типа Integer, а інший - параметри типа Float:

[WebMethod]

public int Add(int а, int b)

{

return a+b:

}

[WebMethod]

public float Add(float а. float b)

{

return a+b;

}

Якщо спробувати дістати доступ до web-служби, що містить два методи з одним і тим же ім'ям, але з різними сигнатурами (це і є перевантаження методів), через тестову сторінку IE, то при відкритті цієї сторінки виникне помилка часу виконання. Повідомлення про помилку в попередньому прикладі виглядатиме таким чином: «Два методи, Single Add(Single. Single) і Int32 Add( Int32. Int32), використовують ім'я "Add". Зверніться до властивості MessageName атрибуту WebMethod для вказівки унікальних імен методів».

Процедура коментування web-методів аналогічна процедурі коментування служби. Кожен метод починається з атрибуту WebMethod. Для додавання опису web-методу використовується властивість Description цього атрибуту, а для зміни його імені - властивість MessageName.

[WebMethod(MessageName="имя". Description="описание")]