@iluxa1810

Какие существуют архитектуры взаимодействия с базой данных?

В своем приложении я выбрал такую архитектуру:
WinForms-клиент->WCF-Служба->ORM->БД<-WinService(На нем хостится WCF, а сам сервис в фоне решает некоторые задачи синхронизации БД.)

Клиент шлет запрос WCF службе, а WCF служба через ORM взаимодействует с БД и обрабатывает запросы клиента.
В свою очередь в фоне крутится Win служба на которой хостится WCF, а сама служба фоне выполняет манипуляции с данными с БД.

Как можно классифицировать данную архитектуру?
Какие существуют альтернативные архитектуры? Их + и -
  • Вопрос задан
  • 740 просмотров
Пригласить эксперта
Ответы на вопрос 2
zagayevskiy
@zagayevskiy
Android developer at Yandex
Ваш случай похож на MVP, без более подробного описания трудно судить.
Существуют ещё MPC, MVVM, например. Уверен, меня дополнят.
Ответ написан
Комментировать
А вы по какому признаку хотите классифицировать? Я вот могу назвать такую архитектуру клиент-серверной, а еще многослойной.
Какие альтернативы? Ну, во-первых сам WCF может быть очень разный, и SOAP, и REST. Во-вторых, некоторые клиенты (например, административного характера) могут цепляться напрямую к базе (к примеру, они имеют доступ к серверу по VPN), и тогда веб-сервиса между БД и клиентом нет.
Также, приложение может работать не сразу со веб-сервисом/БД, а к примеру складировать данные в локальную базу (какой-нибудь SQLite), а потом её синхронизировать с основной БД - также через сервис или напрямую (зависит от доверия к клиентскому приложению) - это сложнее с точки зрения наладки всего процесса, но иногда просто необходимо, если связь с центральным сервером БД не гарантирована (иногда приложения на мобильных устройствах должны работать и вне большого города и толстого 4G канала).

WCF-служба может пользоваться ORM или программист может заранее составить все SQL-запросы.
WCF-служба может хоститься и на IIS, если это удобно. Хотя, если она выполняет в БД фоновые операции, то вполне правильно и логично хостить её в Виндовом сервисе.

Каждый из перечисленных вами слоёв можно поменять/убрать/упростить/усложнить. А еще, например, можно вспомнить про многопользовательскую работу и возможные проблемы при работе разных людей с одними и теми же данными, что тоже повлияет почти на все слои в вашей схеме.

Вас что конкретно интересует? Нужно хотя бы говорить о клиенте или сервисе отдельно, т.к. это сами по себе крупные компоненты со своей архитектурой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы