2010-02-16 2 views
6

В приложении для блогов, разработанном с использованием управляемого доменом конструкцией, объект «Почта» имеет соответствующую коллекцию объектов тега.Проект, управляемый доменом - API внешних данных в качестве хранилища или службы

При создании сообщения (например, заполнение объекта из пользовательского интерфейса) я хотел бы вызвать сторонний API через REST, который принимает содержимое сообщения и извлекает семантические теги (link text) для объединения.

Главная Вопрос: Что это лучший способ для разработки этого ...

Является ли это лучше всего разработан таким образом, что сообщение будет организация вызова службы домена, таких как PostServices.GetTags (PostContent), передавая ее содержание и возвращая список тегов.?

** PostServices.GetTags затем будет взаимодействовать с REST API через дополнительный класс-оболочку.

Или должен ли сторонний API быть упакован как репозиторий?

Должна ли функция Post.GenerateTags() не существовать внутри объекта домена?

Другие вопросы:

1: Я также читал, что это не хорошая практика, чтобы иметь домен сущность обратный с сервисом домена. Это правда?

2: Можно ли получить ссылку на службу домена PostServices с помощью метода создания фабрики. например ...

IPostService PostService = ServiceUtil.GetPostService(); return PostService.GetTags (Post.content);

3: Допустимо ли иметь услугу домена, связанную с сторонним api?

4: Если объект домена просто знает, как обращаться с тегами, полученными с помощью прикладного уровня, который вызвал API REST.

Медленно пытаясь окунуться в DDD, однако я не могу найти примеров того, как реализовать такие вещи.

ответ

3

В приложении «Blog» сообщение представляет собой объект, а тег - объект значения. Тег не имеет идентичности. Вы должны иметь:

  • PostsRepository
  • Сообщения (Entity)
  • Tag (значение объект)

Почтовый получил список тегов.

Вопросы:

1: Я также читал, что это не хорошая практика, чтобы иметь домен сущность обратный с сервисом домена. Это правда?

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

2.: Можно ли получить ссылку на службу домена PostServices с помощью метода создания фабрики. например .IPostService PostService = ServiceUtil.GetPostService(); return PostService.GetTags (Post.content);

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

3: Допустимо ли иметь услугу домена, связанную с сторонним api?

Я не рекомендую вам это, но это приемлемо.

К сожалению, я не понимаю Вопрос 4.

Посмотрите эту ссылку. Надеюсь, это вам поможет.

https://stackoverflow.com/questions/901462/ddd-where-is-it-most-appropriate-to-get-a-list-of-value-objects/901562#901562

+0

Спасибо за ответ, но я все еще немного неясно. Вы предполагаете, что объект Post использует фабрику для получения ссылки на службу домена, которая поставляет теги. Также теги уникальны в моей системе и идентифицируются с помощью первичного ключа, означает ли это, что они являются сущностью? – sjb101

+0

Я только что нашел следующую ссылку, которая предлагает хорошее объяснение объектов Value ... http://tech.groups.yahoo.com/group/domaindrivendesign/message/6290 Таким образом, тег должен быть объектом ценности. В любом случае, вернемся к главному вопросу выше ... – sjb101

+0

Нет, сообщение имеет список тегов. И вы можете получать теги из PostsRespository. Блог - это простой домен. У вас есть только сообщения, теги и комментарии. Я не понимаю, зачем вам услугу домена. Какова ответственность службы домена yout? – yeraycaballero