
- •Лабораторна робота 3.
- •Xml messaging. Відповідає за формування та розбір повідомлень на базі xml. Включає протоколи xml-rpc та soap.
- •Idl description (Interface Definition Language - мова визначення інтерфейсу)
- •Створення служби «Hello, World» в середовищі Visual Studio .Net
- •Тестування служби
- •Атрибут WebService
- •Властивість EnableSession
- •Властивість CacheDuration
- •Властивість TransactionOption
- •Властивість BufferedResponse
- •Кешування
- •Просте кешування результатів
- •Кешування даних в Web - сервісах
- •Встановлення елементів в кеш
- •Установка Web сервера iis
- •Задача 1.2. Створення рівню dal.
- •Створюємо тестер.
- •Задача 2. Створення рівню сервіса.
- •3.Створення тестеру-клієнта .
Атрибут 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="описание")]