Вопрос

У меня есть несколько вопросов о трехуровневой архитектуре.

  1. Как правильно реализовать приложение в трехуровневой архитектуре?
  2. Как общаться между этими уровнями?
  3. Является ли уровень данных полностью равным СУБД? (Как насчет того, что в случае, если мы используем хранимые процедуры и как насчет того, что в случае, если мы использовали структуру картирования реляции объекта?)

С нетерпением жду ваших ответов. Спасибо.


PS: Пожалуйста, не понимаю, что я задаю общий вопрос. Ok ? Я спрашиваю, как правильно разработать крупномасштабное приложение. Что лучше всего?. Не ожидание ответов.

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

Решение

Это широкие ответы, я сделаю все возможное, чтобы дать вам несколько указателей.

  1. «Правильно» - это несколько субъективный термин. Вообще говоря, на мой взгляд, самое важное - сохранить слой в своем собственном модуле (например, свой собственный DLL) и иметь интерфейсы входить и выходить из модуля. Используя интерфейсы в каждом уровне, вы можете отделить определение от реализации, дополнительно отделяя слои друг от друга. Если в слое есть единственная точка входа, и он основан на интерфейсе, вы можете иметь несколько базовых реализаций по мере необходимости. В другом направлении, если вы используете интерфейсы в качестве обратных вызовов, то клиентам слоя (т. Е. Другие слои) необходимо будет только реализовать интерфейсы, чтобы получить хороший поток между слоями.

  2. Это зависит от того, как вы сами реализуете слои. Если вы проектируете слои, как я предложил выше, вы просто используете интерфейсы, чтобы войти в слой и из него. Другое решение может заключаться в том, чтобы сделать его асинхронным, используя диспетчеры событий - слой просто запустит событие, а другой слой выслушает это событие и действует на него. Все зависит от конкретных требований проекта.

  3. Нет, слой данных - это слой в приложении, которое взаимодействует с СУБД. Использование ORM - это просто метод реализации уровня данных, в то время как использование хранимых процедур - это метод для перемещения некоторой логики из приложения в саму СУБД, по разным причинам.

Я думаю, вы получите несколько ответов; Вы должны принять их во внимание, прочитать некоторое чтение над сетью и немного экспериментировать, пока не найдете то, что вам нравится.

Другие советы

  1. Три уровня - это презентация, бизнес -логика и данные. Убедитесь, что вы не смешиваете проблемы. Пользовательский интерфейс не должен содержать никакой бизнес -логики и так далее.

  2. Любой уровень должен знать только о уровне под ним. Для бывшего Пользовательский интерфейс должен общаться только с бизнес -логикой и не должен знать ничего о уровне данных. Чтобы достичь этого всегда код для интерфейсов вместо конкретных реализаций. Анкет Использовать Внедрение зависимости чтобы держать модули свободно связанными.

  3. Это зависит от того, как вы решите его реализовать. Начните с Ягни главный. Держите вещи как можно более простыми, чтобы начать, и используйте такие вещи, как ORM, только если они вам действительно нужны.

Эта тема слишком широкая, чтобы правильно ответить на этот вопрос в требуемой глубине. Что сказано:

  1. Ключевой элемент состоит в том, чтобы правильно ограничить зависимости между слоями, чтобы каждый слой знал только слой «ниже». Например, бизнес -уровень не знает о презентационном уровне.

  2. 3-уровневая архитектура без рецепта о том, как слои общаются друг с другом. Функциональность бизнеса (уровня) часто выявляется как веб -сервисы, которые используются на уровне презентации.

  3. Уровень данных не совсем равен базе данных. Вам всегда понадобится код для взаимодействия с хранилищем данных (например, ORM). Этот код должен быть в своем собственном модуле, чтобы минимизировать связь.

Это зависит от многих факторов. Я бы посмотрел на использование репозитивного шаблона для вашего уровня доступа к данным (DAL). В идеале это будет использоваться в сочетании с реляционным карт (ORM) объекта, подобным Entity Framework 4 или Nhibernate. Затем у меня был бы отдельный доменный уровень, который содержит бизнес -правила и услуги. Ваш доменный слой будет обслуживать запросы между вашим пользовательским интерфейсом и вы дал. Для вашего пользовательского интерфейса у вас есть возможность веб -форм или подход MVC. Оба все еще будут работать в течение трех уровней, но вы получите гораздо лучшее разделение проблем от MVC. Это хорошо, когда вы хотите провести какое -то модульное тестирование. Вот несколько хороших ссылок относительно вышеизложенного.

http://daveswersky.com/2010/05/26/entity-framework-4-then-and-now/

http://channel9.msdn.com/blogs/matthijs/aspnet-mvc-2-basics-introduction-by-scott-hanselman

http://www.asp.net/mvc/tutorials/mvc-music-store-part-1

Три уровня архитектуры - это концепция, а не пошаговая учебная программа. Держите это простым и изолированным. Если вы работаете с хранением данных и поиском, поместите его в уровень данных. Когда есть логика, поместите ее в логику/средний слой. Темы/шкуры, виды, заполнители виджетов идут на уровне презентации.

Изучите другие код. Хорошим местом для начала было бы монорельса.

Прочитайте много документации, чем больше вы знаете, что другие делают лучше.

Прежде всего, повеселитесь с этим. Если вы чувствуете себя подавленным или как будто все становится сложным, отступите и выясните, что не в том месте.

Лучший способ реализации приложения в 3 -уровневой архитектуре - это использовать структуру вашего языка, которые используют MVC. Для PHP я рекомендую codeigniter http://codeigniter.com/

Обычно происходит прохождение объектов, если вы следуете ООП, между тремя уровнями. Ну, в основном два. Управление получает запрос, спрашивает модель (DB) и получает объект взамен, использует свойства и методы этого для отображения представления.

Следуйте некоторым учебникам в CI. Вы получите представление о том, что происходит в MVC.

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

Уровень презентации: Это самый лучший уровень приложения, где пользователь выполняет свою деятельность. Давайте возьмем пример любого приложения, где пользователю необходимо заполнить форму. Эта форма - не что иное, как уровень презентации. В приложениях Windows Формы Windows - это уровень презентации, а в веб -приложениях веб -форма принадлежит уровню презентации. По сути, проверка ввода пользователя и обработка правил выполняется в этом уровне.

Бизнес -слой: Это на вершине презентационного слоя. Как следует из названия, здесь выполняются большинство бизнес -операций. Например, после сбора данных форм мы хотим проверить их с нашим пользовательским бизнес -правилом. В основном мы определяем классы и деловые сущности в этом уровне.

Уровень доступа к данным: Помимо уровня бизнес -логики находится уровень доступа к данным. Он содержит методы, которые помогают бизнес -уровню соединяться с базой данных и выполнять операции CRUD. Как правило, весь код, связанный с базой данных и материал, принадлежат уровню доступа к данным. Иногда люди используют независимый от платформы слой доступа к данным, чтобы извлечь данные из различных поставщиков баз данных.

Дальнейшие подробности - https://www.c-sharpcorner.com/uploadfile/dacca2/understand-3-tier-architecture-in-c-sharp-net/

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