Доступ к библиотекам классов, управляемых доменом, из службы WCF - PullRequest
0 голосов
/ 09 января 2011

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

Company.DataTransferObjects
--AdminDTO.cs
--CustomerDTO.cs
Company.DataTransferObjects.Helpers
Company.Infrastructure.DomainServices
--Admin
---AdminService.cs
--Customer
--CustomerService.cs
Comapny.Infrastructure.Repositories
--Admin
---AdminRepository.cs
--Customer
---CustomerRepository.cs
Company.Domain
--Admin
---Admin.cs
---IAdminRepository.cs
--Customer
---Customer.cs
---ICustomerRepository.cs
Company.WebServices
--WebApi.cs
--IWebAPI.cs

Мои вопросы следующие:

1) Моя установка выглядит правильно для вас?

2) DTO.С точки зрения веб-службы, где следует создавать DTO?Должен ли я создавать DTO в независимой библиотеке классов и ссылаться на них из WebService или они должны быть частью моего проекта веб-службы?

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

3) Доменные службы.Мне все еще трудно сосредоточиться на цели доменных служб.Это то, что демонстрирует функциональные возможности, которые не затрагивают базу данных и требуют методов хранилища, к которым нет прямого доступа?Другими словами, является ли доменная служба методом, который манипулирует несколькими методами репозитория?Итак, если моя служба WCF вызывает данные, к которым можно получить доступ через метод репозитория, то это то, что она должна делать.Но если для этого требуются данные, являющиеся результатом нескольких методов репозитория, то это следует делать через доменные службы?

4) Где шаблон фасада вписывается в архитектуру DDD?

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

Спасибо!

1 Ответ

0 голосов
/ 09 января 2011

в обратном порядке по вашим вопросам:

4) Ваши веб-сервисы, по сути, являются фасадом вашего домена.

3) Доменные сервисы тоже могут поражать БД, ониобычно основной API, который использует код, должен использовать для связи с вашим доменом все, что связано с более чем одной сущностью, или вещи, представляющие серию транзакционных шагов.Некоторые люди считают репозитории особым случаем доменных служб (а не как или / или).Я обычно считаю, что мои Сервисы являются открытым интерфейсом моего домена.

2) DTO обычно полезны, когда вы (или планируете в конечном итоге) пересекать физические границы.Каждый раз, когда вы думаете, что вам может понадобиться что-то сериализовать (например, в сообщение SOAP), вы должны подумать о DTO.Так что в вашем случае ваш проект WCF будет использовать DTO в качестве своих DataContracts, но внутренне он может использовать ваши доменные объекты (если вы не ожидаете, что ваш домен будет находиться в другом домене приложения или в другом физическом блоке).

1) Это все личные предпочтения;ваш макет не выглядит необоснованным, хотя он отличается от того, как я обычно организую.

...