Aop framework что это

Знакомство с АОП

Парадигмы программирования

В современном мире IT-разработки существует довольно большое множество различных подходов к написанию программ. Так, например, кому-то нравиться представлять программу в виде последовательности действий, а кто-то считает, что программа должна представлять собой множество объектов, общающихся друг с другом. Совокупности этих идей и понятий образуют своего рода стиль написания программы, который принято назвать – парадигма программирования.

В этой статье я хочу рассказать о сравнительно молодой, но крайне, на мой взгляд, полезной парадигме программирования – аспектно-ориентированном программировании.

Основы АОП

public BookDTO getBook(Integer bookId) <
BookDTO book = bookDAO.readBook(bookId);
return book;
>

public BookDTO getBook(Integer bookId) <
LOG.debug( «Call method getBook with id » + bookId);

BookDTO book = bookDAO.readBook(bookId);

LOG.debug( «Book info is: » + book.toString());
return book;
>

public BookDTO getBook(Integer bookId) throws ServiceException <
LOG.debug( «Call method getBook with id » + bookId);
BookDTO book = null ;

try <
book = bookDAO.readBook(bookId);
> catch(SQLException e) <
throw new ServiceException(e);
>

LOG.debug( «Book info is: » + book.toString());
return book;
>

public BookDTO getBook(Integer bookId) throws ServiceException, AuthException <
if (!SecurityContext.getUser().hasRight(«GetBook»))
throw new AuthException(«Permission Denied»);

LOG.debug( «Call method getBook with id » + bookId);
BookDTO book = null ;

try <
book = bookDAO.readBook(bookId);
> catch (SQLException e) <
throw new ServiceException(e);
>

LOG.debug( «Book info is: » + book.toString());
return book;
>

public BookDTO getBook(Integer bookId) throws ServiceException, AuthException <
if (!SecurityContext.getUser().hasRight( «GetBook» ))
throw new AuthException( «Permission Denied» );

LOG.debug( «Call method getBook with id » + bookId);
BookDTO book = null ;
String cacheKey = «getBook:» + bookId;

try <
if (cache.contains(cacheKey)) <
book = (BookDTO) cache.get(cacheKey);
> else <

book = bookDAO.readBook(bookId);
cache.put(cacheKey, book);
>

> catch (SQLException e) <
throw new ServiceException(e);
>

LOG.debug( «Book info is: » + book.toString());
return book;
>

Можно продолжать совершенствовать данный метод, но для начала — достаточно. В ходе наших доработок мы получили метод в 10 раз (с 2 до 20 LOC) превышающий исходный размер. Самое интересное, что объём бизнес-логики в нём не изменился – это всё та же 1 строка. Остальной код реализует некоторую общую служебную функциональность приложения: логирование, обработку ошибок, проверку прав доступа, кеширование и так далее.

Пример использования (AspectJ)

AspectJ является аспектно-ориентированным расширением/framework’ом для языка Java. На данный момент это, пожалуй, самый популярный и развивающийся АОП движок.

Рассмотрим реализацию аспекта логирования с его помощью:

@Aspect
public class WebServiceLogger <
private final static Logger LOG =
Logger.getLogger(WebServiceLogger. class );

@Pointcut( «execution(* example.WebService.*(..))» )
public void webServiceMethod()

@Pointcut( «@annotation(example.Loggable)» )
public void loggableMethod()

LOG.debug( «Call method » + methodName + » with args » + methodArgs);

Object result = thisJoinPoint.proceed();

LOG.debug( «Method » + methodName + » returns » + result);

Первым делом создаётся аспект логирования методов сервисов – класс WebServiceLogger, помеченный аннотацией Aspect. Далее определяются два среза точек соединения: webServiceMethod (вызов метода, принадлежащего классу WebService) и loggableMethod (вызов метода, помеченного аннотацией @Loggable). В завершении объявляется совет (метод logWebServiceCall), который выполняется вместо (аннотация Around) точек соединения, удовлетворяющих срезу («webServiceMethod() && loggableMethod()»).

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

Для того, что бы использовать аспекты AspectJ их придётся скомпилировать и «вшить» в основные классы с помощью специального компилятора AJC.

Продукт бесплатный. Распространяется под Eclipse License.

Пример использования (PostSharp)

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

public class ExceptionDialogAttribute : OnExceptionAspect
<
public override void OnException(MethodExecutionEventArgs eventArgs)
<
string message = eventArgs.Exception.Message;
Window window = Window.GetWindow((DependencyObject)eventArgs.Instance);
MessageBox.Show(window, message, «Exception» );
eventArgs.FlowBehavior = FlowBehavior.Continue;
>
>

Строго говоря, аспекты в терминологии PostSharp – это, как мы можем видеть, аспект и совет в терминологии АОП.

Для того, что бы указать срез точек пересечения для данного аспекта необходимо в файл настроек сборки (AssemblyInfo.cs) добавить следующую строку:

Или же явно пометить интересующие вас методы атрибутом ExceptionDialog:

[ExceptionDialog]
public BookDTO GetBook(Integer bookId)

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

Продукт платный. Есть Community Edition.

От теории к практике

И так, мы только что увидели, как красиво и эффективно можно решить проблему «выноса за скобки» сквозного функционала в вашем приложении. Однако, это всё теория. На практике всё, естественно, немного иначе 🙂

Прежде всего, в обоих случаях для компиляции и «вшивания» (weaving) аспектов придётся использовать специальный компилятор и тащить вместе с проектом дополнительные библиотеки. Вроде бы, это не проблема: компилятор легко скачивается и интегрируется в среду (например, при использовании maven’a задача сведётся всего лишь к добавлению плагина aspectj-maven-plugin), а множество зависимостей – обычное дело, по крайней мере для Java-приложений (решаемая с помощью того же maven’a). Однако, необходимость включения в проект чего-то, что требует отдельной компиляции, да ещё и не имеет широкого распространения, зачастую отпугивает разработчиков, не смотря на все потенциальные плюсы.

В данном случае решением проблемы может стать Spring Framework [1,2]. Данный фреймворк имеет много достоинств, однако в рамках данной статьи нас интересует его AOP-составляющая. Spring Framework реализует ограниченную AOP-функциональность на чистом Java (C#) без использования сторонних библиотек с помощью создания прокси-объектов (JDK Dynamic Proxy, CGLIB). Другими словами в Spring AOP можно использовать только точки соединения типа «выполнение метода». Однако, как показывает практика, данное ограничение не играет значительной роли, так как для решения большинства задач, требуется точки соединения именно этого типа.

Кроме того, Spring Framework поддерживает конфигурирование приложений c помощью @AspectJ аннотаций, а так же интеграцию аспектов скомпилированных непосредственно с помощью AspectJ.

У себя в компании мы используем именно Spring AOP. Учитывая прочие заслуги Spring Framework, на мой взгляд, он является самой доступной и удобной площадкой для работы с AOP, внося значительный вклад в его популяризацию и развитие.

Резюме

Источник

AOP Framework что это за программа

AOP Framework это фирменная программа компании Acer, которая устанавливается на ноутбуки этой фирмы. Данная программа предназначена для Acer AcerCloud и является частью данного сервиса. Давайте немного подробнее на этом и остановимся.

Acer AcerCloud — это облочное хранилище файлов фирмы Acer, которое используется в ноутбуках Acer. AOP Framework является программой предназначенной для работы с данным облачным хранилищем.

Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Если вы не в курсе, что такое облачное хранилище, то мы постараемся коротко объяснить вам это.

Облачное хранилище, это хранилище файлов пользователей. У фирмы Acer есть свои, либо арендованные сервера с большими винчестерами. Фирма выделяет пользователям определенное файловое пространство для хранения лично информации, файлом, бэкапов. С вашей стороны это выглядит как личный кусок хостинга для хранения файлов с собственным кодом доступа к ним. Для удобной работы с таким облачным хранилищем фирмы Acer и была создана программа AOP Framework.

Если ваш ноутбук выдает сообщение об ошибке AOP Framework, то скорее всего данная программа у вас некорректно работает. Вы можете попробовать переустановить ее либо отключить вовсе.

Чтобы отключить AOP Framework, необходимо в msconfig, в разделе Автозагрузка, убрать галочки со всего, что связано с Acer.

Вы также можете отыскать у себя на компьютере программы AOP Framework и Acer Портал и удалить их, тогда AOP Framework не будет беспокоить вас своей ошибкой.

Таким образом мы разобрались, что такое AOP Framework и что такое облачное хранилище. Пускай кратко, но мы изложили всю необходимую информацию, для того, чтобы вы спокойно работали и не встречали ошибку связанную с крахом программы AOP Framework.

Источник

Aop framework что это за программа

Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что этоВсем привет Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что этоРебята, данная заметка будет посвящена такой программе как AOP Framework, мне предстоит раздобыть информацию про эту прогу.. Значит ребята, что я узнал, AOP Framework является частью проекта Acer AcerCloud. Вроде бы эта программа запускается автоматом вместе с виндой. Также вроде бы эта программа и службу создает в винде…

Так, вот еще узнал, то AOP Framework представляет из себя компонент, который обеспечивает нормальную работу Acer AcerCloud. Но блин, Acer AcerCloud это что такое? А вот это знаете, это облачное хранилище данных от компании Acer. Ну уже кое какой вывод сделать можно: AOP Framework это фирменная прога. Если она у вас стоит, то смею предположить что у вас ноутбук Acer, угадал? Ну если нет, то извините Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Некоторые пользователи в винде получают ошибку такую как AOP Framework crash, как я понимаю это ошибка ну мол крах какой-то, короче простыми словами означает что прога упала. Ну то есть сначала работала, а потом бац и перестала работать. Ну вот ребята, читаю и убеждаюсь, что я был прав, короче данная ошибка появляется у пользователей ноутбуков Acer с Windows 8.1, кстати говорят что эта винда типа недоделанная, хе-хе.. Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что этоИ еще люди пишут, что ошибка началась после обновления компьютера. Что тут имеется ввиду я не знаю, то ли обновление винды, то ли обновление железа.. скорее всего первое.. Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

На официальном форуме Майкрософт знаете что советуют сделать? Я бы не подумал, но советуют удалить эту программу. Я сейчас вам покажу как это сделать по-простому, смотрите, зажимаете кнопки Win + R, появится окошко Выполнить, туда вам нужно вставить вот такую команду:

Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Нажимаете ОК, далее вылезет окно со списком всех программ, которые стоят у вас на ноуте. Тут находим AOP Framework, нажимаем правой кнопкой и там выбираем пункт Удалить, дальше появится окно, ну типа мастер удаления и там нужно будет нажимать кнопки Next или Далее. В общем ничего сложного нет Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

ВНИМАНИЕ. После того как вы удалите, на форуме Майкрософт предлагается скачать снова программу AOP Framework, но блин, прикол в том, что ее скачать нельзя, ибо официальный сайт, а это cloud.acer.com/downloads, ну так вот этот сайт недоступен! Откуда тогда качать AOP Framework? Я не знаю! Но тут напрашивается вопрос, а что эта программа так важна? И тут я сам отвечу, да нет, эта программа не оч важная, это просто облачное хранилище от фирмы Acer. Правда я не уверен что оно сейчас работает (на дворе 2017 год). В любом случае если данная программа вам не нужна, вы можете ее удалить, без нее НОУТБУК БУДЕТ И ДАЛЬШЕ ПРЕКРАСНО РАБОТАТЬ Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Читаю зарубежные сайты и вижу, что ошибка AOP Framework еще у некоторых пользователей встречается, люди даже создали тему на официальном сообществе Acer. Пишут люди что они ничего такого особого не делали, чтобы это вызвало ошибку AOP Framework. Но пишут люди, что часто наблюдается ошибка при использовании браузера Google Chrome, или после того как ноутбук вышел из спящего режима. Ребята, страсти накаляются, короче один чел, походу главняк, написал программерам, ну тем кто сделал Acer Cloud, мол че за дела! И они ответили, ребята, если у вас эта ошибка появляется, то нажмите кнопку Отправить отзыв (Send feedback), которая есть в приложении Acer portal. Вот такой прикол ребята, мы тут должны еще что-то отправлять, писать, ОБЬЯСНЯТЬ йокарный бабай должны, потому что они там не смогли запилить стабильную версию программы AOP Framework, это НЕЗАЧЕТ.. Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Там на форуме один чел так и написал, мол блина ну а где эта программа Acer portal? Ибо даже он не понимает ГДЕ ОНА. Значит вот что ответил представитель, или кто там, ну короче тот кто связывался с программистами. В общем он говорит что это все нормально и что для ноутбука эти ошибки не вредные. Он говорит что он сам не догоняет какого лешего появляется ошибка в AOP Framework. Типа он сам в шоке. И вот он говорит что нужно отправить какой-то отзыв, как это сделать я честно говоря не понял, но вроде можно как-то для этого использовать такие проги как Abphoto, abfiles, abdocs, хотя их названия какие-то странные! Ну и еще он пишет, что конечно еще можно отправить отзыв о работе в программе Acer Portal: нужно нажать правой кнопкой по Acer Portal в панели задач, нажать Отправить отзыв, ну и там задать вопрос и нажать Уведомлять по почте. После этого ваш вопрос отправится в группу приложений Acer BYOC! ЛИЧНО Я МАЛО ЧТО ПОНЯЛ ИЗ ЭТОГО ВСЕГО… Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Вот нашел картинку, тут также какая-то ошибка, но уже другая, тут ошибка в проге Acer Portal:

Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Я нашел еще один материал, ну вернее заметку, и вроде заметка именно на официальном сайте Acer. Там также само пишется что если есть ошибка в AOP Framework, то отправьте отзыв (feedback) при помощи приложения Acer Portal. Потом УДАЛИТЕ AOP Framework и Acer Portal. Потом загрузите Acer Portal, запустите AcerPortal_Setup.exe и установите заново Acer Portal. Вот такой прикол, смотрите вот вам ссылка на этот совет от компании Acer:

Но я НЕ ЗНАЮ будет ли работать эта ссылка завтра или после завтра, поэтому я вам тут выложу картинку где этот совет они написали:

Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Кстати скачать этот Acer Portal или просто Портал Acer можно вот здесь:

Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Кстати, ТАК ВОТ при помощи каких программам можно отправить сообщение о том что происходит ошибка, видите вверху на картинке? Вот что имел ввиду тот представитель на официальном форуме, что вот при помощи одной из этих прог вы можете отправить отзыв о ошибке AOP Framework, НАКОНЦТО ВСЕ СТАЛО НА СВОИ МЕСТА, УРА Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Также я узнал, что ВРОДЕ БЫ ошибка эта возникала из-за программ abPhoto и abMedia. Теперь этой ошибки уже нет, потому что вышли новые версии данных приложений. Еще читаю, что пользователи конечно откровенно недовольны всем этим, что они злятся и все такое, ну а представитель Acer там на официальном форуме извиняется, вот дела! Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Я вам забыл еще кое что написать, короче вы можете возможно что ВРЕМЕННО решить проблему с ошибкой AOP Framework вот как, зайдите в диспетчер задач, там перейдите на вкладку Автозагрузка и ОТКЛЮЧИТЕ ВСЕ ЧТО КАСАЕТСЯ ACER. Отключить несложно, смотрите как это делается:

Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Дальше еще можете сделать вот что, зажмите Win + R, в окошко напишите команду msconfig, там на вкладке Службы будет список служб, внизу будет галочка типа не показывать службы Microsoft, эту галочку поставьте! И потом снимите ГАЛОЧКИ СО СЛУЖБ ACER! Если что, потом все сможете вернуть обратно, как и в диспетчере задач! Вот что где как нажимать, короче вот картинка-подсказка:

Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Какие выводы можно сделать, ребята? Я их сделаю в виде списка:

Все ребята, на этом будем закругляться, надеюсь что вам тут все было понятно, ну а за неточности извините. Удачи вам, заходите еще в гости, буду ждать Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Наверное, вы знаете, что основное занятие программистов — написание кода. При этом они используют различные языки программирования, позволяющие сказать компьютеру, что он должен делать:

Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это
Но есть одна проблема — языки программирования довольно примитивны. С их помощью можно легко выполнять простые действия вроде сложения и умножения. А всё остальное требует долгой и усердной работы. Хотите вывести текст или изображения на экран? Тогда придётся написать много кода, используя самые простые элементы языка.

Microsoft предлагает два вида установщиков: веб-установщик и автономный установщик. Веб-установщик весит меньше 2 МБ, и скачивает все необходимые компоненты во время инсталляции. Поэтому вам потребуется стабильное соединение с интернетом.

Автономный установщик весит около 60 МБ, и не требует доступа к интернету во время инсталляции.

.NET Framework 4.7 Веб-установщик

.NET Framework 4.7 Автономный установщик

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

Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Acer Open Platform (AOP) Framework является частью проекта Acer AcerCloud.

AOP Framework это программа, созданная компанией Acer. Наиболее популярная версия датируется 03.09.2004 г. – более 98% юзеров используют именно эту версию.

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

Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

После инсталляции, продукт добавляет службу Windows, которая предназначена для непрерывной работы в фоновом режиме.

Пакет инсталляции, как правило, создает около 21 файлов и обычно весит где-то 14,72 MB (15,437,830 байт). Созданный программой файл AutoUpdate.dll является средством автоматического апдейта программы, который предназначен для проверки наличия обновлений программного обеспечения и уведомлений об их применении.

По сути Acer Open Platform (AOP) Framework является компонентом, на который возложены вспомогательные функции для работы Acer AcerCloud – облачного хранилища от компании Acer.

Источник

AOP Framework: что это за программа и зачем она предустановлена?

Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Хотите знать, что это за программа такая AOP Framework? Тогда просто дочитайте статью до конца.

У компании Acer есть свое собственное облачное хранилище AcerCloud. Чтобы дать возможность пользователям своих устройств пользоваться услугами этого облачного хранилища, компания Acer устанавливает на свои ноутбуки специализированную программу AOP Framework.

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

Компания Acer также в их числе, поэтому пользователям своих устройств предлагает воспользоваться ее серверами через программу AOP Framework.

AOP Framework — это далеко не новая программа, в ноутбуках Acer ее устанавливают с момента создания AcerCloud, а это, на секундочку, 2012 год. Нет смысла сейчас описывать преимущества облачных технологий. Для простых пользователей — это удобное хранение любой информации и доступ к ней с любых устройств. Для продвинутых пользователей или разработчиков — это возможность размещать в облаках собственные программные продукты и удобная совместная работа над ними.

AOP Framework по умолчанию уже установлена в устройствах компании Acer и позволяет довольно просто взаимодействовать с облаком. В то же время в сети есть много сообщений о нестабильной работе данной программы с некоторыми версиями операционной системы Windows. На что есть 2 рекомендации:

Если вы пользуетесь облачными услугами AcerCloud, тогда просто переустановите саму программу.

Если вы не используете облачные хранилища Acer, тогда просто отключите данную программу или вообще удалите ее с ноутбука. Отключение или удаление программы никак не ухудшит работу самого ноутбука. А в большинстве случаев, наоборот, только улучшит функциональность устройства, потому что сама программа AOP Framework, если у нее включен автозапуск, постоянно работает в фоновом режиме, «пожирая» ресурсы компьютера. Отключая или удаляя AOP Framework, вы высвобождаете ресурсы ноутбука для других программ.

Заключение

AOP Framework — это программа, которая облегчает работу с облачными хранилищами компании Acer. Пользоваться или не пользоваться данной программой — это по вашему усмотрению.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

Аспектно-ориентированное программирование (AOP) или почему мы отказались от использования самого маститого вендора AOP — PostSharp. Часть 3

Описание Fody и MethodDecorator

Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Введение

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

В этой части статьи мы подробно рассмотрим другой AOP-фреймворк — Fody, которым мы решили заменить PostSharp. И попробуем ответить на вопрос, что мы приобретаем и что теряем при этом переходе.

Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Одним из решающим для нас отличием от PostSharp было то, что Fody является бесплатным open source продуктом, использующим MIT-лицензию. Эта лицензия позволяет свободно использовать и модифицировать Fody и в закрытых коммерческих проектах.

Fody и его плагины

Fody, как и PostSharp, выполняет обработку сборок после их компиляции. Схематично, это изображено на рисунке ниже. Этот рисунок аналогичен рисунку для PostSharp, с тем лишь отличием, что PostSharp здесь заменен на Fody.

Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

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

Для реализации логики постобработки Fody использует плагины. Плагины, как правило, представляют собой отдельные проекты со своими лицензиями, и, как и Fody, выложенные на GitHub.

Перечислим наиболее примечательные, на наш взгляд, плагины:

· MethodDecorator, на котором мы подробно остановимся чуть позже;

· PropertyChanged, генерирует код для реализации интерфейса INotifyPropertyChanged;

· MethodCache, генерирует код, который кэширует результаты вызовов методов.

Помимо этих плагинов существует десятки других. Полный и актуальный список плагинов доступен на GitHub-странице Fody: https://github.com/Fody/Fody#addins-list

Использование Fody

Для того, чтобы использовать Fody в своём проекте достаточно:

1. Добавить в проект NuGet-пакет Fody.

2. Добавить в проект отдельные NuGet-пакеты необходимых плагинов.

3. Добавить в корневой каталог проекта или солюшена файл FodyWeavers.xml такого содержания:

Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Где WeaverName — это название плагина.

После этого достаточно применить в исходных кодах проекта кастомные атрибуты, которые предоставляют плагины, к своим классам, и при следующей компиляции эти классы будут обработаны Fody.

Возможности плагина MethodDecorator

Как уже было сказано выше, Fody сам по себе не реализует никакой логики постобработки, а только обеспечивает передачу управления в в свои плагины.

Поэтому при замене PostSharp недостаточно рассматривать только Fody в отдельности, а необходимо еще подобрать и плагины, реализующие необходимую функциональность.

MethodDecorator — плагин Fody, реализующий функциональность, аналогичную аспекту OnMethodBoundaryAspect у PostSharp, а именно — добавление своей логики в начало и конец метода.

Для примера, приведем код уже знакомого нам атрибута TraceAttribute, адаптированного под MethodDecorator:

Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Сразу можно отметить, что в новой реализации TraceAttribute сохранены названия методов OnEntry и OnExit, и оба эти метода сохранили свою семантику.

Но на этом сходства заканчиваются. Отметим следующие различия:

1. Для сохранения имени метода используется отдельное поле _methodName, значение которого задается в новом методе Init, специфичным для MethodDecorator.

2. В сигнатурах методов OnEntry, OnExit нет параметров.

А теперь рассмотрим, какой код генерирует MethodDecorator для этого атрибута:

Aop framework что это. Смотреть фото Aop framework что это. Смотреть картинку Aop framework что это. Картинка про Aop framework что это. Фото Aop framework что это

Что можно отметить из приведенного фрагмента кода?

В целом, структура генерируемого кода внутри метода напоминает то, что генерирует PostSharp. Но важное отличие от PostSharp состоит в том, что на каждый вызов метода теперь будет создаваться отдельный экземпляр аспекта. При этом применяется механизм reflection, при использовании которого всегда возникают вопросы о производительности. В данном случае, если бы этот метод использовался внутри гигантского цикла, то по сравнению с PostSharp, его производительность ухудшилась бы на порядки.

Преимуществом такого подхода можно было бы назвать отсутствие необходимости думать о многопоточности при реализации аспекта. В частности, при реализации аспекта можно свободно использовать поля класса для сохранения состояния между вызовами методов Init, OnEntry, OnException. Но при переносе кода адаптированного под PostSharp, где проблемы с многопоточностью уже решены, это не является преимуществом.

Подводя итог, в целом, описанная выше функциональность и является единственной возможностью MethodDecorator. И хотя она позволяет реализовать аспекты, сделанные на основе OnMethodBoundaryAspect из PostSharp, при этом необходимо учитывать разницу в генерируемом коде и то, как она может сказаться на производительности приложения.

Другие возможности Fody+MethodDecorator?

Если вспомнить предыдущую часть статьи, помимо OnMethodBoundaryAspect в наших проектах используются и атрибуты, сделанные на основе аспекта MethodInterceptionAspect. Плюс код некоторых аспектов опирался на уникальную возможность PostSharp: инициализацию аспектов во время компиляции через метод.

Если подобная функциональность в плагинах Fody? Ответ: нет.

Для наглядности, приведем табличку, где приведем используемые нами возможности PostSharp и их аналоги в Fody (если они есть):

Возможности PostSharp и аналог в Fody

2. Возможность инициализации на этапе билда (метод CompileTimeInitialize) — Аналога в Fody нет

3. Аспект MethodInterceptionAspect — Аналога в Fody нет

Поэтому при переходе на Fody встает вопрос и о том, каким образом заменить данную функциональность из PostSharp?

Что дальше?

При прочтении данной статьи может сложиться впечатление, что перспективы перехода с PostSharp на Fody выглядят сомнительными. Fody не только не покрывает используемые нами возможности PostSharp, но и делает это хуже для аналогичной функциональности.

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

Перед нами, прежде всего, встали такие проблемы:

1. «Научить» MethodDecorator генерировать более оптимальный, с точки зрения производительности, код, аналогично PostSharp.

2. Придумать, как сделать альтернативу MethodInterceptionAspect для Fody.

В следующей части мы подробно рассмотрим, как реализованы плагины для Fody, заглянем под «капот» плагина MethodDecorator и продемонстрируем решение указанных выше проблем.

Ссылки

Автор статьи: Марат Вильданов, разработчик, ITA Labs

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *