У нас есть служба доступа к данным в нашей системе SOA WCF. Эта служба отвечает за выполнение операций CRUD (создание, обновление, удаление) над общесистемными таблицами базы данных, а также является источником этих данных для запросов. Любая другая служба в системе, желающая получить доступ к таблицам под управлением DAS, должна обратиться к DAS, чтобы получить или изменить ее. Мы используем Entity Framework и создали собственную систему отслеживания состояния POCO для этого DAS.
В нашей базе данных есть другие таблицы, которые относятся к отдельным службам и хранят данные только для собственного использования, т. е. сведения о состоянии, к которым они могут получить доступ в случае сбоя и возобновления работы, или записи деловой информации. У нас есть правило, что ни одна таблица не может быть доступна более чем одной службе: поэтому данные, необходимые нескольким службам, попадают в DAS.
По правде говоря, я никогда не понимал, почему служба доступа к данным является хорошей идеей, а не просто прямым доступом к таблицам. Это кажется медленнее, наш DAS не является транзакционным, поскольку он не может отправить обратно график POCO для обновления базы данных (только один POCOS за раз), и у нас также есть проблемы, когда DAS фактически является клиентом для другой службы, которой нужны данные от него... круговая зависимость.
Зачем заморачиваться с DAS? Почему DAS так важен, когда речь идет о SOA? Что мне здесь не хватает? Единая точка управления?
Является ли недостатком архитектуры SOA тот факт, что не все таблицы являются частью DAS и что некоторые службы имеют свои собственные «частные» таблицы?
Любое обсуждение по этому поводу приветствуется.