Научная статья на тему 'Применение элементов аспектно-ориентированного подхода Aspect. Net при разработке геолокационной системы управления ресурсами для облачной платформы Microsoft Windows Azure'

Применение элементов аспектно-ориентированного подхода Aspect. Net при разработке геолокационной системы управления ресурсами для облачной платформы Microsoft Windows Azure Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
103
24
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
АСПЕКТНО-ОРИЕНТИРОВАННЫЙ ПОДХОД / УПРАВЛЕНИЕ РЕСУРСАМИ / ОБЛАЧНАЯ ПЛАТФОРМА

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Григорьева Анастасия Викторовна, Васильев Владимир Андреевич, Сафонов Владимир Олегович

Рассмотрено применение элементов аспектно-ориентированного подхода ASPECT.NET при разработке открытой геолокационной системы управления ресурсами, позволяющей получать данные о местоположении ресурсов в реальном времени, а также оперативно реагировать на изменения с помощью сложной бизнес-логики правил и отчетов, тем самым эффективно решая задачу управления ресурсами.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Григорьева Анастасия Викторовна, Васильев Владимир Андреевич, Сафонов Владимир Олегович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

This article discusses the use of elements of aspect-oriented approach in the development of open ASPECT.NET geolocation resource management system that provides data about the location of resources in real time and respond quickly to changes with complex business logic rules and reporting, thereby effectively solving the problem of resource management.

Текст научной работы на тему «Применение элементов аспектно-ориентированного подхода Aspect. Net при разработке геолокационной системы управления ресурсами для облачной платформы Microsoft Windows Azure»

4

УДК 004.4'2

А.В. Григорьева, В.А. Васильев, В.О. Сафонов

ПРИМЕНЕНИЕ ЭЛЕМЕНТОВ АСПЕКТНО-ОРИЕНТИРОВАННОГО ПОДХОДА ASPECT.NET ПРИ РАЗРАБОТКЕ ГЕОЛОКАЦИОННОЙ СИСТЕМЫ УПРАВЛЕНИЯ РЕСУРСАМИ ДЛЯ ОБЛАЧНОЙ ПЛАТФОРМЫ

MICROSOFT WINDOWS AZuRE

В связи с растущими темпами производства и развитием глобальных коммуникационных сетей задача учета ресурсов и управления ими становится все более важной. Возросла также необходимость в получении и обработке данных о состоянии и географическом положении ресурсов в реальном времени. В данной статье рассматривается применение элементов аспектно-ориентированного подхода ASPECT.NET при разработке открытой геолокационной системы управления ресурсами, которая позволит получать данные о местоположении ресурсов в реальном времени, а также оперативно реагировать на изменения с помощью сложной бизнес-логики правил и отчетов, тем самым эффективно решая задачу управления ресурсами.

Данный проект является исследовательским и находится на ранней стадии, которая характеризуется высокой изменчивостью пользовательских требований к системе [1].

Архитектурно разрабатываемая геолокационная система управления ресурсами представляет собой сложное объектно-ориентированное приложение, разворачиваемое c помощью облачной платформы Microsoft Windows Azure [2]. Важная отличительная особенность разрабатываемой системы - возможность гибкой настройки конфигурации на конкретного пользователя, что позволит создавать специальные правила для управления конкретными ресурсами и получать разнообразные отчеты в реальном времени. Для этого система логически разделена на два слабо связанных между собой модуля: модуль взаимодействия с ресурсами и устройствами, позволяющий прозрачно для системы добавлять и отключать различные устройства и получать данные от них, и модуль управления, ответственный за создание и редактирование новых ресурсов, создание правил, отчетов, настройку конфигурации,

управление устройствами и пользователями.

Модуль управления представляет собой трехслойную структуру, состоящую из следующих компонентов:

• слой пользовательского интерфейса и визуализации, который содержит динамические вебстраницы и компоненты для пользовательского интерфейса, а также набор кросс-платформенных веб-служб для поддержки доступа к основным функциям системы из произвольного клиентского приложения;

• слой бизнес-логики, который содержит реализацию основных функций системы, таких, как управление пользователями системы (создание, редактирование пользователей и пользовательских групп, назначение администраторов); управление ресурсами (создание, редактирование ресурсов и групп ресурсов); управление правилами (создание правил и настройка их периодичности); управление отчетами (создание, редактирование и трансформация отчетов); мониторинг и отслеживание ресурсов;

• слой доступа к данным, который содержит в себе классы для реализации доступа к различным источникам данных (SQL-источники данных, NoSQL-источники данных, кэши) и данные о сущностях системы (ресурсы, устройства, пользователи, аккаунты и т. д.).

Модуль взаимодействия с ресурсами и устройствами представляет собой отдельный независимый компонент для работы с устройствами. Любой ресурс в системе представляет определенное устройство в реальном мире (например, это может быть датчик температуры, скорости, GPS-датчик, и т. д.), которое передает данные о своем состоянии в систему. Важная отличительная особенность системы - возможность работы с различными типами устройств без необходимости сложной настройки соедине-

ния. Для достижения этой цели реализована концепция «драйверов» для различных устройств. Архитектурно модуль состоит из трех важных частей:

• кластера серверов, «слушающих» различные порты и принимающих данные от устройств;

• драйверов, получающих данные от конкретных устройств по определенному протоколу и передающих их на сервер;

• подсистемы связывания и передачи данных от устройств в модуль управления для дальнейшей обработки, реализующей слабое связывание между двумя модулями посредством использования единых источников данных

Таким образом, схематично процесс добавления нового устройства в систему выглядит следующим образом: пользователь создает ресурс - логическое представление устройства, определяет для него группу, настраивает для него правила (например, отображать ресурс на карте или отсылать письмо при поступлении данных от устройства) и отчеты. Затем пользователь определяет адрес и порт сервера, который будет принимать сообщения от устройства, и выбирает нужный драйвер. После этого при поступлении данных от устройства система будет автоматически применять правила и настройки, тем самым выдавая информацию в реальном времени. Взаимодействие с устройствами происходит в основном посредством XML-сообщений, что упрощает процесс обмена данными и позволяет легко добавлять в систему новые устройства. При необходимости добавить устройство нового типа, можно просто реализовать драйвер, который будет трансформировать данные от устройства в XML-формат и отправлять их на сервер.

Объектно-ориентированная методология позволяет добиться хорошего уровня декомпозиции распределенной облачной системы. Но, в свою очередь, применение объектно-ориентированной методологии программирования привнесло в создание облачных приложений традиционные проблемы «сквозной функциональности» (cross-cutting concerns), когда один компонент отвечает за реализацию

public class AzureTrace: Aspect {

//Строка для установки соединения с хранилищем Azure const string DiagnosticsConnectionString = "...";

нескольких функций [3]. Например, в веб-службе часто перемешиваются бизнес-логика, требования безопасности, кэширование, протоколирование и пр. Аспектно-ориентированное программирование (АОП) предлагает решать проблему «сквозной функциональности» вынесением каждой задачи в свой модуль - аспект. Нужное поведение целевой программы достигается за счет вставки действий аспекта в заданные точки на этапе компиляции или в процессе выполнения.

Компания Microsoft позиционирует Enterprise Library (EL) [4] как набор наиболее удачных архитектурных решений, применимых в большинстве программных систем. По сравнению с динамическим применением аспектов в EL, когда во время выполнения программы среда .NET создает прокси-объекты в заданных местах, Aspect.NET [5] вплетает действия на уровне MSIL-инструкций после этапа компиляции целевой сборки, что влечет повышение производительности целевого приложения. Достоинствами библиотеки EL является встроенная поддержка со стороны среды выполнения .NET, а также возможность настройки аспектов без компиляции через конфигурационные XML-файлы. Однако при работе с облачными вычислениями перекомпиляция для внедрения аспектов не вызывает трудностей, т. к. развертывание целевой системы осуществляется лишь один раз. Более того, такая «пост-обработка» дает возможность выбирать конкретные места применения действий аспектов. Наконец, Aspect.NET не требует вносить изменения в исходный код целевого приложения, т. е. целевой проект будет полностью изолирован от аспектов.

В работе предложены решения в виде аспектов Aspect.NET для следующих задач в рамках предметной области:

1. Протоколирование. Этот аспект перехватывает в целевом коде все вызовы метода System. TraceInformation() и перенаправляет их данные в хранилище диагностической информации Azure, что позволяет просматривать и обрабатывать ее с помощью специальных инструментальных средств.

4

//Настраиваем и запускаем диагностику Azure внутри метода WebRole.OnStart() [AspectAction(«%before %call *RoleEntryPoint.OnStart()»)] static public void RegisterAzureDiagnostics() { try {

CloudStorageAccount storage =

CloudStorageAccount.Parse(DiagnosticsConnectionString); DiagnosticMonitorConfiguration diagnosticConfig =

DiagnosticMonitor.GetDefaultInitialConfiguration();

//.. .Настраиваем diagnosticConfig DiagnosticMonitor.Start(storage, diagnosticConfig);

}

catch (Exception e) {

//.Сообщаем об исключении с указанием вызвавшего его целевого метода

}

}

//Перед каждым вызовом TraceInformation() убеждаемся, что соотв. Azure-подписчик //зарегистрирован

[AspectAction(«%before %call *System.Diagnostics.Trace.TraceInformation»)] public static void AspectTrace() {

//Если его еще нет в списке подписчиков, то добавляем в этот список. if (!ContainsWADListener()) {

System.Diagnostics.Trace.Listeners.Add(

new Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener()); System.Diagnostics.Trace.AutoFlush = true;

}

}

2. Прозрачная интеграция сторонних инструментов. Для платформы .NET разработано множество библиотек, каркасов и инструментов, таких, как PostSharp [6], MS Code Contracts [7], MS EL и пр., предоставляющих полезные технические сервисы и службы. Однако их интеграция в целевое приложение приводит к изменениям в исходном коде, что нежелательно при быстром прототипи-ровании, когда необходимо удалить или заменить

данную подсистему. Например, в целях эксперимента было решено использовать для протоколирования при нажатии кнопки на странице веб-роли ResourcesView метод Mюшsoft.Practices. EnterpriseLibrary.Logging.LoggerO. С помощью Aspect.NET можно создать аспект, к которому подключаются все соответствующие сторонние сборки EL, а затем с помощью его действий вставить нужный код в целевое приложение:

[ReplaceBaseClassy/Подменяет целевой класс ResourcesView данным наследником public class ELLogger : ResourcesView {

protected void LogButton_Click(object sender, EventArgs e) {

Microsoft.Practices.EnterpriseLibrary.Logging.Logger.Write(«Message from the Logging

Application Block»);

base.LogButton_Click(sender, e);

}

3. Обработка исключений. Если при обращении к некоторому веб-сервису возникает исключительная ситуация, аспект посылает ему еще не-

сколько запросов по таймауту. В случае неудачи данные запрашиваются у запасного веб-сервиса. Вся служебная информация, в т. ч. стек, отсыла-

ется в службу протоколирования Azure. Рассмотрим пример взаимодействия клиентского приложения, которое для получения данных (например, списка доступных ресурсов) использует облачную веб-службу, а затем визуально отображает

их. Вызов данной службы происходит в обработчике щелчка мыши Ьийоп1^оке_СНск по кнопке формы на локальной машине, а в виде результата она возвращает текст. Сам принцип применим и для взаимодействия служб в облаке.

public class ExceptionCatcher : Aspect {

//Задаем правила, куда вставлять это действие [AspectAction(«%instead %call *buttonInvoke_Click(...) && args(..)»)] public static void RepairAction(object sender, EventArgs e) { int count=0; Exception servEx=null; while(count++<3) { try {

//Пытаемся вызвать сервис несколько раз Target.buttonInvoke_Click(sender,e); } catch {Exception e) { servEx=e;

}

}

if (servEx!=null) { try {

GetAvailableResources2();//Пытаемся вызвать запасной сервис } catch {Exception e) {/*...*/}

}

public static void GetAvailableResources2 () {

AvailableResourcesClient2 client = new AvailableResourcesClient2();

string result = client.GetData();

MessageBox.Show(result);

}

}

4. Кэширование. Предложен аспект, действия которого подменяют целевой метод, загружающий данные из MS SQL Azure, и сохраняют их в распределенном кэше Microsoft.ApplicationServer. Caching.DataCacheFactory. В целевое приложение можно встроить управляющий кэшем веб-компонент, который также содержится в сборке этого аспекта.

5. Управление конфигурацией MS Azure. С помощью счетчиков производительности платформы аспект постоянно отслеживает текущую

загрузку и по необходимости подключает или отключает новые вычислительные узлы, тем самым экономя денежные затраты клиента.

Применение АОП и системы Aspect.NET при разработке облачной геолокационной системы управления ресурсами позволяет повысить легкость ее сопровождения, увеличить скорость разработки и снизить затраты за счет повторного использования универсальных аспектов.

СПИСОК ЛИТЕРАТУРЫ

1. Ларман, К. Применение UML и шаблонов проектирования [Текст] / К. Ларман. -М.: Изд-во «Вильямс». -47 с.

2. Сайт проекта MS Windows Azure [Электронный ресурс] / Режим доступа: http://www. windowsazure.com

3. Safonov, V.O. Using aspect-oriented programming for trustworthy software development [Text] / V.O. Safonov // Wiley Interscience. -John Wiley & Sons, 2008. -338 p.

4. Сайт проекта MS Enterprise Library // Режим доступа: http://wag.codeplex.com

4

5. Григорьев, Д.А. Реализация и практическое применение аспектно-ориентированной среды программирования для Microsoft .NET [Текст] / Д.А. Григорьев // Научно-технические ведомости СПбГПУ. Сер. Информатика. Телекоммуникации. Управление. -2009. -№ 3. -С. 225-232.

6. Сайт проекта PostSharp [Электронный ре-

сурс] / Режим доступа: http://www.sharpcrafters. com

7. Сайт проекта Code Contracts [Электронный ресурс] / Режим доступа: http://msdn.microsoft. com/en-us/devlabs/dd491992

8. Сайт проекта Aspect.NET [Электронный ресурс] / Режим доступа: http://aspectdotnet.org

УДК 681.3.068

Н.В. Воинов, Л.П. Котлярова, И.Е. Поддубный

МЕТОДИКА РАЗРАБОТКИ МОБИЛЬНЫХ ПРИЛОЖЕНИЙ ДЛЯ ПЛАТФОРМЫ WINDOWS PHONE 7

Современный рынок мобильных устройств требует подготовки специалистов, способных быстро осваивать и создавать новые приложения под новые платформы. Среди них мобильная платформа Windows Phone 7 [1] в настоящее время считается наиболее перспективной. Именно поэтому она использована в новом курсе для обучения специалистов по направлению «Программная инженерия» на факультете технической кибернетики СПбГПУ.

В курсе разработана новая методика создания приложений (рис. 1), включающая следующее:

1) подготовку окружения, в т. ч. установку средств разработки приложений - Visual Studio 2010, Service Pack 1 и Windows Phone SDK [3];

2) создание проекта лабораторной или курсовой работы;

3) анализ интерфейса и макета внешнего вида приложения;

4) анализ архитектуры проекта, который предполагает проектирование схемы классов будущего приложения;

5) разработку кода разметки интерфейса на языке разметки xaml;

6) разработку программной логики на языках C#, Java и Visual Basic) с использованием технологий .NET Framework 4, Silverlight и XNA;

7) отладку на симуляторе и реальном устройстве;

8) дальнейшее совершенствование проекта.

Методика демонстрирует студентам основные принципы разработки приложений и учит использованию важных возможностей платформы.

Основная задача при разработке нового приложения заключается в создании пользовательского интерфейса на языке разметки xaml (eXtensible Application Markup Language) и логики на языках программирования. xaml - это расширяемый язык разметки приложений, разработанный компанией Microsoft. Он основан на XML, содержит интуитивно понятные онтологические структуры, прост в освоении. Тесное взаимодействие объектов xaml и программной логики позволяет без труда работать с элементами управления в коде приложения.

Разработанная методика включает три группы лабораторных работ и курсовую работу, в рамках которой студенты создают собственные приложения. Каждая из групп лабораторных работ объясняет и демонстрирует на практике следующие возможности:

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

1) варианты разметки (Grid, StackPanel, Canvas), основные элементы управления, контекст ввода, навигацию между страницами и передачу данных, элементы Pivot и Panorama, меню приложения;

2) задачи запуска и выбора, элемент управления WebBrowser, элемент управления Map и определение местоположения, работа с акселерометром, работа с HTTP, работа с изолированным

i Надоели баннеры? Вы всегда можете отключить рекламу.