Я строю новую систему с нуля и работаю над дизайном приложения.Я смотрю на жизнеспособные подходы для моделирования моих объектов Domain.
Некоторые особенности проекта - это будет довольно большое приложение WinForms для ввода данных, интегрированное в ESRI ArcMap (приложение ГИС).Доступ к данным должен осуществляться через собственные слои доступа к данным ArcMap. Данные извлекаются и сохраняются с помощью доступа в стиле курсора.Это не проблема для получения данных, но, насколько я знаю, это исключает инструменты ORM, такие как Entity Framework и NHibernate, поскольку я не могу напрямую взаимодействовать с базой данных.
Приложение WinForms будет следовать MVP Supervising Controller pattern - представление будет привязано к модели.Ведущий также будет модифицировать модель.Таким образом, объект Domain должен поддерживать следующее:
- Уведомление об изменении
- Отслеживание изменений.Как минимум, я хотел бы знать, изменилась ли моя модель.
Мои варианты пока:
- Запись POCOS от руки .+ Плюсы и плюсы:
- + Должно быть выполнимым
- + Может вместить бизнес-логику
- + Привязка
- -Много ручной работы
- -Изменение уведомлений через интерфейс INotifyPropertyChange.
- -Изменение отслеживания через свойство IsDirty, которое необходимо поддерживать вручную.
- ADO.NET DataSets, завернутые в POCO .+ Плюсы / -Конусы:
- + Изменить уведомление "бесплатно"
- + Изменить отслеживание "бесплатно"
- + Bindable
- -Чувствует видгрязный
Что я исключил:
- Entity Framework - я нахожусь на .net Framework 3.5, поэтомунет поддержки Code First.Насколько я знаю, обработка логики домена очень грязная - обработчики событий.
Есть ли другие хорошие варианты?Возможно генерация кода (какие-либо предложения по инструментам?), Какой-то Framework?Слова Мудрости, совет?