Желательно ли сделать веб-программу для взаимодействия с уровнем, независимым от базы данных?

Я раньше программист Winforms; Я всегда делю программы, которые пишу, на две части: интерфейс (Winforms) и средний уровень (облегчается Remoting/WCF)

При таком подходе интерфейсный код не может получить доступ к Linq или System.Data.SqlClient. Но у этого есть дополнительное преимущество в том, что средний уровень - это мгновенный гражданин SOA (сервис-ориентированная архитектура), который может использоваться в сценариях B2B, независимо от базы данных и с поддержкой Интернета, даже если это просто приложение Winforms.

Сейчас я изучаю веб-навыки. Используя проект SportsStore из книги Pro ASP.NET MVC, я неизбежно сравнил свой старый (?) Подход (средний уровень) и подход к хранилищу в этой книге. Подход с хранилищем предоставляет механизм доступа к данным (Linq to SQL) непосредственно на внешнем интерфейсе (SportsStore.WubUI). Используя подход хранилища, SportsStore.WebUI по-прежнему имеет прямое соединение с базой данных.

Вопрос заключается в том, чтобы в веб-программах я стремился создать интерфейс для интерфейса только с промежуточным уровнем (чтобы интерфейс мог быть независимым от базы данных, а средний уровень был бы гражданином SOA), или мне использовать базу данных напрямую (с помощью подхода к хранилищу, ORM или аналогичного) в front-end?

1 ответ

Решение

Я уверен, что книга нарушила некоторые лучшие практики ради краткости. Авторы должны сбалансировать, "как мне донести свою точку зрения" до "как правильно это сделать"; они обычно выбирают первое (как и должно быть - это книга о веб-разработке, а не об архитектуре, верно?).

Вы должны абсолютно продолжать использовать n-уровневые архитектуры. Суть n-уровневой архитектуры состоит в том, чтобы позволить вам (более) легко поменять слои - переключать базы данных, переключать пользовательские интерфейсы (например, заменить Winforms на ASP.NET).

Другие вопросы по тегам