2016-05-05 3 views
0

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

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

Несомненно, эта общая проблема уже решена. Я намерен следовать подходу DDD, так что методы доступа к базе данных являются частью уровня «Инфраструктура». Существует ли оптимальный способ проектирования системы (или структуры классов) для достижения этой цели? Должен ли я иметь только один шлюз для чтения/записи из базы данных, на который должны ссылаться все классы, или должны ли у каждого компонента свой собственный способ связи с базой данных? Существует ли стандартный подход для этого?

Я помню, что вопрос может быть немного широк, но для экспертов, несомненно, вы прошли через это и сможете помочь.

+0

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

ответ

2

Есть следующие элементы должны быть рассмотрены:

  • DAO шаблон - Создание DAO слоя левереджа DAO объектов (для каждого объекта домена), где верхний слой (например, служебный слой) может использовать его.
  • Архитектура. Если вы подумываете о архитектуре микросервисов, тогда UI, Service, DB access (DAO) & DB - все это будет единое развертываемое устройство. Следовательно, шаблон проектирования будет выровнен по выбранному архитектурному подходу.
  • API Gateway - шлюз API (согласованный с архитектурным подходом). Подумайте о функциональных вариантах использования при разработке API, а не просто предоставляя CRUD-операции или API-интерфейсы, специфичные для технологии.
0

Как принятая практика, ваш уровень презентации, бизнес-логика и доступ к данным (некоторые называют ее задним концом) должны быть достаточно разделены. Концепция MVC от Microst - просто разумный пример целенаправленных усилий по достижению этого. AngularJs из Google - еще один пример MVVM, который должен писать чистый код на стороне клиента, а не на стороне сервера ASPC ASP. Поэтому то, что должно быть лучше всего, четко установлено здесь. Что касается вашего вопроса, я бы сказал, что для разработки чего-то подходящего для высоко оптимизированной парадигмы проектирования не требуется определенный путь, а опыт познания многих способов и мудрости, чтобы выбрать один или несколько способов или даже смешать их в соответствии с вашими потребностями. Что касается вашего вопроса о шлюзе на доступ к данным, позвольте мне сказать так, поддерживая несколько соединений, это очень ресурсоемкое задание, поэтому в идеале один статический класс данных экземпляра, в котором поддерживается одно соединение, является подходящим подходом и все данные , следует использовать методы манипулирования. В веб-разработке мы знакомы с веб-службами, предоставляющими объекты контрактам на работу/сообщение. Основным здесь является разделение и инкапсуляция. Но убедитесь, что нет ничего прекрасного, хотя Asp.net MVC может похвастаться лучшей методологией разделения всех этих слоев, у них есть Razor, чтобы противоречить ему. Но это необходимо. Ад с параноиком с плотно соединенным спинком и передним концом или кодом спагетти. Все это имеет смысл, когда это соответствует вашим потребностям. Ключ здесь только опыт может научить нас оптимизировать путь или способы что-то сделать. Это возвращаемое значение моего ответа!

Смежные вопросы