База данных, которая не обрабатывает транзакции? Лучше получить новую базу данных.
Я не согласен - транзакции не обрабатываются в слое постоянства. Я думаю, что они должным образом относятся к сервисному слою, потому что сервисные методы - это то, что сопоставляется с единицами работы и вариантами использования. Один сервисный вызов может включать более одной базы данных и объекта модели, поэтому все они должны быть одной единицей работы ACID. Это невозможно, если уровень персистентности обрабатывает транзакции.
Такая конструкция может обрабатывать транзакции, даже если база данных их не поддерживает. Сервис может реализовать компенсационные звонки в случае отката. Это невозможно, если вы включите эту логику в уровень постоянства.
По моему мнению, у вас должен быть отдельный интерфейс службы между уровнями сети и постоянства. Веб-уровень обрабатывает только HTTP-запросы, маршрутизацию к службам и формулирует ответы для обратной отправки. Службы делают работу.
Службы МОГУТ быть веб-службами, если вы решите развернуть их таким образом, но существует множество вариантов развертывания. Отдельный уровень обслуживания не зависит от этих вариантов выбора.