Куда девается модель?

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

-GUI
-DataAccess
-BusinessLogic
-BusinessObjects

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

мысли?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
274
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

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

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

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

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

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

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

  • UI
  • Основной
  • Упорство
  • Тесты

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

Модель домена, доменные службы, простые утилиты и методы расширения, применимые к ядру. Впрочем, ничего об инфраструктуре.

Ben Scheirman 16.11.2008 19:28

Я склонен иметь

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

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

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

leora 16.11.2008 18:55

i agree that the model objects go into POCO. so lets say i have an Order object. My question is where do i have the class that stores a collection of orders ??

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

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

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

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

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

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=1BWAPTN7&rd1&pf_rd_r=1BWAPTN7&rd1&pf_rd_r=1BWAPTN7&rd1&d=JBWAPT_D1&rd5_05_04_05_05_04_05_04_05_08

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