В чем разница между службой DDD и службой WCF? - PullRequest
1 голос
/ 22 декабря 2010

У меня есть библиотека классов DDD. В нем у меня есть следующая структура:

> Core
> - DataAccess ( my LINQ repositories)
> - Domain ( my data objects)
> - Impl (my services)

Я недавно добавил проект WCF в свое решение. Этот проект будет подвергать веб-методы JSON клиенту iPhone. Методы WCF не слишком сложный - GetCustomers / GetCustomerDetails / GetAlerts GetAlertDetails / GetProblems / GetProblemDetails / GetInventory / GetInventoryDetails, GetDataPoints / GetDataPointDetails / и т.д ...

Что я замечаю, так это то, что большинство методов в WCF моим уровнем услуг в моей модели DDD. Итак, я обнаруживаю, что делаю много такого кода:

public List<Alert> GetAlerts()
{
    AlertSerice _as = new AlertService;
    List<Alert> alerts = _as.GetAlerts();

    return alerts;
}

Мне это не подходит. Мне интересно, если я должен покончить с моей папкой Impl (со всеми службы DDD) и перекомпилируйте. Затем добавьте DLL в качестве ссылки в моем проекте WCF и кодируйте мой предыдущие службы DDD как методы WCF?

Действительно ли WCF просто нужны уровни Domain и DataAccess?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 22 декабря 2010
AlertSerice _as = new AlertService;
List<Alert> alerts = _as.GetAlerts();

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

В DDD доменные службы используются, когда в операции должны участвовать несколько совокупных корней.

Кажется, что GetAlerts - это функциональность, которая явно принадлежит AlertRepository (и не просто принадлежит, аосновные функции этого репозитория).

Что касается служб WCF, то они являются общедоступной конечной точкой.Их задача - получать запросы от клиента и выполнять команды в домене или запросы.В центре внимания такого рода услуг обычно находится перевод - от примитивных типизированных входных параметров до DTO для вывода.

0 голосов
/ 22 декабря 2010

С архитектурной точки зрения использование отдельного сервисного уровня для предоставления ваших данных обеспечивает уровень абстракции и изоляцию для защищенных и внутренних методов, вы можете просто подключить другой обработчик сервиса (конфигурация сервиса), чтобы представить данные в двоичном видеили формат XML.Там, где вам нужно тратить свое время, необходимо четко определить уровни абстракции и обеспечить реализацию правил доступа к коду и обеспечения безопасности между уровнями, открытыми для уровня обслуживания.

...