Реализация бизнес-объектов для приложения WinForms MVP - PullRequest
1 голос
/ 02 сентября 2011

Я строю новую систему с нуля и работаю над дизайном приложения.Я смотрю на жизнеспособные подходы для моделирования моих объектов Domain.

Некоторые особенности проекта - это будет довольно большое приложение WinForms для ввода данных, интегрированное в ESRI ArcMap (приложение ГИС).Доступ к данным должен осуществляться через собственные слои доступа к данным ArcMap. Данные извлекаются и сохраняются с помощью доступа в стиле курсора.Это не проблема для получения данных, но, насколько я знаю, это исключает инструменты ORM, такие как Entity Framework и NHibernate, поскольку я не могу напрямую взаимодействовать с базой данных.

Приложение WinForms будет следовать MVP Supervising Controller pattern - представление будет привязано к модели.Ведущий также будет модифицировать модель.Таким образом, объект Domain должен поддерживать следующее:

  • Уведомление об изменении
  • Отслеживание изменений.Как минимум, я хотел бы знать, изменилась ли моя модель.

Мои варианты пока:

  1. Запись POCOS от руки .+ Плюсы и плюсы:
    • + Должно быть выполнимым
    • + Может вместить бизнес-логику
    • + Привязка
    • -Много ручной работы
      • -Изменение уведомлений через интерфейс INotifyPropertyChange.
      • -Изменение отслеживания через свойство IsDirty, которое необходимо поддерживать вручную.
  2. ADO.NET DataSets, завернутые в POCO .+ Плюсы / -Конусы:
    • + Изменить уведомление "бесплатно"
    • + Изменить отслеживание "бесплатно"
    • + Bindable
    • -Чувствует видгрязный

Что я исключил:

  • Entity Framework - я нахожусь на .net Framework 3.5, поэтомунет поддержки Code First.Насколько я знаю, обработка логики домена очень грязная - обработчики событий.

Есть ли другие хорошие варианты?Возможно генерация кода (какие-либо предложения по инструментам?), Какой-то Framework?Слова Мудрости, совет?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2014

Читать эту книгу Это даже больше, чем вы должны знать

0 голосов
/ 05 сентября 2011

Мои POCO - это просто "тупые" объекты передачи данных, и они не содержат никакой бизнес-логики. Они также не являются моими моделями, поскольку представляют собой еще один набор тупых объектов, которые ближе к моему интерфейсу. Я просто закачиваю свои DTO, заполненные данными, на своем уровне доступа к данным, передаю их на мой сервисный уровень для обработки бизнес-логики, но они передаются только на мои презентаторы / контроллеры, чтобы накачать достаточно информации, которая мне нужна, в мой интерфейс через модели , Для вашего сценария, я думаю, это было бы более логично, так как вам нужно пройти через слой доступа к данным ArcMap. Вы можете сохранить данные на уровне презентации и отслеживать их там.

...