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

StackOverflow https://stackoverflow.com/questions/4285864

Вопрос

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

На этом подходе передний код не может получить доступ к LINQ или System.data.sqlClient. Но у этого есть дополнительное преимущество, что средний уровень представляет собой мгновенный сам-гражданин (архитектура ориентированной на обслуживание), может использоваться в сценариях B2B, базе данных-агности, а также в Интернете, даже именно это просто приложение WinForms.

Теперь я изучаю веб-навыки. Используя проект SportsStore из книги Pro ASP.NET MVC, неизбежно, что я бы сравнил свой старый (?) Подход (средний уровень) и подход к репозитории в этой книге. Подход репозитория выставляет механизм доступа к данным (LINQ к SQL) непосредственно на фронт-конце (SportsStore.wubui). Используя подход к репозитории, SportsStore.webui все еще имеет прямое подключение к базе данных.

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

Это было полезно?

Решение

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

Вы должны быть абсолютно продолжать использовать архитектуры N-уровня. Вся точка архитектуры N-уровня состоит в том, чтобы позволить вам (более) легко поменять в лосовые базы данных - переключать базы данных, переключить пользовательские интерфейсы (например, заменить winforms с помощью asp.net).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top