автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.11, диссертация на тему:Разработка инструментов поддержки аспектно-ориентированного Web-программирования в системе Aspect.NET
Автореферат диссертации по теме "Разработка инструментов поддержки аспектно-ориентированного Web-программирования в системе Aspect.NET"
На правах рукописи
.-
НГУЕН Ван Доан
РАЗРАБОТКА ИНСТРУМЕНТОВ ПОДДЕРЖКИ АСПЕКТНООРИЕНТИРОВАННОГО \УЕВ-ПРОГРАММИРОВАНИЯ В СИСТЕМЕ ASPECT.NET
05.13.11 — математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей
АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата физико-математических наук
1 С с:3 20;2
Санкт-Петербург
2012
005011449
005011449
Работа выполнена на кафедре информатики математико-механического факультета Санкт-Петербургского государственного университета.
Научный руководитель: Официальные оппоненты:
Ведущая организация:
доктор технических наук, профессор САФОНОВ Владимир Олегович
доктор технических наук, профессор ЛИСС Александр Рудольфович (ОАО “Концерн “Океанприбор””)
кандидат физико-математических наук, доцент РОМАНОВСКИЙ Константин Юрьевич
(Санкт-Петербургский государственный университет)
Санкт-Петербургский государственный политехнический университет
Защита состоится “_______”___________ 2012 года в ________ часов на
заседании совета Д 212.232.51 по защите докторских и кандидатских диссертаций при Санкт-Петербургском государственном университете по адресу: 198504, Санкт-Петербург, Петродворец, Университетский пр., д.28, математико-механический факультет Санкт-Петербургского
государственного университета, ауд. 405.
С диссертацией можно ознакомиться в Научной библиотеке Санкт-Петербургского государственного университета по адресу: 199034, Санкт-Петербург, Университетская наб., д. 7/9.
Автореферат разослан “______”__________2012 года.
Ученый секретарь
диссертационного совета, , '
доктор физико-математических наук, __..
профессор Н. К. Кривулин
ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ
Актуальность темы. На сегодняшний день объектно-ориентированное программирование (ООП) является методологией, которая находит широкое применение в сфере разработки программного обеспечения (ПО). Данная методология программирования, несомненно, показала свою силу при моделировании общего поведения разрабатываемой программной системы. Однако, опыт показывает, что ООП не в достаточной мере позволяет справляться со все возрастающей сложностью программных продуктов. При разработке ПО существуют проблемы, для решения которых необходимы новые методологии, такие как аспектно-ориентированное программирование.
Аспектно-ориентированное программирование (АОП) [1] является новым подходом к разработке ПО. Данный подход позволяет осуществлять модуляризацию, разработку сквозной функциональности (cross-cutting concerns) - функциональности разрабатываемого ПО, которая
принципиально по своей природе не может быть или затруднительно выделена и реализована одним модулем или набором модулей, а требует для своей реализации рассредоточенных действий, которые должны быть добавлены в различные места существующего программного кода целевого приложения. Иначе говоря, сквозная функциональность - это функциональность, реализация которой рассредоточена по коду приложения. Тем самым, АОП позволяет систематически добавлять и модифицировать новую функциональность, в том числе и относящуюся к Web-программированию. АОП является развитием процедурного и объектноориентированного программирования. Данная методология призвана снизить время, стоимость и сложность разработки современного программного продукта. Следует отметить, что концепция АОП не заменяет подход ООП, а органично дополняет его [2].
Суть концепции АОП заключается в том, что программная система рассматривается как совокупность различных компонентов. Каждый компонент отвечает за ту или иную функциональность. Некоторую функциональность можно реализовать в одном модуле или в нескольких. Но существует функциональность, реализация которой рассредотачивается по всей программной системе, в связи с чем ее реализация путем создания некоего модуля или нескольких модулей затруднительна, наряду с данным обстоятельством ее нельзя выделить в отдельные сущности. В отличие от ООП, АОП позволяет выделить и реализовать сквозную функциональность в отдельных модулях, называемых аспектами (aspects). Каждый аспект применяется путем систематизированного внедрения (weaving) фрагментов кода аспекта в рассредоточенные модули целевой программной системы.
Примерами сквозной функциональности являются протоколирование (logging), безопасность исполнения программы в многопоточной вычислительной среде (MT-safety), обработка ошибок, реализация подсистемы безопасности (security).
В настоящее время Web-программирование играет важную роль в сфере разработки программного обеспечения (ПО). День ото дня Web-приложения (Web applications) быстро развиваются и постепенно заменяют приложения для настольной системы (desktop applications). Развитие Web-приложений является важной тенденцией эволюции компьютерных технологий, операционных систем, сетевых архитектур и прикладных программ. Поэтому применение АОП в Web-программировании, как показано в данной работе, имеет важное значение для разработки Web-приложений. Оно позволяет разработчикам снизить время, стоимость и сложность разработки, упростить сопровождение Web-продуктов и внесение в них изменений, создавать надежные и безопасные Web-приложения.
Цель работы. В данной диссертационной работе рассмотрено применение АОП в Web-программировании для платформы Microsoft.NET.
Web-программирование для данной платформы реализуется с помощью ASP.NET [3], а АОП для платформы .NET реализовано в системе Aspect.NET
[4], разработанной в лаборатории Java-технологии математикомеханического факультета Санкт-Петербургского Госудаственного Университета под научным руководством профессора Сафонова В. О. Целями работы являются:
1. Анализ методов применения АОП и системы Aspect.NET для разработки и модификации ASP.NET-приложений.
2. Выделение некоторых существенных задач Web-программирования, к которым можно применить АОП.
3. Разработка библиотеки аспектов в системе Aspect.NET для решения выделенных задач Web-программирования.
4. Анализ эффективности и производительности применения АОП для разработки ASP.NET-приложений.
Методы исследования. В диссертации используется теоретический аппарат объектно-ориентированного и аспектно-ориентированного программирования.
Научная новизна. Научная новизна работы обусловлена в первую очередь новизной АОП, а также новизной подхода применения АОП и системы Aspect.NET для разработки и модификации ASP.NET-приложений. Все полученные результаты диссертации являются новыми.
Теоретическая и практическая ценность. В рамках данной работы выделены некоторые существенные задачи Web-программирования, к которым можно применить АОП и предложен аспектно-ориентированный подход к их решению, Рассмотренные в данной работе методы применения АОП и системы Aspect.NET для разработки и модификации ASP.NET-приложений позволяют снизить время, стоимость и сложность разработки, упростить сопровождение Web-продуктов и внесение в них изменений, создавать надежные и безопасные Web-приложения. Разработанная
библиотека аспектов может использоваться в разработке Web-приложений, требующих функциональности выделенных задач Web-программирования.
Апробация работы. Основные результаты и выводы диссертационной работы докладывались на следующих научных конференциях и семинарах:
1. Межвузовский конкурс-конференция студентов, аспирантов и молодых ученых Северо-Запада «Технологии Microsoft в теории и практике программирования». Россия, Санкт-Петербург, СПбГПУ, 2011.
2. Межвузовский конкурс-конференция студентов, аспирантов и молодых ученых Северо-Запада «Технологии Microsoft в теории и практике программирования». Россия, Санкт-Петербург, СПбГПУ, 2010.
3. Всероссийская конференция с элементами научной школы для молодежи «Проведение научных исследований в области обработки, хранения, передачи и защиты информации». Россия, Ульяновск, УлГТУ, 2009.
4. Семинары кафедры информатики и лаборатории Java-технологии математико-механического факультета СПбГУ.
Публикация результатов. Основные результаты диссертации опубликованы в работах [6 - 11]. В работах [6-11] Сафонову В. О. принадлежат общие постановки задач, а Нгуен Ван Доану - разработка и реализация методов и принципов решения данных задач, разработка примеров и программного комплекса. В работе [6] соискателю принадлежат описание методов применения АОП для задач безопасности в ASP.NET-приложениях, анализ эффективности и производительности применения аспектов безопасности в ASP.NET-приложениях. В работе [7] соискатель описывает аспектно-ориентированный подход к решению задач Web-программирования с использованием системы Aspect.NET. В работе [8] соискатель описывает методы применения АОП для задач разработки
ASP.NET-приложений, реализацию аспектов поддержки Web-программирования, анализ эффективности и производительности применения Web-аспектов в Web-приложениях. В статье [9] соискателю принадлежит описание методов и принципов применения АОП для задач разработки Web-приложений на платформе Microsoft.NET. В публикации [10] соискатель описывает применение АОП при разработке ASP.NET-приложений на основе системы Aspect.NET. В публикации [11] соискателем описывается применение АОП и системы Aspect.NET для реализации аспектов безопасности в ASP.NET-приложениях. Работы [6 - 8]
опубликованы в журналах, входящих в перечень ВАК.
Структура и объем диссертации. Диссертационная работа состоит из введения, пяти глав, заключения, списка литературы. Работа содержит 125 страниц, 14 рисунков, 4 таблицы, список литературы из 111 наименований.
ОСНОВНОЕ СОДЕРЖАНИЕ РАБОТЫ
Во введении обосновывается актуальность тематики диссертационной работы, формулируются цели, задачи и предмет диссертационного исследования, показана научная новизна, теоретическая и практическая ценность полученных результатов, описывается структура работы.
В первой главе объясняются концепции аспектно-ориентированного программирования. В частности, дается определение аспекта - ключевого термина аспектно-ориентированного подхода. Аспект является модульной единицей, созданной для реализации сквозной функциональности. Аспект применяется не путем вызова, как для процедуры или метода, а путем систематизированного внедрения (weaving) фрагментов кода аспекта в рассредоточенные модули целевого приложения. Под внедрением аспектов понимается автоматическая компоновка аспектов и традиционных модулей приложения, что делает возможным инкапсуляцию сквозной функциональности в отдельных программных модулях. Далее в главе
описывается история развития в индустрии программирования данной парадигмы программирования в целом. Отмечается тот факт, что в 1979 году профессор Ростовского Университета Фуксман A. JI. предложил концепцию вертикальных слоений или сосредоточенного описания рассредоточенных действий (функций) в своей работе, предвосхитившей идеи концепции АОП
[5].
Во второй главе описываются существующие подходы к Web-программированию. Дается история развития Web-программирования. Далее дается краткое описание технологии ASP.NET ее архитектура и особенности, приводятся условия при разработке ASP.NET-приложений, в которых можно применить Aspect.NET - в текущей версии (2.2) Aspect.NET применим только к ASP.NET Web-приложениям и к коду программной логики страниц (code-behind). Глава продолжается анализом существующего подхода, основанного на объектно-ориентированном программировании, к разработке ASP.NET Web-приложений. На основе данного анализа выявляются недостатки при разработке Web-приложений с использованием объектноориентированного подхода: рассредоточенность кода, перемешивание кода и необходимость модификации исходного кода для изменения поведения элементов управления. В заключение в главе приводится обзор существующих работ по применению АОП для Web-программирования. По данному обзору отмечается тот факт, что большинство работ по применению АОП для разработки Web-приложений реализуется на платформе Java с использованием АОП-инструментов AspectJ и JBoss АОР, некоторые из них на РНР. Из других работ по применению АОП для разработки Web-приложений для платформы .NET можно выделить лишь проекты по применению АОП для решения задачи протоколирования в ASP.NET MVC приложениях, и их подход к реализации АОП предлагается Johnny Halife, который работает в технологическом институте Буэнос-Айреса. Суть данного подхода в использовании пользовательских атрибутов фильтра действий
(классов, производных от класса ActionFilterAttribute) для декларативного добавления кода, который выполняется перед и после выполнения методов действий класса контроллера. Предложенный подход обладает недостатками:
• отсутствие механизма описания срез точек (pointcuts) -информации о том, где, когда и как выполняется действие аспекта;
• данный подход позволяет добавить код только после или перед выполнением методов действий, реализуемых в классе контроллера;
• необходимость вручную аннотировать все нужные методы действий класса контроллера пользовательскими атрибутами фильтра действий;
Данные недостатки ограничивает применение АОП для решения большого круга задач Web-программирования.
В третьей главе описывается аспектно-ориентированный подход к Web-программированию. Дается краткое описание инструментария Aspect.NET. Описывается взаимодействие Aspect.NET с ASP.NET. Приводится организация среды АОП-разработки Aspect.NET для ASP.NET-приложения, которая представлена на Рис. 1. Далее в главе рассматриваются методы и принципы разработки аспектов в системе Aspect.NET для ASP.NET-приложений на простом примере, разработанном в Visual Studio 2005 с использованием версии Aspect.NET (2.1). Выделяются задачи Web-программирования, допускающие решение с помощью аспектноориентированного подхода, такие как:
1. протоколирование (logging);
2. безопасность (аутентификация, авторизация, олицетворение (передача пользователю полномочий другого пользователя, необходимых для выполнения каких-либо действий) -authentication, authorization, impersonation)',
3. криптография строки запроса (query string)',
4. криптография сооЫе-файлов;
5. кодирование гипертекста;
6. расширение пользовательского Web-интерфейса;
7. защита от Cross-Site Scripting атаки;
8. инструментирование ASP.NET-приложений для безопасности.
Aspeet.HET'Frainework
Компиляция !
Сборка *4.
ч аспектов J
- Щ
Сборка Web- с=»
Ьр итожена
г
Итоговая сборка j
4J
%] Сборка |^стращщы]
Рис. 1. Организация среды АОП-разработки Aspect.NET для ASP.NET-приложения
Отмеченные задачи были выбраны, так как, во-первых, их решение необходимо в реальном процессе разработки Web-приложений, во-вторых, они требуют решения в виде реализации сквозной функциональности приложения (за счет возможного повторения их реализации в разных местах кода Web-приложения), а АОП - наиболее подходящая технология для разработки подобных реализаций. В дальнейшем рассмотрим также другие задачи, например: проверка безопасности (Security Checking), валидация XML-документов (.XML Validation) и так далее. Глава продолжается
рассмотрением существующих решений задач Web-программирования, в частности, дается краткий обзор существующих АОП-инструментариев для платформы .NET и объектно-ориентированный подход к решениям задач Web-программирования. В заключение в главе описываются недостатки существующих решений задач Web-программирования и приводится изложение аспектно-ориентированного подхода к их решению: с помощью АОП каждая задача реализуется в аспекте в виде набора действий (actions), затем определяются условия внедрения для присоединения этих действий к нужным точкам выполнения Web-приложения, после этого запускается подсистема внедрения (weaver) аспектов системы Aspect.NET.
В четвертой главе подробно рассматривается реализация аспектов поддержки Web-программирования, решающих выделенные в третьей главе задачи. Например, для задачи аутентификации, аспект аутентификации реализуется следующим кодом:
[AspectDescription("Authentication aspect for web application")] public class WebAuthenticationAspect : Aspect {
[AspectAction("%instead %call BusinessLogic.*•')] public static void AuthenticationAction() t
IPrincipal User = HttpContext.Current.User; if (User.Identity.IsAuthenticated)
{
Methodlnfo method = (Methodlnfo)TargetMemberlnfo; method.Invoke(TargetObject, null) ;
}
else { //Throw exception or do other action }
}
}
Условие внедрения “%instead %call BusinessLogic.*” означает, что вместо вызова любого метода класса BusinessLogic вызывается действие аспекта AuthenticationActionf). В этом действии проверяется аутентификация пользователя с помощью свойства IPrinciple.Identity.lsAuthenticated. Если пользователь аутентифицирован, то разрешается выполнить действие целевого объекта, т. е. вызов целевого метода объекта класса BusinessLogic с помощью рефлексии (Reflection). Если нет, то либо выбрасывается
исключение, либо выполняется другое действие. Далее в главе описывается влияние условий внедрения этих аспектов на Web-приложение. Главу продолжает анализ эффективности и производительности применения аспектно-ориентированного подхода для разработки ASP.NET-приложений. Для данного анализа было измерено время выполнения задач Web-программирования, исполняемых 10000 раз за сессию тестирования, для обоих случаев - без применения и с применением Aspect.NET. Измерение было осуществлено для всех задач, кроме расширения пользовательского интерфейса, защиты от Cross-Site Scripting атаки и инструментирования ASP.NET-приложений для безопасности, на портативном компьютере Intel Core 2 CPU 1.83GHz, 2Gb Ram. Для каждой задачи измерение было произведено 100 раз. Были получены средние времена (в миллисекундах) выполнения некоторых выделенных задач Web-программирования, они приведены в таблице 1.
Среднее время
Протоколирование OOP 8462.35523
АОР 8488.0567
Аутентификация OOP 31.591807
АОР 32.071834
Авторизация OOP 37.392139
АОР 37.922111
Олицетворение OOP 312.807891
АОР 309.227687
Криптография строки запроса OOP 2693.55406
АОР 2689.65384
Криптография сооЫе-файлов OOP 2571.1471
АОР 2547.1457
Кодирование гипертекста OOP 28.211614
АОР 28.731642
Таблица 1. Среднее время выполнения задач УУеЬ-программировании
По полученным результатам измерения легко видеть, что время выполнения задач Web-пpoгpaммиpoвaния без применения и с применением Aspect.NET приблизительно одинаково. Поэтому можно заключить, что производительность исполнения Web-пpилoжeния после внедрения аспектов
с помощью Aspect.NET не хуже производительности такого Web-приложения без применения АОП, никакого избыточного инструментального кода не внедрено и не выполнено. То есть при использовании АОП для разработки Web-приложений в системе Aspect.NET, производительность не изменяется, однако объем кода, время разработки и трудоемкость уменьшаются, код Web-приложения упрощается. Приводятся недостатки реализации рассмотренных задач Web-программирования без применения АОП и преимущества их реализации с применением АОП. В заключение в главе рассматриваются отладка аспектов и оценка их влияния на Web-приложения.
В пятой главе рассматривается реализация библиотеки Web-аспектов. Описывается архитектура библиотеки. Дается описание использования библиотеки. В заключение в главе описывается внедрение Web-аспектов в Web-приложение с помощью командных строк.
В заключении подводятся итоги и делаются выводы по диссертационной работе, формулируются основные результаты, полученные в ходе работы, подчеркивается их научная новизна, теоретическая ценность и практическая значимость.
ОСНОВНЫЕ РЕЗУЛЬТАТЫ И ВЫВОДЫ
В диссертационной работе получены следующие основные результаты:
1. Проанализированы методы применения АОП, реализованного в системе Aspect.NET, для разработки и модификации ASP.NET-приложений.
2. Выделены важные задачи Web-программирования, к которым целесообразно применить АОП:
a. протоколирование (logging);
b. безопасность (аутентификация, авторизация,
олицетворение (передача пользователю полномочий
другого пользователя, необходимых для выполнения каких-либо действий) - authentication, authorization, impersonation)',
c. криптография строки запроса (query string)',
d. криптография сооЫе-файлов;
e. кодирование гипертекста;
f. расширение пользовательского Web-интерфейса;
g. защита от Cross-Site Scripting атаки;
h. инструментирование ASP.NET-приложений для
безопасности.
3. Разработана библиотека аспектов в системе Aspect.NET для решения выделенных задач Web-программирования.
4. Проанализированы эффективность и производительность применения АОП для разработки ASP.NET-приложений: производительность Web-приложения с применением и без применения Aspect.NET приблизительно одинакова, однако объем кода, время разработки и трудоемкость уменьшаются; код, сопровождение, изменение и расширение Web-приложения упрощаются.
Все полученные результаты являются новыми.
Рассмотренный подход к применению АОП в Web-программировании открывает большие возможности для разработки Web-приложений. Благодаря применению АОП, Web-программирование наследует все преимущества аспектно-ориентированного программирования в процессе разработки Web-приложений: уменьшение времени, стоимости и сложности разработки; упрощение сопровождения Web-продуктов и внесения в них изменений; создание надежных и безопасных Web-приложений за счет выделения и реализации сквозной функциональности в определенных модулях - аспектах.
Библиотека аспектов поддержки Web-программирования, разработанная автором диссертации, позволила впервые предложить применение АОП при разработке Web-приложений в среде .NET. Библиотека Web-аспектов WebAspect и пример ее использования WebAspectExample опубликованы на сайте проекта Aspect.NET.
Список литературы
1. Web-сайт по аспектно-ориентированной разработке программ. http://aosd.net.
2. Safonov V. О. Using aspect-oriented programming for trustworthy software development. Hoboken, New Jersey: Wiley Interscience, John Wiley &
‘ Sons. 2008. 338p.
3. Web-сайт технологии ASP.NET. http://www.asp.net.
4. Web-сайт проекта Aspect.NET. http://www.aspectdotnet.org.
5. Фуксман A. JI. Технологические аспекты создания программных систем. - М.: Статистика, 1979. - 184 с. - ISBN.
ПУБЛИКАЦИИ АВТОРА ПО ТЕМЕ ДИССЕРТАЦИИ
Статьи в журналах, рекомендованных ВАК:
6. Нгуен Ван Доан, Сафонов В. О., Реализация аспектов безопасности в ASP.NET-приложениях на основе системы Aspect.NET // Компьютерные инструменты в образовании. 2010. № 4. С. 3-11.
7. Нгуен Ван Доан, Сафонов В. О., Применение аспектноориентированного подхода и системы Aspect.NET к разработке Web-приложений // Компьютерные инструменты в образовании. 2010. № 5. С. 3-11.
8. Нгуен Ван Доан, Сафонов В. О., Средства аспектно-ориентированного программирования для разработки Web-приложений в системе Aspect.NET // Вести. С.-Петерб. ун-та. Сер. 10. 2011. Вып. 1. С. 85-105.
15
Другие публикации автора:
9. В. Д. Нгуен, В. О. Сафонов, Применение системы Aspect.NET для реализации аспектно-ориентированного программирования при разработке ASP.NET - приложений // Сборник трудов Всероссийской конференции с элементами научной школы для молодежи “Проведение научных исследований в области обработки, хранения, передачи и защиты информации”, Ульяновский государственный технический университет, 12/2009. Т. 3. С. 22-29.
10. Нгуен Ван Доан, Сафонов В. О., Применение аспектноориентированного программирования при разработке ASP.NET -
приложений на основе системы Aspect.NET // Тезисы докладов
конференции “Технологии Microsoft в теории и практике программирования”, Санкт-Петербургский Государственный Политехнический Университет, 03/2010. С. 160-161.
М.Нгуен Ван Доан, Сафонов В. О., Применение аспектно-
ориентированного подхода и системы Aspect.NET для реализации аспектов безопасности в ASP.NET-приложениях // Тезисы докладов конференции “Технологии Microsoft в теории и практике программирования”, Санкт-Петербургский Государственный Политехнический Университет, 03/2011. С. 51.
Подписано к печати 19.01.2012.
Формат бумаги 60 х 84 1/16. Бумага офсетная.
Печать ризографическая. Уел. печ. л. 1,0. Тираж 100 экз. Заказ 5347. Отпечатано в отделе оперативной полиграфии Химического факультета СПбГУ. 198504, Санкт-Петербург, Петродворец, Университетский пр. 26.
Текст работы Нгуен Ван Доан, диссертация по теме Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
61 12-1/568
Нгуен Ван Доан
На правах рукописи
РАЗРАБОТКА ИНСТРУМЕНТОВ ПОДДЕРЖКИ АСПЕКТНО-ОРИЕНТИРОВАННОГО \¥ЕВ-ПРОГРАММИРОВАНИЯ В
СИСТЕМЕ ASPECT.NET
05.13.11 — математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей
ДИССЕРТАЦИЯ на соискание ученой степени кандидата физико-математических наук
Научный руководитель: д.т.н., проф. Сафонов В.О.
Санкт-Петербург
2012
Оглавление
Введение...................................................................................................................4
Глава 1. Концепции и история аспектно-ориентированного программирования..................................................................................................9
1.1. Основные концепции аспектно-ориентированного подхода.................9
1.2. История аспектно-ориентированного программирования...................16
1.2.1. Предпосылки возникновения аспектно-ориентированного программирования..........................................................................................17
1.2.2. Создание аспектно-ориентированного программирования...........19
Глава 2. Существующие подходы к \¥еЬ-программированию........................22
2.1. История \УеЬ-программирования..............................................................22
2.2. Технология ASP.NET и ее особенности...................................................29
2.3. Существующий подход к разработке \¥еЬ-приложений и его недостатки...........................................................................................................36
2.4. Существующие работы по применению АОП для \Veb-программирования.............................................................................................42
Глава 3. Аспектно-ориентированный подход к \¥еЬ-программированию.....47
3.1. Инструментарий Aspect.NET.....................................................................47
3.2. Взаимодействие Aspect.NET с ASP.NET..................................................52
3.3. Принципы разработки аспектов в системе Aspect.NET для ASP.NET приложений.........................................................................................................56
3.4. Задачи \УеЬ-программирования, допускающие решение с помощью аспектно-ориентированного подхода..............................................................58
3.5. Существующие решения задач \¥еЬ-программирования.......................65
3.6. Аспектно-ориентированный подход к решению задач \¥еЬ-программирования.............................................................................................73
Глава 4. Реализация аспектов поддержки Web-пpoгpaммиpoвaния................75
4.1. Реализация \¥еЬ-аспектов..........................................................................75
4.2. Условие внедрения аспектов.....................................................................91
4.3. Эффективность и производительность применения аспектно-ориентированного подхода...............................................................................92
4.4. Отладка аспектов и оценка их влияния на \¥еЬ-приложения................99
Глава 5. Реализация библиотеки \УеЬ-аспектов...............................................100
5.1. Архитектура библиотеки..........................................................................101
5.2. Использование библиотеки......................................................................106
5.3. Внедрение \¥еЬ-аспектов в \¥еЬ-приложение.......................................111
Заключение..........................................................................................................113
Апробация и публикации автора по теме диссертации..................................115
Литература...........................................................................................................116
Введение
На сегодняшний день объектно-ориентированное программирование (ООП) является методологией, которая находит широкое применение в сфере разработки программного обеспечения (ПО). Данная методология программирования, несомненно, показала свою силу при моделировании общего поведения разрабатываемой программной системы. Однако, опыт показывает, что ООП не в достаточной мере позволяет справляться со все возрастающей сложностью программных продуктов. При разработке ПО существуют проблемы, для решения которых необходимы новые методологии, такие как аспектно-ориентированное программирование.
Аспектно-ориентированное программирование (АОП) [7] -«перспективный подход к инженерии программ, предназначенный для разработки сквозной функциональности (cross-cutting concerns) - идей, методов, функциональных возможностей, реализуемых и модифицируемых в ходе разработки программ, которые принципиально, по своей природе, не могут быть реализованы одной обобщенной процедурой {generalized procedure) - тесно взаимосвязанной совокупностью модулей (например, иерархией классов), а требуют для своей реализации совокупности рассредоточенных действий (tangled actions), которые должны быть добавлены в различные части существующего программного кода целевого приложения, для того, чтобы новая сквозная функциональность заработала» [11]. Иначе говоря, сквозная функциональность - это функциональность, реализация которой рассредоточена по коду приложения. Тем самым, АОП позволяет систематически добавлять и модифицировать новую функциональность, в том числе и относящуюся к Web-программированию. АОП является развитием процедурного и объектно-ориентированного программирования. Данная методология призвана снизить время, стоимость
и сложность разработки современного программного продукта. Следует отметить, что концепция АОП не заменяет подход ООП, а органично дополняет его [8, 13].
Суть концепции АОП заключается в том, что программная система рассматривается как совокупность различных компонентов. Каждый компонент отвечает за ту или иную функциональность. Некоторую функциональность можно реализовать в одном модуле или в нескольких. Но существует функциональность, реализация которой рассредотачивается по всей программной системе, в связи с чем ее реализация путем создания некоего модуля или нескольких модулей затруднительна, наряду с данным обстоятельством ее нельзя выделить в отдельные сущности. В отличие от ООП, АОП позволяет выделить и реализовать сквозную функциональность в отдельных модулях, называемых аспектами. Каждый аспект применяется путем систематизированного внедрения (weaving) фрагментов кода аспекта в рассредоточенные модули целевой программной системы.
Примерами сквозной функциональности являются протоколирование (logging), безопасность исполнения программы в многопоточной вычислительной среде (MT-safety), обработка ошибок, реализация подсистемы безопасности (security).
В настоящее время Web-программирование играет важную роль в сфере разработки программного обеспечения (ПО). День ото дня Web-приложения (Web applications) быстро развиваются и постепенно заменяют приложения для настольной системы (desktop applications). Развитие Web-приложений является важной тенденцией эволюции компьютерных технологий, операционных систем, сетевых архитектур и прикладных программ [16]. Поэтому применение АОП в Web-программировании, как показано в данной работе, имеет важное значение для разработки Web-приложений. Оно позволяет разработчикам снизить время, стоимость и
сложность разработки, упростить сопровождение Web-продуктов и внесение в них изменений, создавать надежные и безопасные Web-приложения.
В данной диссертационной работе рассмотрено применение АОП в Web-программировании для платформы Microsoft.NET. Web-программирование для данной платформы реализуется с помощью ASP.NET [17], а АОП для платформы .NET реализовано в системе Aspect.NET [18], разработанной в лаборатории Java-технологии математико-механического факультета Санкт-Петербургского Государственного Университета под научным руководством профессора Сафонова В. О.
Основные цели диссертационной работы:
1. Анализ методов применения АОП и системы Aspect.NET для разработки и модификации ASP.NET-приложений.
2. Выделение некоторых существенных задач Web-программирования, к которым можно применить АОП.
3. Разработка библиотеки аспектов в системе Aspect.NET для решения выделенных задач Web-программирования.
4. Анализ эффективности и производительности применения АОП для разработки ASP.NET-приложений.
Диссертационная работа состоит из введения, пяти глав, заключения, списка литературы. Работа содержит 125 страниц, 14 рисунков, 4 таблицы, список литературы из 111 наименований.
В первой главе объясняются концепции аспектно-ориентированного программирования, описывается история развития в индустрии программирования данной парадигмы программирования в целом. В частности, глава исследует предпосылки возникновения аспектно-ориентированного подхода и его создание.
Во второй главе описываются существующие подходы к Web-программированию. Дается история развития Web-программирования. Далее дается краткое описание технологии ASP.NET и ее особенности, приводятся условия при разработке ASP.NET-приложений, в которых можно применить Aspect.NET - в текущей версии (2.2) Aspect.NET применим только к ASP.NET Web-приложениям и к коду программной логики страниц (code-behind). Глава продолжается анализом существующего подхода, основанного на объектно-ориентированном программировании, к разработке ASP.NET Web-приложений. На основе данного анализа выявляются недостатки при разработке Web-приложений с использованием объектно-ориентированного подхода. В заключение в главе приводится обзор существующих работ по применению АОП для Web-программирования.
В третьей главе описывается аспектно-ориентированный подход к Web-программированию. Дается краткое описание инструментария Aspect.NET. Описывается взаимодействие Aspect.NET с ASP.NET. Далее в главе рассматриваются методы и принципы разработки аспектов в системе Aspect.NET для ASP.NET-приложений. Выделяются задачи Web-программирования, допускающие решение с помощью аспектно-ориентированного подхода, такие как:
1. протоколирование (logging);
2. безопасность (аутентификация, авторизация, олицетворение (передача пользователю полномочий другого пользователя, необходимых для выполнения каких-либо действий) -authentication, authorization, impersonation);
3. криптография строки запроса (query string)',
4. криптография cookie-файлов;
5. кодирование гипертекста;
6. расширение пользовательского Web-интерфейса;
7. защита от Cross-Site Scripting атаки;
8. инструментирование ASP.NET-приложений для безопасности.
Глава продолжается рассмотрением существующих решений задач Web-программирования, в частности, дается краткий обзор существующих АОП-инструментариев для платформы .NET и объектно-ориентированный подход к решениям задач Web-программирования. В заключение в главе описываются недостатки существующих решений задач Web-программирования и приводится изложение аспектно-ориентированного подхода к их решению: с помощью АОП каждая задача реализуется в аспекте в виде набора действий (actions), затем определяются условия внедрения для присоединения этих действий к нужным точкам выполнения Web-приложения, после этого запускается подсистема внедрения (weaver) аспектов системы Aspect.NET.
В четвертой главе подробно рассматривается реализация аспектов поддержки Web-программирования, решающих выделенные в третьей главе задачи. Описывается влияние условий внедрения этих аспектов на Web-приложение. Главу продолжает анализ эффективности и производительности применения аспектно-ориентированного подхода для разработки ASP.NET-приложений. На основе данного анализа дается вывод, что производительность исполнения Web-приложения после внедрения аспектов с помощью Aspect.NET не хуже производительности такого Web-приложения без применения АОП, никакого избыточного инструментального кода не внедрено и не выполнено. То есть при использовании АОП для разработки Web-приложений в системе Aspect.NET, производительность не изменяется, однако объем кода, время разработки и трудоемкость уменьшаются, код Web-приложения упрощается. Приводятся недостатки реализации рассмотренных задач Web-программирования без применения АОП и преимущества их реализации с применением АОП. В заключение в главе рассматриваются отладка аспектов и оценка их влияния на Web-приложения.
В пятой главе рассматривается реализация библиотеки \¥еЬ-аспектов. Описывается архитектура библиотеки. Дается описание использования библиотеки. В заключение в главе описывается внедрение \¥еЬ-аспектов в \УеЬ-приложение с помощью командных строк.
В заключении подводятся итоги и делаются выводы по диссертационной работе, формулируются основные результаты, полученные в ходе работы, подчеркивается их научная новизна, теоретическая ценность и практическая значимость.
Глава 1. Концепции и история аспектно-ориентированного программирования
1.1. Основные концепции аспектно-ориентированного подхода
При традиционных подходах к разработке программ, например, в объектно-ориентированном программировании или при процедурном подходе, для решения задачи декомпозиции (разделения) программной системы на более мелкие модули разработчики используют имеющиеся абстракции для оптимизации вызовов модулей или процедур. Однако при разработке ПО с применением ООП довольно часто возникают ситуации, когда схожая функциональность существует в нескольких модулях или компонентах программной системы и не может быть реализована в одном. Следовательно, разработчику приходится отслеживать эту функциональность без применения какого-либо систематического подхода, что приводит к неоправданному увеличению объема и уровня сложности исходного кода приложения и, как следствие, к большему количеству ошибок.
Аспектно-ориентированное программирование является новым подходом к разработке ПО. Данный подход позволяет осуществлять модуляризацию, разработку сквозной функциональности и ее автоматизированное, безопасное и надежное добавление в целевое приложение, а также поиск (локализацию) и модификацию в целевом приложении некоторой, уже реализованной сквозной функциональности.
Типичным примером сквозной функциональности, который приводится во многих литературных источниках, является протоколирование (logging) выполнения методов, так как протоколирование является неотъемлемой частью процесса создания и отладки современного программного обеспечения. При применении традиционных подходов к протоколированию в исходный код целевых методов необходимо вызывать функции протоколирования. Таким образом, для вызова каждой операции протоколирования необходимо вставлять минимум одну строку кода. Следовательно, при масштабном применении данного подхода размер кода реализации функциональности протоколирования может разрастаться в тысячи строк. Это приводит к увеличению и общего размера исходных кодов ПО, соответственно, увеличиваются трудозатраты на его разработку и поддержку.
В АОП сквозная функциональность выделяется в специализированные модули и реализуется отдельно от бизнес-логики (Рис. 1). На рис. 1 сквозная функциональность выделена черным.
¡ВВД1РЙИ^>0РШ00111
Рис. 1. Суть подхода АОП.
С точки зрения АОП отдельные концепции реализованы в слабо связанном виде. Эти реализации комбинируются и формируется
окончательная версия системы. Аспектно-ориентированная разработка ПО состоит из трех шагов:
• Аспектная декомпозиция: требования разбиваются для выделения общей и сквозной функциональности. На данном шаге из сквозной функциональности системного уровня выделяется функциональность для модульного уровня.
• Реализация функциональности: каждое требование, соответствующее требуемой функциональности, реализуется отдельно.
• Компоновка аспектов или интеграция аспектов: результирующая программная система составляется аспектным интегратором на основе заданных в аспектном модуле правил.
На Рис. 2. представлены фазы аспектно-ориентированной разработки ПО.
Идентификатор требований
Интегратор
Реализация^ ебсваний
Ас пекхназ л екомпюаиция Интегр ация аспектов
Рис. 2. Фазы аспектно-ориентированной разработки ПО.
Аспект (от англ. aspect - аспект, подход, сторона) - является ключевым термином АОП. Он является результатом аспектной декомпозиции и представляет собой модульную единицу, созданную для реализации сквозной функциональности. Аспект в системе Aspect.NET состоит из модулей {modules) (методов или функций), данных (data), действий {actions), правил внедрения (weaving rules). То есть он
инкапсулирует в себе саму функциональность, а также информацию о том, где, когда и как эта функциональность должна выполняться. Аспект применяется не путем вызова, как для процедуры или метода, а путем автоматической компоновки аспектов и традиционных модулей приложения, т. е. фрагменты кода аспекта систематизированно внедряются (weave) в рассредоточенные модули целевого приложения.
Действие аспекта (от англ. actions или advices - совет, консультация, рекомендация) - часть аспекта, несущая в себе реализацию функциональности, представляющая собой логику функциональности, выражающуюся, в основном, в исходных кодах. Чаще всего действие аспекта представляется в одном методе (функции) языка программирования, применяемого для разработки ПО.
Для применения своих действий аспекты используют так называемые точки присоединения (join points), которые обычно рассредоточены по всему коду приложения. Другими словами, точка присоединения - это точка в выполняемом приложении, где следует применить действие аспекта. Аспект содержит правила внедрения (weaving
-
Похожие работы
- Реализация подсистемы применения аспектов в системе Aspect.NET
- Разработка и реализация пользовательского интерфейса аспектно-ориентированного программирования
- Разработка и реализация инструментария аспектно-ориентированного программирования для академической версии .NET
- Автоматическая генерация программных компонент по высокоуровневым спецификациям
- Методы построения инвариантных серверов web-приложений
-
- Системный анализ, управление и обработка информации (по отраслям)
- Теория систем, теория автоматического регулирования и управления, системный анализ
- Элементы и устройства вычислительной техники и систем управления
- Автоматизация и управление технологическими процессами и производствами (по отраслям)
- Автоматизация технологических процессов и производств (в том числе по отраслям)
- Управление в биологических и медицинских системах (включая применения вычислительной техники)
- Управление в социальных и экономических системах
- Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей
- Системы автоматизации проектирования (по отраслям)
- Телекоммуникационные системы и компьютерные сети
- Системы обработки информации и управления
- Вычислительные машины и системы
- Применение вычислительной техники, математического моделирования и математических методов в научных исследованиях (по отраслям наук)
- Теоретические основы информатики
- Математическое моделирование, численные методы и комплексы программ
- Методы и системы защиты информации, информационная безопасность