1

Мне нужен простой шаблон, чтобы сделать это. Мало что отметить:Простой Элегантный шаблон для разделения доступа к данным, бизнес-логики и презентации

1) У меня есть класс, который я обязан использовать это делает получение фактических данных и вернуть DataTable

2) Я не касается общих интерфейсов, которые поддерживают все возможные типы баз данных, мы придерживаемся одного типа базы данных.

3) Как изящно улавливать ошибку и информировать пользователя об ошибке.

4) Не предлагайте мне изучить MVC - сейчас это не вариант.

Меня интересует фактический дизайн рисунка.

+2

«Мне нужен MVC, но не говорите мне использовать шаблон MVC!» – Wedge

+0

Клин, пожалуйста, прочитайте мои комментарии к ответам перед комментированием. – sarsnake

ответ

1

Вы хотите использовать MVC шаблон для разделения бизнес-логики от представления (обратите внимание, что я НЕ говорить о ASP.NET MVC Framework) и DAO шаблона, чтобы отделить бизнес-логику от доступа к данным.

Ваш класс, который возвращает DataTable, становится частью вашей модели. Вы пишете слой (DAO для каждого объекта домена), который берет ваш DataTable и переводит его в ваши различные объекты домена. Ваш пользовательский интерфейс не должен содержать никакой логики, которая делает больше, чем предоставление вывода пользователю; все, что является фактической логикой для извлечения данных из вашей модели, обрабатывается на уровне контроллера, который получает данные, которые пользователь запрашивает у модели, и отправляет их в соответствующее представление, чтобы представить его пользователю.

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

+0

Я знаком с MVC. Однако из-за существующего дизайна сайта я предпочел бы просто разделить слои и не переходить в полноценный режим MVC. – sarsnake

+0

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

+0

То, что я ищу, - это слабосвязанный подход, такой как n-layered. – sarsnake

-1

Не предлагайте мне изучить MVC - сейчас это не вариант.

Вы можете сделать простой шаблон MVC или MVP без использования ASP MVC Framework. Это довольно просто представить. Вот довольно простой пример: MVP Example

0

Существует множество шаблонов, которые подходят к описанию. Я бы рекомендовал получить копию превосходной книги Мартина Фаулера Шаблоны архитектуры предприятия в частности Глава 14. Шаблоны веб-презентации. Вы обнаружите, что любая серьезная попытка отделить презентацию, домен (бизнес-логику) и источник данных приведет вас к одному из многих вариантов одной и той же темы.

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

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

Что касается уровня источника данных, основным преимуществом является невозможность переключения баз данных при падении шляпы. Основное преимущество заключается в том, что изменения в схеме базы данных влияют только на уровень источника данных и не распространяются на остальные приложения. Если ваш застрявший с наборами данных хороший подход, это Table Data Gateway.