Допустим, мне нужно вызвать несколько служб, которые вставляют некоторые записи с EF в ту же транзакцию, что и для вставки Person
и Unit
.WCF TransactionScope в клиенте или услуге
Я неопределенный для, должен ли я создать новый контракт операции под названием AddPersonAndUnit
и использовать TransactionScope
в этом методе и назвав его от клиента или не создаю дополнительный метода и просто использовать TransactionScope
в клиенте (ASP.NET MVC) и звоните AddPerson
и AddUnit
, которые уже существуют.
Для единой ответственности и перемещения всей бизнес-логики в уровень обслуживания, я считаю, что определение дополнительного метода в уровне обслуживания и вызов его с клиента представляется лучшим выбором, но с другой стороны простое обращение к этим множественным методам от клиента требует меньше усилия.
Как вы относитесь к хорошему выбору дизайна? Считаете ли вы, что сделка с транзакциями в клиенте «плохая»? Стоит ли создавать новый метод для этого?
WCF транзакция использует MSDTC, который традиционно трудно настроить и поддержку. Мой совет не использует его без причины. –
Нам нужно использовать MSDTC, поскольку некоторые из наших служб должны звонить другим службам и должны выполняться в одной транзакции. – sotn
. Я проголосовал за добавление методов к сервису. Область транзакции может управляться в сервисе для двух операций, но не менее таким образом, он не должен распространяться на клиента, только на репозиторий и уровни обслуживания. – kidshaw