
- •Лабораторна робота 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.Створення тестеру-клієнта .
Просте кешування результатів
Для підключення такого кешування достатньо задати для атрибуту WebMethod значення властивості CacheDuration. Час кешування результатів завжди указується в секундах і відноситься до конкретного методу.
Метод, що повертає поточний час, є хорошим прикладом демонстрації кешування результатів. У приведеному нижче фрагменті при першому виклику методу виконується його код, який показує поточний час. Якщо наступний виклик коду відбудеться менш ніж через 60 секунд після першого, автоматично буде повернений кешований результат.
[WebMethod(CacheDuration=60)]
public string GetDateTime()
{
return System.DateTime.Now.ToString();
}
Вставляти в web-метод код, що реалізовує кешування, не потрібно, оскільки середовище ASP .NET автоматично управляє цим процесом.
Одна з найкорисніших властивостей кешування результатів web-служби полягає у тому, що відповідь використовується повторно тільки тоді, коли список представлених методу параметрів виявляється таким же самим.
Кешування результатів можна також включити шляхом додавання директиви <% @ OutputCache %> у asmx-частину web-служби. Проте не рекомендується застосовувати вказаний метод, оскільки web-служба підтримує не всі стандартні атрибути директиви OutputCache. Крім того, Visual Studio .NET не дозволяє напряму модифікувати asmx-файл.
Кешування даних в Web - сервісах
На відміну від кешування результатів, при якому зберігаються тільки результати роботи методів web-служби, кешування даних дозволяє зберігати інформацію будь-якого типу. Можна помістити потрібні дані в кеш, а потім у будь-який момент витягнути їх звідти. Недолік такого типу кешування - необхідність створення в web-методі відповідного програмного коду. Основою для кешування даних служить проста словарна колекція Cache (екземпляр класу System.Web.Caching.Cache). Колекція Cache індексує кожен елемент з використанням описового рядка і здатна прийняти будь-який об'єкт, зокрема призначені для користувача дані і бізнес-логіку. Колекції Cache і Application мають дві фундаментальні відмінності.
Об'єкт Cache захищений на рівні потоку. Це значить, що при додаванні і видаленні елементів не потрібно використовувати такі методи, як Lock() і UnLock(). Але проблема конкуренції за доступ до об'єкту існуватиме, якщо в кеші знаходиться об'єкт, який не є потоко-захищеним, а змінити або використати його намагатимуться декілька клієнтів. Згадану проблему можна обійти або шляхом створення в кеші тимчасової копії об'єкту, або використовуючи копію в web-методі.
Для доступу до колекції Cache в web-службі слід застосовувати властивість Context.Cache, якщо web-служба належить класу System. Web.Services.WebServiсе, і властивість HttpContent.Current.Cache, якщо це не так.
Встановлення елементів в кеш
Додати в колекцію Cache елемент можна просто шляхом присвоєння йому нового ключового імені:
Context.Cache["key"] = dsProducts
Проте в даному випадку відсутня можливість визначити політику закінчення часу зберігання об'єкту в кеші, внаслідок цього для додавання елементу в колекцію Cache звичайно використовують перевантажені методи Insert(). Існує чотири такі методи:
• Context.Cache.Insert(key, value)
Поміщає елемент в кеш під вказаним ключовим ім'ям і призначає для нього задані за замовчанням пріоритет і час зберігання. Це те ж саме, що використовування індексованої колекції і привласнення нового ключового імені.
• Context.Cache.Insert(key, value, dependencies)
Поміщає елемент в кеш під вказаним ключовим ім'ям і з використанням заданих за замовчанням пріоритету і часу зберігання. Останній параметр містить об'єкт CacheDependency, який зв'язує файли або кешовані елементи і забезпечує видалення кешованих елементів при їх зміні.
• Context.Cache.Insert(key, value, dependencies, absoluteExpiration. slidingExpiration)
Поміщає елемент в кеш під вказаним ключовим ім'ям, використовуючи заданий за замовчанням пріоритет і заданий абсолютний або ковзаючий час зберігання ( не можливо встановити відразу обидва значення часу). Це найчастіше використовувана версія методу. Insert();
• Context.Cache.Insert(key. value, dependebcies, absoluteExpiration, slidingExpiration, Priority, onRemoveCallback)
Дозволяє конфігурувати всі варіанти кешування для елементу, включаючи закінчення терміну зберігання, залежності і пріоритет. Крім того, можна застосувати делегат, задаючого методу, який викликається при видаленні елементу.