Abstract

The problem of complexity of developing and supporting the software cross-cutting concern and its solution using the aspect-oriented approach is examined. The complexity of aspect-oriented programming application in object-oriented programming languages is described. The problem of dependency of the declaration syntax of aspects and the method of their integration is investigated. The architecture that will provide the independence of the syntax of declaration and introduction of aspects in object-oriented programs is proposed. For separation, an urban design pattern that unites declaration of the aspect and its integration method is used. The system displays the classical entities of AOP in the object structure, which facilitates syntax mastering. Three methods for declaring aspects are developed, namely declaration using inheritance from a base class, template class generalization and flexible aspect creation at run time. For integration at compile time, a special integration module and the Roslyn compiler modification, which ensures implementation of the aspect configuration system and introduces advice invocation points in a code are developed. For integration at run time without using the dependency injection container, helper methods for creating proxy classes are designed. Also, modules for popular dependency injection containers, which allow integration by means of these containers are developed. Testing of the developed system, which showed a significant reduction in the size of a source code is carried out. The most pronounced reduction was in large enterprise-level systems. When using introduction at compile time, performance drop of programs is not observed. When using integration at run time, performance losses do not exceed those when using a similar proxy class.

Highlights

  • Аналіз літературних даних і постановка проблемиОб’єктно-орієнтовані мови програмування з легкістю дозволяють реалізувати такі сутності АОП, як аспект, порада, точка з’єднання та зріз, але не представляють стандартних засобів реалізації впровадження.

  • Впровадження на етапі компіляції має такі переваги, як висока швидкодія та можливість впровадження в будь-яких місцях програми [5].

  • Для мови програмування C# такий підхід використовує фреймворк PostSharp.

Read more

Summary

Аналіз літературних даних і постановка проблеми

Об’єктно-орієнтовані мови програмування з легкістю дозволяють реалізувати такі сутності АОП, як аспект, порада, точка з’єднання та зріз, але не представляють стандартних засобів реалізації впровадження. Впровадження на етапі компіляції має такі переваги, як висока швидкодія та можливість впровадження в будь-яких місцях програми [5]. Для мови програмування C# такий підхід використовує фреймворк PostSharp. Незважаючи на численні недоліки, відсутність необхідності модифікації компілятора робить метод впровадження на етапі компіляції досить популярним, особливо враховуючи те, що більшість програм рівня корпорації використовують принцип інверсії залежностей [2]. Зазвичай АОП фреймворки такого типу являються модулями для конкретних Inversion of control (IOC) контейнерів, що унеможливлює зміну контейнера, без зміни аспектів. Оскільки обидва методи мають як переваги так і недоліки, існують бібліотеки для впровадження АОП як на етапі компіляції, так і на етапі виконання [11]. Способи інтеграції на етапі виконання повинні підтримувати DI фреймворки, а також надати спосіб інтеграції без використання DI

Мета і завдання дослідження
Архітектура рішення проблеми
Процес розробки системи
Модулі та розгортання системи
Приклад використання фреймворку
Висновки
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call