Я читал, и теперь видел две разные реализации шаблона Unit of Work. В первом шаблоне репозиторий обращается к единице работы с объектом домена.
Другая реализация имеет уровень Service, регистрирующий объект домена как измененный:
Я предполагаю, что мой вопрос, каковы преимущества / недостатки каждого? Я знаю, что есть много ответов, не предоставляя некоторый код реализации для репозиториев / картостроителей / и т.д. ... но в целом, кто / что должен действительно отвечать за "обновление" UoW и последующую работу с ним?
Я думаю, что если вы позволите хранилищу обрабатывать его, он должен быть предоставлен как инъецируемый интерфейс к хранилищу (ам), чтобы одно и то же UoW могло охватывать несколько хранилищ (то есть несколько объектов домена) ...
Если сервисный уровень обрабатывает его, то вы «застряли» только с одной реализацией UoW на вызов сервисного уровня (например, ServiceLayer.AddCustomer (customer)).
В веб-мире я не вижу, чтобы несколько сервисных слоев вызывались для разных доменных объектов ... но, возможно, в не-сетевом мире я могу.
Я полагаю, что в конечном итоге что-то должно вызываться «commit ()», поэтому наиболее целесообразно связать это с сервисным уровнем.
Спасибо,
Mike