Новая версия Windows Azure и аспектно-ориентированное программирование (АОП)
Использование компоновщика аспектов для подмены целевой сборки на сборку с внедренными аспектами перед публикацией в облаке
Новая версия системы Aspect.NET, совместимая с новейшей интегрированной средой MS Vusial Studio 2012, доступна в настоящее время в виде компоновщика аспектов (который реализован как консольное приложение) и набора скриптов для управления процессом сборки решений, таким образом, чтобы обеспечить подмену исходной бинарной сборки на еее новую версию с внедненными аспектами перед публикацией в облаке. В настоящее время версия Aspect.NET Framework для VS 2012 (т.е. графический пользовательский интерфейс) находится в процессе разработки.
Вызов компоновщика в консольном варианте имеет вид:
weaver -aspects MyAspect.dll -in HelloWorld.exe -out AspectHelloWorld.exe
Рассмотрим алгоритм разработки и бесшовной интеграции аспектов в MS VS 2012 с помощью Aspect.NET:
Вход: Проект с исходными текстами целевого приложения, к которому нужно применить аспекты.
- Создаем отдельный проект для аспекта (типа Class Library) и объединяем его с целевым проектом в рамках общего решения (solution).
- Чтобы обеспечить интеграцию аспекта с целевой сборкой, в свойствах его проекта на вкладке Build Events добавляем соответствующий скрипт
Выход: Решение (solution) с аспектным и не модифицированным целевым проектом. При компиляции аспектного проекта будет происходить внедрение аспектов, а при запуске в MS VS - запуск результирующей сборки. В свою очередь компиляция и запуск целевого проекта приведет к запуску исходного проекта, без внедренных аспектов.
Скрипт для вкладки Build Events:
:: Укажем папку со сборкой целевого проекта set TargetAssemblyDir=C:\HelloWorld\HelloWorld\bin\Debug\ :: Название его сборки set TargetAssembly=HelloWorld :: Ее расширение set TargetAssemblyExt=.exe :: Для каждого нового аспекта или целевого проекта необходимо менять лишь :: вышеуказанные переменные :: Зададим путь к директории Aspect.NET set AspectDotNetDir=C:\AspectDotNet set TargetAssemblyPath=%TargetAssemblyDir%%TargetAssembly%%TargetAssemblyExt% set TargetAssemblyName=%TargetAssembly%%TargetAssemblyExt% cd %AspectDotNetDir% weaver -aspects $(TargetPath) -in %TargetAssemblyPath% -out %TargetAssemblyName% :: Подмена сборки в целевом проекте результирующей move /Y %TargetAssemblyName% %TargetAssemblyPath%
Резюме
Аспектно-ориентированное программирование и система Aspect.NET успешно применимы для платформы Windows Azure, что показано на содержательных примерах использования АОП для определения и внедрения в облачные приложения в виде аспектов протоколирующих действий, реализованных с помощью библиотеки Microsoft Enterprise Library Integration Pacj for Windows Azure. Применение Aspect.NET позволяет гибко управлять функциональностью ASP.NET – страниц, добавляя вызовы необходимых действий (кода) при выполнении типовых действий над страницами.
В настоящее время в группе проекта Aspect.NET под руководством автора курса разработана библиотека аспектов AspectCloud для облачных вычислений в системе Azure.
Ключевые термины
Аспектно-ориентированное программирование (АОП) – новый перспективный подход к разработке и модернизации программ, предназначенный для поддержки сквозной функциональности (cross-cutting concerns) в программах
Aspect.NET – инструмент АОП для платформы .NET, разработанный группой под руководством автора курса.
Microsoft Enterprise Library Integration Pack for Windows Azure - решение компании Microsoft для выделения "сквозной функциональности" при разработке облачных приложений ( требует для этого модификации их исходного кода).
Краткие итоги
Аспектно-ориентированное программирование и система Aspect.NET успешно применимы для платформы Windows Azure, что показано на содержательных примерах использования АОП для определения и внедрения в облачные приложения в виде аспектов протоколирующих действий, реализованных с помощью библиотеки Microsoft Enterprise Library Integration Pacj for Windows Azure. Применение Aspect.NET позволяет гибко управлять функциональностью ASP.NET – страниц, добавляя вызовы необходимых действий (кода) при выполнении типовых действий над страницами.
Набор для практики
Вопросы
- Что такое АОП?
- Что такое Aspect.NET?
- Каковы методы применения АОП и Aspect.NET для облачных вычислений?
- Что такое Microsoft Enterprise Library Integration Pack for Windows Azure?
Упражнения
- Разработайте и опубликуйте с использованием Visual Studio свое облачное Web-приложение.Затем, применив систему Aspect.NET (http://www.aspectdotnet.org), разработайте аспект, модифицирующий поведение приложений при загрузке страницы в браузер и других типовых действиях. Опубликуйте в облаке модифицированное приложение и проверьте его в работе
- Изучите библиотеку Microsoft Enterprise Library Integration Pack for Windows Azure и попробуйте применить новую версию Aspect.NET для пропуска примеров, описанных в лекции.
Темы для курсовых работ, рефератов, эссе
- Применение АОП для облачных вычислений (реферат).
- Библиотека Microsoft Enterprise Library Integration Pack for Windows Azure (реферат).
Литература
- Safonov V. Using aspect-oriented programming for trustworthy software development. John Wiley & Sons, 2008, 352 pp.
- Сафонов В.О. Аспектно-ориентированное программирование. Учебное пособие. – СПб.: ИЗД-ВО СПбГУ, 2011, 104 с.
- Сайт проекта Enterprise Library 5.0 Integration Pack for Windows Azure // Режим доступа [проверено 05.15.2013]: http://entlib.codeplex.com/wikipage?title=EntLib5Azure
- Григорьев Д.А., Григорьева А.В., Сафонов В.О. Бесшовная интеграция аспектов в облачные приложения на примере библиотеки Enterprise Library Integration Pack for Windows Azure и системы Aspect.NET. - Компьютерные инструменты в образовании, 2012, № 4, 3-15.