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

кандидата физико-математических наук
Нгуен Ван Доан
город
Санкт-Петербург
год
2012
специальность ВАК РФ
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