Windows Azure и аспектно-ориентированное программирование (АОП)
Цель лекции: Изучение и анализ методов взаимодействия облачных вычислений и аспектно-ориентированного программирования.
Презентацию к данной лекции Вы можете скачать здесь.
14.1. Аспектно-ориентированное программирование (АОП): общие принципы. Система Aspect.NET
Аспектно-ориентированное программирование (АОП) [1, 2] – новый перспективный подход к разработке и модернизации программ, предназначенный для поддержки сквозной функциональности (cross-cutting concerns) в программах. Под сквозной функциональностью понимается функциональность, реализация которой представляет собой совокупность рассредоточенных фрагментов кода, реализующих эту общую функциональность, и которую полностью, по принципиальным соображениям, нельзя собрать в один традиционный модуль (или группу модулей). Примеры – проверки безопасности, трассировка, управление ошибочными ситуациями и др. Все они объединяются под одним общим названием надежные и безопасные вычисления (trustworthy computing, см. "Обзор архитектуры современных программных систем" ).
Более полная информация об АОП приведена в [1, 2], а также на сайте аспектно-ориентированной разработки программ aosd.net (см. рис. 14.1).
Нашей группой сотрудников мат-мех. факультета СПбГУ разработана уникальная система АОП для платформы .NET – Aspect.NET, имеющая пользователей в 26 странах мира. В данной лекции рассмотрен пример применения АОП средствами системы Aspect.NET для модификации облачного ASP.NET – приложения. Пример разработан аспирантом мат-меха Нгуен Ван Доаном (Вьетнам), которому автор курса выражает искреннюю благодарность.
14.2. Монография В.О. Сафонова "Using aspect-oriented programming for trustworthy software development"
Автором курса написана монография по АОП на английском языке [1], ставшая классикой в области технологий разработки программ. На рис. 14.2 приведена обложка книги, опубликованная на нашем сайте проекта Aspect.NET (www.aspectdotnet.org). Интересующиеся читатели могут заказать книгу через сайты amazon.com, amazon.de и др.
увеличить изображение
Рис. 14.2. Обложка монографии В.О. Сафонова "Using aspect-oriented programming for trustworthy software development"
14.3. Сайт Aspect.NET: Общая информация и ссылки
На рис. 14.3 приведен фрагмент страницы проекта Aspect.NET (http://www.aspectdotnet.org), содержащий общую информацию о проекте Aspect.NET и ссылки, которые доступны на нашем сайте.
14.4. Состав группы разработчиков Aspect.NET
Состав нашей группы разработчиков Aspect.NET приведен на рис. 14.3. Система используется в 26 странах. По АОП и системе Aspect.NET защищено три кандидатских диссертации (Д.А. Григорьев – ныне доцент мат-мех. факультета СПбГУ; М.К. Грачев и Р.С. Муханов); готовятся к защите еще несколько диссертаций. Таким образом, проф. В.О. Сафоновым создана на мат-мех. факультета СПбГУ первая в России научная школа по АОП, которая является одной из ведущих в мире. На рис. 14.4a приведены ссылки на работающие примеры аспектов из монографии В.О. Сафонова.
увеличить изображение
Рис. 14.4a. Ссылки на работающие примеры аспектов из монографии В.О. Сафонова по АОП
14.5. Принципы применения АОП в Azure. Пример Web-аспекта в системе Aspect.NET
Рассмотрим теперь на примере, каким образом АОП и система Aspect.NET применяется к облачному приложению (ASP.NET Web-сервису). Общий принцип в следующем. Облачное приложение – это ASP.NET Web-сервис. Он содержит .aspx – страницы и их управляющие коды (code-behind). Эти управлющие коды, представляющие собой обработчики типовых событий, связанных со страницей (загрузка страницы и т.д.) могут быть модифицированы. Благодаря системе Aspect.NET, эти модификации выполняются автоматически и систематизировано под управлением аспектов – особых модулей (сборок .NET), содержащих условия внедрения аспекта и действия аспекта. Условие внедрения задает фильтр для поиска в целевом приложении (в данном случае – в управляющем коде страниц) так называемых точек присоединения (join points), каждая из которых представляет собой вызов метода, например, Page_Load(). Система Aspect.NET, осуществив поиск всех потенциальных точек внедрения, затем выполняет собственно внедрение, т.е. вставляет перед, после или вместо каждого такого вызова вызов действия аспекта (статического публичного метода).
Для примера обработаем с помощью аспекта простое опубликованное в облаке приложение. Результат его запуска с помощью браузера изображен на рис. 14.5.