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

Властивість TransactionOption

Транзакції можна представити як якийсь набір процедур (подій, викликів функцій і т. п.), виконання яких приводить до певної зміни стану (як у разі успішного завершення необхідних процедур, так і у разі збою якої-небудь з них). Як приклад можна привести систему обробки кредитних карток, яка аутентіфікує номер кредитної картки, знімає з рахунку гроші (якщо вони є) і здійснює фіксацію транзакції. Кожна з цих трьох операцій є частиною транзакції. Якщо на якому-небудь з етапів відбувається збій (наприклад, картка недійсна), вся транзакція відміняється, а змінені дані відновлюються.

Компанія Microsoft включила підтримку транзакцій, подібних транзакціям MTS і СОМ+, в платформу .NET за допомогою простору імен System. EnterpriseServices. Підтримка транзакцій .NET задається властивістю TransactionOption атрибуту WebMethod. Ця властивість може мати одне з наступних п'яти значень:

Disabled;

NotSupported;

Supported;

Required;

RequiresNew.

За замовчанням транзакції відключені. Якщо все ж таки потрібно використовувати .NET-транзакпии, тоді web-метод братиме участь в транзакціях тільки як кореневий об'єкт. Це означає, що метод зможе викликати інші доступні для транзакцій об'єкти, але його не можна буде викликати як частину транзакції, початої іншим об'єктом. Дане обмеження обумовлене тим, що протокол HTTP за своєю природою є stateless-протоколом, тобто не зберігає попередній стан. В результаті значення Required і RequiresNew властивості Transaction-Option виявляються еквівалентними і оголошують метод RequiresNew, який починає нову транзакцію. Значення, що залишилися, - Disabled, NotSupported і Supported - відключають транзакції для web-методу.

Властивість BufferedResponse

За замовчанням передбачається, що web-метод зберігає відповідь в буфері пам'яті до тих пір, поки відповідь не завершиться або буфер не заповниться. Таке зберігання відповіді називається серіалізацією (serialization). В більшості випадків при серіалізації за рахунок зменшення кількості сеансів зв'язку з клієнтом підвищується продуктивність системи. Але якщо ваш web-метод повертає великий об'єм даних або для його виконання потрібна значна кількість часу, ви можете відключити буферизацію шляхом привласнення властивості BufferedResponse значення false. Таке значення наказує середовищу .NET після серіалізації відповіді відправляти його клієнту, проте при невеликих наборах даних це може привести до зниження продуктивності.

Звичайно немає необхідності змінювати значення даної властивості. Іноді має сенс відключити буферизацію для тривало виконуваних aspx-сторінок (наприклад, таких як пошукові сторінки), вихідні дані яких відображаються на екрані, щоб користувач міг почати перегляд інформації до її повного отримання. Оскільки web-служби призначені для взаємодії хостів, подібні випадки зустрічаються рідко, тому дану установку змінювати не варто.

Кешування

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

Кешування реалізоване у вигляді окремої служби, яка є частиною ASP .NET. Тут забезпечуються два типи кешування, які може використовувати web-служба, - кешування результатів і кешування даних.

• Кешування результатів

Збереження одержаних після виклику web-методу результатів і повторне їх використовування іншими клієнтами, що відправили в межах певного відрізка часу запит з тими ж параметрами. Кешування результатів (вихідних даних), після того, як ви його задасте, не вимагає для своєї реалізації коду в web-службі і виробляється автоматично.