Вся магия заключается в строчке SqlCacheDependency =
“CommandNotification”. Узрев директиву CommandNotification при компиляции
.aspx-страницы, сервер самостоятельно формирует запрос с необходимостью
оповещения и регистрирует обработчик событий с очисткой кэша при получении
извещения об изменении данных. Этот пример, конечно, эффектен, но не слишком
показателен, и в реальных приложениях, надеюсь, мало кто пишет в таком стиле.
Для использования новых возможностей в явном виде достаточно создать экземпляр
объекта SqlCacheDependency, который расположен в System.Web.Cache, и указать
его в качестве CacheDependency при помещении данных в кэш.
Пара слов напоследок
Вышеописанные механизмы довольно неплохо работают, но
обладают очевидным недостатком – далеко не все изменения можно отследить и
оповестить о них клиента. Естественно, ничто не мешает сделать свою реализацию, благо в описанных механизмах нет ничего сложного. Но очевидно, собственная
реализация будет не столь эффективна и потребует несколько большего объема
ручной работы. Главная сложность – придумать собственную систему регистрации
клиентов, чтобы те получали извещения только о нужных изменениях. Возможно, в
большинстве сложных случаев лучшим окажется компромиссный вариант, когда
информация о сколь угодно сложных изменениях скидывается триггером в некую
табличку, а клиенты, желающие получить информацию об этих изменениях, подписываются на нужные обновления в этой простой таблице с помощью
SqlDependency.
Здесь была предпринята попытка охватить как можно
больше возможностей асинхронной работы, чтобы понять, с чем имеет смысл
ознакомиться поближе. Но, тем не менее, очень многое осталось за рамками
статьи, например, наличие в Service Broker-е полноценного .Net API, так что для
работы с ним нет никакой необходимости учить SQL. Да и вообще, в этом механизме
есть множество уникальных возможностей, заслуживающих самого пристального
изучения. Само добавление подсистемы сообщений в СУБД, как уже говорилось, выводит систему из рамок простого хранилища данных на новый уровень, не говоря
уже о других изменениях.
В статье не была упомянута еще одна технология – MARS
(Multilpe Active ResultSet). Это новая возможность ADO.Net 2.0, позволяющая при
одном открытом соединении с БД работать с множеством объектов SqlCommand, что
тоже имеет некоторое отношение к асинхронности.
Список литературы
A First Look at SQL
Server 2005 Service Broker
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql90/html/sqlsvcbroker.asp
Write Ahead Blog (Блог одного из разработчиков Service Broker-а) http://blogs.msdn.com/rushidesai/default.aspx
Asynchronous
Command Execution in ADO.NET 2.0
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/async2.asp
Query Notifications
in ADO.NET 2.0
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/async2.asp
Скачали данный реферат: Луковников, Kaloshin, Косарёв, Полевщиков, Чайковский, David, Kizatov.
Последние просмотренные рефераты на тему: доклад по биологии, индивидуальные рефераты, сочинения по картинам, безопасность доклад.
Предыдущая страница реферата |
12
13
14
15
16
17
18
19
20
21
22