МОДЕЛЮВАННЯ ТА РЕАЛІЗАЦІЯ ПРЕДМЕТНИХ ПОДІЙ В ПРЕДМЕТНО-ОРІЄНТОВАНІЙ АРХІТЕКТУРІ НА ПЛАТФОРМІ .NET CORE (Computer systems and information technologies, 2023)
Архітектура програмного забезпечення, в центрі якої знаходиться модель предметної області, здатна принести значні переваги в довгостроковій розробці та підтримці систем зі складною логікою предметної області в порівнянні з іншими типами архітектур. В той же час предметно-орієнтоване проектування та підходи до програмної реалізації систем є відносно новими концепціями та продовжують розвиток в застосунку до різних платформ, технологій та мов програмування, та становлять значний інтерес у проектувальників та розробників. В представленій роботі розглянуто існуючі підходи до моделювання та реалізації предметних подій на платформі .NET Core в предметно-орієнтованій архітектурі, що є одним з найновіших шаблонів. Існує два підходи до реалізації поведінки предметних подій: миттєве та відкладене розповсюдження подій. Ці два підходи проаналізовано та детально описано їх особливості. Описана реалізація миттєвого розповсюдження подій предметної області в межах транзакції виконання команди в архітектурі CQRS. Дана реалізація дозволяє позбавитись зовнішніх залежностей, досягти чистоти сутностей домену, оскільки позбавляє необхідності у впровадженні сервісів, репозиторіїв у сутності, а також дозволяє запобігти витокам пам’яті та безпечна при багатопотоковому режимі використання. Схематично зображено абстрактний процес надходження зовнішньої команди в модель предметної області, яка спричиняє зміну стану агрегату та розповсюдження побічних ефектів з подіями домену. Цей процес враховує можливості каркасу об’єктно-реляційного відображення Entity Framework для отримання об’єктів контексту, що були змінені в процесі роботи. Весь стек об’єктів, що задіяні в цій діяльності, розташовані в пам’яті спільного процесу, а взаємодія відбувається в синхронному режимі. Для концептуального виявлення подій та агрегатів використовують техніку штурм подій, особливості якої розглянуті в роботі.
Keywords: предметно-орієнтоване проектування; DDD; проектування складних проблемних областей; події предметної області