Мне нужны некоторые ощутимые рекомендации по реализации списка объектов-значений в моем распределенном приложении DDD. Вот что у меня есть:
Мое приложение основано на приложении-службе RESTful, работающем на сервере, предоставляющем услуги нескольким клиентским приложениям. Одна из моих сущностей, Клиент, имеет свойство Region, которое содержит ссылку на один из многих типов значений Region. Список регионов хранится в серверной базе данных, но мы НЕ предоставляем интерфейс для поддержки этого списка. Любые изменения будут внесены непосредственно в базу данных (поскольку это будет происходить редко), и, скорее всего, это будут изменения имени, а не добавление / удаление. В некоторых случаях, например, при экспансии на новый рынок, может быть добавлен новый элемент, поэтому необходимо, чтобы список был «динамическим».
При редактировании записи Customer в одном из клиентских интерфейсов мне нужно отобразить список регионов в раскрывающемся списке с выбранным элементом, связанным со свойством Region объекта Customer домена.
Я могу справиться с пользовательским интерфейсом, но не совсем понятно, как список регионов должен быть получен и поддерживаться на уровне моего домена. У меня есть отдельный RegionRepository или список должен быть получен из CustomerRespository? Что, если Customer был единственным объектом, который ссылался на объект Value? Если бы несколько объектов ссылались на VO, это изменило бы подход?
На самом деле у меня есть много таких поисков, и я не хочу создавать отдельный репозиторий (и веб-сервис) для каждого, если это не рекомендуется. Я думал об одном сервисе Lookup для API, но стесняюсь его реализовывать, пока не пойму, какое влияние окажет этот маршрут.
Хотя элементы списка являются «ключевыми», они не соответствуют определению сущности с их собственной идентификацией и не существуют, кроме как в контексте объекта родительского домена (в данном случае, Customer). Итак, я предполагаю, что они являются объектами значения, и это нормально. Но, опять же, мне неясно, как я должен структурировать свое приложение, чтобы клиенты могли получать список виртуальных организаций для сценария, подобного тому, что я описал выше.