Если для одной и той же организации будет создан контракт на несколько данных - PullRequest
2 голосов
/ 20 мая 2019

По замыслу это хорошая идея, чтобы создать несколько контрактов данных для одного и того же лица?

Например, у меня есть таблица с именем [Person], в начале есть только два поля: ID и Имя. Я использую nHibernate, чтобы отобразить сущность и пометить ее как контракт данных, чтобы предоставить исходную сущность клиенту.

При дальнейшем развитии в таблицу добавляются все новые и новые столбцы: рост, пол, адрес ... бла-бла-бла

Когда клиент пытается получить объект Person, также доставляется большой объект с большим количеством бесполезных свойств.

Это хороший дизайн, что я создаю другой класс [PersonWithNameOnly] или такой как [PersonLite] для некоторых методов, которые предоставляют облегченный объект этого dto? Я беспокоюсь, что это создаст много данных контракта.

1 Ответ

1 голос
/ 20 мая 2019

Да . Рекомендуется использовать ViewModel, содержащую только то, что требуется клиенту.
Принцип заключается в работе только с данными, с которыми должен работать текущий уровень, например архитектура микросервисов .

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

Именно поэтому люди пытаются предоставить решения этой проблемы, такие как GraphQL , которая может предоставить только те поля, которые требуются клиентучтобы получить.

Надеюсь, это немного яснее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...