2008-10-16 4 views
2

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

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

ответ

2

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

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

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

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

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

+0

Согласен. 1 "интерфейс", чтобы беспокоиться и гибко добавлять других, если это необходимо. – jim 2008-10-16 21:52:49

Смежные вопросы