Добрый день!
Столкнулся с архитектурной проблемой при разработке приложения с использованием
— WPF (для UI)
— объектнойе СУБД db4o (в качестве DAL)
Суть проблемы в следующем.
Так или иначе существуют классы, моделирующие предметную область (Domain).
В идеале они ничего не должны знать про UI и DAL.
Для эффективной связки Domain с UI в случае .NET кроме собственно реализации реакций на команды (сообщения)
необходима прослойка, в которую могут войти:
(1) нотификация об изменения свойств объектов (реализация INotifyPropertyChanged)
(2) ObservableCollection и BindingList для коллекций
(3) возможности копирования состояния объекта для реализации Cancel (Undo)
как для отдельных объектов, так и для коллекций.
Валидацию не включаю — она может быть в Domain.
Все перечисленное должно быть в этой "прослойке", если же эти возможности добавлять
в Domain, то возникает проблема с DAL, поскольку объектному DAL-у все эти возможности и связанные с ними
поля-данные не нужны..
Покопался в интернет, нашел, библиотеку csla. Все вроде как хорошо, но в суловиях объектного хранилища
пришлось бы вести две параллельные версии классов.. Одни — "чистый Domain", другие — Domain c доп.
возможностями (1)-(3)..
В итоге все-таки добавил часть фич, а конкретно (1) и (3) в Domain, но внутренний дискомфорт остался.
Поделитись своим опытом!
Как жить-то?
С уважением,
Сергей.