-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Применение к ORM принципов Dependency Injection #239
Comments
Пункт 5
На грани невероятного для сложных приложений из-за отсутствия поддержки именованных регистраций и, как следствие, возможности построения сложного графа зависимостей. На мой взгляд, целевым состоянием ORM должно быть container-agnostic реализация, а unity можно продолжить использовать, в конце концов оно не содержит уязвимостей и проверено временем. |
"а unity можно продолжить использовать, в конце концов оно не содержит уязвимостей и проверено временем." Про Unity уже шло обсуждение https://github.com/orgs/Flexberry/discussions/16 в том году. |
Выявлено, что в зависимостях ODataService есть проект UserSettingsService Отсюда появилось два побочных эффекта:
Однако регистрация фабрик не поддерживается файлом конфигураций. Соответственно, настройку юнити в части сервисов данных потребуется вынести в код. Если побочные эффекты совсем нежелательны, то можно в FlexberryUserSettingBS вставить костыль и при Startup задавать в public static поле FlexberryUserSettingBS разрешение зависимости. |
Самое главное при переработке учесть, что бизнес-сервера не должны отваливаться если программист что-то забудет. Давайте придумаем такую систему, которая будет подстраховывать программистов, когда есть BS-ы в иерархии наследования объектов данных, которые находятся в разных сборках (в разных NuGet-пакетах). Грубо говоря, если я поставляю некоторый NuGet-пакет Security.Objects в котором есть сборка с объектами и бизнес-серверами, то кто бы ни применил этот пакет - он всегда получит работающие бизнес-сервера, даже если не знает о их существовании. Надо чтобы это так и было при переходе на новый принцип DI. |
Данное issue формируется на основании rfc Flexberry/rfcs#23.
Цель
Изменить ORM для корректного применения принципов DI.
Функциональные требования
Требования к реализации
Взять ПР в ОРМ #181 по Dependency Injection и попробовать:
0) обновить ветку до свежей develop-версии.
Потом
6) Целенаправленно по аналогии с ОРМ изменить прямые инъекции в ODataService (принять ПР Flexberry/NewPlatform.Flexberry.ORM.ODataService#51, если не сделано ранее).
7) Проверить и доделать пожелания по DI из RFC Flexberry/rfcs#23.
Вероятно, новая версия ORM будет 8.0.0, поскольку совместимость критично нарушится.
Документация
Документацию потребуется изменить, оставив только "правильные" варианты использования инъекций.
The text was updated successfully, but these errors were encountered: