Какой шаблон является многоуровневой архитектурой в asp.net? - PullRequest
0 голосов
/ 09 июня 2010

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

В своих веб-приложениях я использую 4 слоя.

  1. Проект веб-сайта (с веб-формами + кодом для файлов CS, пользовательскими элементами управления + кодом для файлов CS, мастер-страницами + кодом для файлов CS)

  2. CustomTypesLayer библиотека классов (с пользовательскими типами, перечислениями, DTO, конструкторами, get, set и валидациями)

  3. BusinessLogicLayer библиотека классов (имеющая всю бизнес-логику, правила и все вызовы функций DAL)

  4. DataAccessLayer библиотека классов (имеющая только классы, взаимодействующие с базой данных).

- Мой пользовательский интерфейс просто вызывает BusinessLogicLayer. BusinessLogicLayer выполняет предварительную обработку в себе и для данных он вызывает функции DataAccessLayer.

- Веб-формы не вызывают напрямую DAL.

-CustomTypesLayer используется всеми слоями.

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

Если это не шаблон, это близко к некоторому шаблону?

Ответы [ 4 ]

2 голосов
/ 10 июня 2010

Что касается паттернов, я рекомендую разобраться с ними:

  • Мой любимый крупный план на милю - Принцип инверсии зависимостей (DIP), также широко известныйкак (или, по крайней мере, очень похоже на) инверсия управления (IoC) и инъекция зависимости;они довольно популярны, поэтому у вас не должно возникнуть проблем с поиском дополнительной информации - получением примеров.Это действительно хорошо для абстрагирования реализации доступа к данным за интерфейсами.
  • Ленивая загрузка также полезна.Интересно, что иногда вам, возможно, захочется сделать наоборот - получить все необходимые данные за один большой взрыв.
  • Заводской шаблон очень хорошо известен - по понятной причине.
  • Шаблон фасада также помог мне избежать неприятностей.

В Википедии есть довольно хороший список шаблонов проектирования программного обеспечения , при условии, что у вас естьеще не видел.

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

  • Творческие
  • Структурные
  • Поведенческий
2 голосов
/ 09 июня 2010

Это не четыре слоя, это три слоя, так что это обычная трехуровневая архитектура.

CustomTypesLayer вовсе не является слоем.Если бы это было так, пользовательский интерфейс использовал бы только слой пользовательских типов и никогда не связывался бы напрямую с бизнес-уровнем, а уровень доступа к данным никогда не использовал бы слой пользовательских типов.

Трехуровневая архитектура представляет собой Многоуровневая архитектура

1 голос
/ 09 июня 2010

Взгляните на Entity Framework или LinqToSQL.Они оба могут автоматически генерировать ваш слой доступа к данным из вашей базы данных.Это избавит вас от большой (скучной) работы и позволит вам сосредоточиться на интересных слоях.

Кодовый код на самом деле не имеет ничего общего с архитектурой - это скорее стиль кодирования.Это способ отделить логику от представления.Любая упомянутая вами архитектура может использоваться с выделенным кодом или без него.

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...