Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Литвинов / !!!.Courses.11-05-2010.doc
Скачиваний:
22
Добавлен:
23.03.2015
Размер:
1.83 Mб
Скачать

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

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

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

Кешування

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

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

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

Просте кешування результатів

Для підключення такого кешування достатньо задати для атрибуту 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-файл.