Главная » Просмотр файлов » Диссертация

Диссертация (1148251), страница 15

Файл №1148251 Диссертация (Инструменты аспектно-ориентированного программирования облачных веб-приложений в Microsoft Azure разработка и реализация в системе Aspect.NET) 15 страницаДиссертация (1148251) страница 152019-06-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 15)

В свою очередь, бесшовное применениеаспектов к бизнес-логике облегчает реализацию нефункциональных требований.В таком ключе можно сказать, что Aspect.NET позволяет рассматривать самубизнес-логику как каркас, а вызовы её целевых методов — как генерациюсобытий, на которые подписаны действия аспектов:79public class LoggingAspect : Aspect {public static void Log(String s) {Console.WriteLine(s);}[AspectAction("%before %call *")]public static void LogBefore() {Log("Before: " + TargetMemberInfo.ToString());}}[AspectAction("%after %call *")]public static void LogAfter() {Log("After: " + TargetMemberInfo.ToString());}ЛИСТИНГ 23.

АСПЕКТ, ПОДПИСАННЫЙ НА ВЫЗОВЫ МЕТОДОВ ЛОГИРОВАНИЯТема применения Aspect.NET к разработке ASP.NET веб-приложенийвпервые подробно рассматривалась в работе [123], где автор с помощью действийbefore, instead, after реализовал библиотеку аспектов WebAspect со следующейфункциональностью:1) протоколирование;2) безопасность (аутентификация, авторизация, олицетворение(передача пользователю полномочий другого пользователя,необходимых для выполнения каких-либо действий);3) криптография строки запроса;4) криптография cookie-файлов;5) кодирование гипертекста;6) расширение пользовательского Web-интерфейса;7) защита от Cross-Site Scripting атаки.Также показано, что производительность исполнения сборки с внедреннымичерез Aspect.NET аспектами эквивалентна производительности сборки совставленными вручную вызовами действий аспектов. Поскольку PaaS технологияWeb Apps в облаке Microsoft Azure предполагает работу в рамках ASP.NET, торезультаты данной работы могут быть использованы и при построении облачныхприложений.

В основном, для разработки ASP.NET-приложений применяютсреду разработки Microsoft Visual Studio, поскольку в ней есть интеграция совстроенным сервером IIS [50]. Проект ASP.NET, кроме прочего, содержит файлы80разметки веб-страницы “.aspx” и код с её бизнес-логикой “.aspx.cs”. Компиляторпри построении веб-проекта создает сборку с бизнес-логикой в виде .dll файла, ккоторой консольное приложение компоновщика Aspect.NET (далее weaver)применяет аспекты. При развертывании локального веб-приложения MicrosoftVisual Studio помещает все результирующие файлы в специальную временнуюпапку со случайно сгенерированным именем и делает её корневой директориейсайта в IIS.

Исходя из этого, в работе [123] предлагается использовать следующийалгоритм для внедрения аспектов в веб-приложение с помощью Aspect.NET.1. Скомпилировать библиотеку WebAspect.2. Скомпилировать Web-приложение (например, WebAspectExample).3. Скопировать подсистему внедрения аспектов Weaver.exe, сборкуWebAspect.dll и связанные с ней файлы (WebAODLog.log4net) и сборки(например, AspectDotNet.dll, GMaps.dll, log4net.dll) в папку bin Webприложения.4. В папке bin Web-приложения запустить Weaver в режиме сканированияточек присоединений путем вызова следующей командной строки,например, для WebAspectExample: weaver -scan -aspects WebAspect.dll in WebAspectExample.dll -out joinpoints.xml.5.

Запустить Weaver в режиме внедрения путем вызова следующейкомандной строки, например, для WebAspectExample: weaver -weave joinpoints joinpoints.xml -out ~WebAspectExample.dll.6. Созданная сборка ~WebAspectExample.dll — результирующая сборка свнедренными в неё аспектами. Удалить сборку WebAspectExample.dll иизменитьназваниесборки~WebAspectExample.dllнаWebAspectExample.dll.Как можно видеть при данном подходе, внедрение аспектов с помощьюAspect.NET в веб-приложение, разработанное в Microsoft Visual Studio, требуетсущественных усилий и, вдобавок, у пользователя нет возможности отлаживатьдействия аспектов штатным отладчиком.81Таким образом, для возможности применять систему Aspect.NET дляполноценной разработки облачных веб-приложений на Microsoft Visual Studio,требуется глубокая интеграция компоновщика аспектов с этой средой разработки.Далее будут рассмотрены решения некоторых инженерных проблем адаптацииAspect.NET для интеграции с Microsoft Visual Studio.3.2 Реализация совместимости Aspect.NET с Microsoft Visual Studio 2015Современная разработка на Microsoft Azure подразумевает использованиеMicrosoft Visual Studio (VS) 2015, в которой серьезно упрощено развертываниеоблачных приложений.

Программисту достаточно сделать несколько щелчковмышью, чтобы его приложение отправилось в облако. Последняя опубликованнаяверсия Aspect.NET 2.1 совместима лишь с Microsoft Visual Studio 2008, т.к. именнос её COM-библиотекой по работе с отладочной информацией (msdia90.dll)сконфигурирован Microsoft Phoenix. Установка Microsoft VS более новой версииприводит к тому, что Microsoft Phoenix автоматически пытается использоватьобновленную msdia90.dll и завершается с ошибкой. К сожалению, с 2008 годаразвитиекросс-платформеннойкомпиляторовMicrosoftPhoenixсредыпостроенияпрекратилось.Приоптимизирующихэтомегоширокиевозможности всё ещё используются в академической среде, и несовместимость ссовременными версиями Microsoft VS является серьезным препятствием длятаких проектов.

Решение заключается в том, чтобы в директории компоновщикааспектов находилась библиотека с нужной версией, а также её манифестомmsdia90.manifest:82<?xml version="1.0" encoding="utf-8"?><asmv1:assemblymanifestVersion="1.0"xmlns="urn:schemas-microsoftcom:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" ><assemblyIdentity type="win32" name="msdia90" version="9.0.30729.4947"language="neutral" processorArchitecture="x86" /><file name="msdia90.dll"><comClassclsidthreadingModel="both"/></file></asmv1:assembly>ЛИСТИНГ 24.

ФАЙЛ MSDIA90.MANIFESTСледующей проблемой становится публикация средствами Microsoft VSрезультирующей сборки с внедренными аспектами в облако Microsoft Azure.Например, для облачного веб-приложения, после выбора в свойствах проектапункта контекстного меню Publish, процесс публикации заключается вкомпиляции проекта, упаковке его сборки вместе с используемыми библиотекамии другими служебными файлами в специальный архив, а затем передаче егослужбам Microsoft Azure.

В свою очередь, компоновщик аспектов в Aspect.NET— это консольное приложение, которое в виде параметров командной строкипринимает пути к сборкам: аспектной, целевой и результирующей:weaver -aspects MyAspect.dll -in HelloWorld.exe -out AspectHelloWorld.exeСледовательно, если бы удалось выполнить эту команду сразу после этапакомпиляции и подменить результирующей сборкой целевую, то Microsoft VSотправит на публикацию приложение с внедренными аспектами. Более того,теперь запуск на выполнение целевого проекта приведет к запуску проекта свнедренными аспектами, что облегчает аспектно-ориентированную разработкупрограмм. В итоге, автором разработан следующий алгоритм разработки ибесшовной интеграции аспектов в Microsoft VS 2015 с помощью Aspect.NET.Вход: Проект с исходными текстами целевого приложения, к которомунужно применить аспекты.1.Создаем отдельный проект для аспекта (типа Class Library) иобъединяем его с целевым проектом в рамках общего решения (solution).832.

Чтобы обеспечить интеграцию аспекта с целевой сборкой, в свойствахего проекта на вкладке Build Events добавляем соответствующий скрипт::: Укажем папку со сборкой целевого проектаset TargetAssemblyDir=C:\HelloWorld\HelloWorld\bin\Debug\:: Название его сборкиset TargetAssembly=HelloWorld:: её расширениеsetTargetAssemblyExt=.exe:: Для каждого нового аспекта или целевого проекта необходимо менять:: лишь вышеуказанные переменные:: Зададим путь к директории Aspect.NETset AspectDotNetDir=C:\AspectDotNetset TargetAssemblyPath=%TargetAssemblyDir%%TargetAssembly%%TargetAssemblyExt%set TargetAssemblyName=%TargetAssembly%%TargetAssemblyExt%cd %AspectDotNetDir%weaver -aspects $(TargetPath) -in %TargetAssemblyPath% -out%TargetAssemblyName%:: Подмена сборки в целевом проекте результирующейmove /Y %TargetAssemblyName% %TargetAssemblyPath%ЛИСТИНГ 25.

CMD-СКРИПТ ДЛЯ ИНТЕГРАЦИИ АСПЕКТА И ЦЕЛЕВОЙ СБОРКИ3. Выключаем процесс применения аспектов при неудачной компиляциицелевого проекта путем выбора "When the build updates the projectoutput" в опции “Run the post-build event”.4. Настраиваемпорядоксборкипроектов(ProjectBuildOrderвконтекстном меню аспектного проекта) так, чтобы первым собиралсяцелевой проект, затем аспектный.5. Устанавливаем целевой проект для запуска (в его контекстном меню"Set as StartUp Point").Выход: Решение (solution) с аспектным и не модифицированным целевымпроектом. При компиляции аспектного проекта будет происходить внедрениеаспектов, а при запуске в Microsoft VS — запуск результирующей сборки.

В своюочередь компиляция и запуск целевого проекта приведет к запуску исходногопроекта, без внедренных аспектов.При бесшовной интеграции аспектов с целевой сборкой желательно иметьвозможностьприменитьотладчикMicrosoftVSпритестированиирезультирующей сборки. Вся информация о связи исходного кода и точки84останова (breakpoint) в исполняемом файле содержится в pdb-файлах, которыепроизводит компилятор Microsoft VS. После применения компоновщикасоздается исполняемый файл с интегрированными аспектами, однако отладочныеpdb-файлы аспектного и целевого проекта не соответствуют ему. Это делаетневозможным установку точек останова в аспектах и пошаговую отладкурезультирующей сборки.Итак, наша последняя задача заключается в том, чтобы создать отладочныйpdb-файл, соответствующий результирующей сборке. В процессе своей работыкомпоновщик вставляет в целевую сборку дополнительные MSIL-инструкции длявызова действий аспектов, а также передачи в них контекста.

Эти операциипроизводятся с помощью Microsoft Phoenix, а Mono.Cecil отвечает за этапы 2, 4 и5 в приведенном в разделе 3.3 алгоритме по подстановке замещающегонаследника. Как Microsoft Phoenix, так и Mono.Cecil при преобразовании целевойсборки автоматически поддерживают соответствие с отладочной информацией.Инымисловами,присоответствующихпараметрахэтихинструментов,отладочный pdb-файл для результирующей сборки будет создан автоматически.Всё что нам теперь остается, это средствами Microsoft Phoenix добавитьотладочную информацию для новых MSIL-инструкций.

С учетом того, что ихдобавление не влияет на исходный текст целевого проекта, необходимо лишьскопироватьвпредшествующихновыеимMSIL-инструкцииинструкцийвотладочнуюцелевойсборке.информациюЭтоотреализуетсякопированием свойства DebugTag в классе Phx.IR.Instruction — высокоуровневогопредставления инструкций в Microsoft Phoenix. Теперь отладчик за один шагсможет выполнить новые инструкции и перейти внутрь действия аспекта, а далеебудет задействована отладочная информация аспектной сборки, которая ужесоздана компилятором .NET.853.3 Замещение аспектом целевого класса для перехвата событийКак уже упоминалось, платформа ASP.NET — это каркас, который предлагаетобщую архитектуру для ряда задач, а программист лишь уточняет поведениепрограммы в методах обратного вызова (callbacks).

Предположим, у нас есть вебстраница Default.aspx, на которой расположена кнопка LogButton. При её нажатиибудет изменено содержимое текстового элемента TextControl:public partial class Default : System.Web.UI.Page{//Обработчик щелчка мыши по кнопке страницыprotected void LogButton_Click(object sender, EventArgs e) {TextControl.Text = ”Click from LogButton…”;}}ЛИСТИНГ 26.

Характеристики

Список файлов диссертации

Инструменты аспектно-ориентированного программирования облачных веб-приложений в Microsoft Azure разработка и реализация в системе Aspect
Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6417
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее