Управление несколькими механизмами персистентности - PullRequest
2 голосов
/ 16 октября 2008

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

Очевидная архитектура, как мне кажется, состоит в том, чтобы поместить все объекты персистентности для одной конфигурации в один пакет, а все объекты для другой конфигурации - в другой пакет. Но кажется, что этот план может закончиться большим количеством различных пакетов и проблемой управления пакетами. Есть ли другие хорошие решения этой проблемы?

1 Ответ

2 голосов
/ 17 октября 2008

Я реализовал это в своей компании, создав многоразовую библиотеку репозитория.

По сути, я создал абстракцию репозитория с интерфейсами, которая выполняет базовые операции CRUD над переданным объектом или набором объектов. Затем я реализовал это, используя различные механизмы сохранения. Библиотека может сохранять любой объект в XML, JSON, Binary или SQL. Все эти репозитории используют одни и те же интерфейсы, поэтому весь код, который должен взаимодействовать с репозиторием, использует интерфейсы, а не конкретные реализации. Каждая реализация, как и абстракции, живет в своей собственной библиотеке, поэтому вам нужно только распространять библиотеку абстракций и любую реализацию, в которой нуждается ваша программа.

Ничего не нужно реализовывать в объектной модели, потому что она обрабатывает общие объекты, используя Reflection (библиотека написана на C # для .Net).

Я также оставил репозитории открытыми для расширения, и в некоторых приложениях материал на основе Reflection по умолчанию заменяется строго типизированными репозиториями, которые более эффективны, но все еще основаны на общих реализациях.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...