Вопрос

У меня есть решение VS со следующими проектами.

-Графический интерфейс пользователя
-Доступ к данным
-Бизнес -логика
-Бизнес - объекты

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

мысли?

Это было полезно?

Решение

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

Другой вариант разделения функциональности на отдельные развертываемые блоки (сборки) заключается в том, чтобы команды могли функционировать более независимо.Разделяйте проекты в зависимости от частоты развертывания и автономности команды.

Наконец, я видел несколько проектов, в которых объекты модели вызывались удаленно (например, с помощью .NET remoting) и обслуживались на сервере приложений отдельно от веб-сервера.Я действительно не рекомендую такой подход, но это вариант.

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

Тем не менее, в 99% случаев у меня есть эти проекты:

  • Пользовательский интерфейс
  • Ядро
  • Настойчивость
  • Тесты

Но вы все равно должны учитывать потребности вашего проекта.

Другие советы

Я, как правило, имею

  • Justice.Project.Core — модель предметной области POCO — т.е. бизнес-объекты)
  • Justice.Project.Data — NHibernate сопоставления и т.д., где находится схема сохранения
  • Justice.Project.Services — репозитории, а также бизнес-логика, которые не могут быть легко помещены в бизнес-объекты
  • Justice.Project.(Web|UI)

Модель является – или должно быть – бизнес-объекты.

В моих решениях есть 3 (не тестовых) проекта

  1. Пользовательский интерфейс - очевидный
  2. Ядро - все объекты домена и бизнес - логика
  3. Доступ к данным - шаблон хранилища для заполнения / сохранения объектов Модели

я согласен с тем, что объекты модели переходят в POCO.итак, допустим, у меня есть заказ объект.Мой вопрос в том, где у меня есть класс, в котором хранится коллекция заказов??

Это зависит от вашего бизнеса.Скорее всего, у вас будет коллекция заказов в нескольких разных местах...

В вашем объекте customer у каждого клиента должна быть коллекция заказов, так что у вас там будет один.

Если у вас есть отделы, у каждого отдела должна быть коллекция созданных ими заказов.

Если у вас есть склады, на каждом складе может быть набор заказов, за выполнение которых они несут ответственность.

У некоторых объектов нет родителя, и это нормально.В моей системе у нас есть клиенты.Реальным владельцем клиентов являемся мы (бизнес), но в системе нет объекта "Мы".Если вы хотите получить список ваших клиентов (в нашем случае), мы запрашиваем его в репозитории.

IRespoistory<Client> repository = new Repository<Client>();
IList<Client> clients = repository.GetAllClients();

То же самое может относиться и к вашим заказам.

Я бы рекомендовал ознакомиться с этой книгой DDD: http://www.amazon.com/gp/product/0321268202/ref=s9k2a_c1_at1-rfc_p-3237_p?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-1&pf_rd_r=1BWAPTN787CTZXJDV5BA&pf_rd_t=101&pf_rd_p=463383351&pf_rd_i=507846

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top