2010-12-16 2 views
4

Я работал над проектом, который реализует трехуровневую архитектуру с помощью следующей конструкции:Необходима трехуровневая архитектура приложения?

  1. Presentation Layer - Использует PHP с рамкой MVC для обработки внешнего интерфейса презентации и бизнес-логики. Этот уровень вызывает вызовы на уровень сервиса, который обращается к данным.
  2. Уровень доступа к данным - Использует C# .NET и разделяется на Service, Business Logic и Data Layer. Вызывается уровнем презентации. Делает вызовы в базу данных и сериализует ответы для возврата к уровню презентации.
  3. Data Layer - База данных. Предоставляет все данные для вышеуказанных двух уровней.

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

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

Спасибо за помощь!

+3

Существуют значительные различия в многоуровневом и Архитектуры MVC. Не смешивайте их. – 2010-12-16 14:42:07

+0

Верхний уровень - это веб-браузер, тонкий клиент. ИМО, что у вас есть, - это n-уровневый, а не 3-уровневый. Конечно, 3-ярусность можно рассматривать как подмножество n-уровня. – sanjeev 2012-01-09 10:37:22

ответ

3

Мне кажется, что ваши 3 уровня - это то же, что и View, Controller Model. Если ваш php в основном выполняет вызовы на ваш # 2-слой, тогда я думаю, что сам не должен быть MVC, если у вас нет очень сложного слоя презентации, который сам должен быть организован в MVC, например, если у вас сложная навигация или пользователь логики аутентификации.

0

Нет ничего в программировании. Но есть множество практик, которые были провозглашены годами как что-то, что вы можете добиться, чтобы добиться лучших результатов. Разделение N-уровня является лишь одной из таких практик.

http://en.wikipedia.org/wiki/Multitier_architecture

Ваше описание следует описание в вики, а значит - это подходящий способ для реализации 3-го уровня приложения.

Но помните, что вы ничего не должны делать - просто следуйте тому, как вам удобно. И в будущем у вас будет свой собственный набор практик, которые будут работать специально для вас.

0

Я думаю, что ваше усложнение проистекает из того факта, что вы используете PHP и .NET, которые не являются напрямую совместимыми. Если вы исключили один из них (только используемый PHP или только используемый .NET), который упростит ситуацию. В противном случае, я думаю, вы используете хороший подход.

0

Ценность подхода не только для обеспечения безопасности, но и облегчает ремонтопригодность.

Я не уверен, что понимаю беспокойство: «тем более что я вынужден написать две модели для одного и того же объекта в первых двух слоях». Это похоже на то, что вы используете два разных языка программирования для пользовательского интерфейса и внешнего интерфейса. Я предполагаю, что C# «уровень доступа к данным» содержит полную объектную модель, которую вы затем должны реплицировать в своем интерфейсе.

Проблема, кажется, что у вас есть два средних уровней, которые отражают друг друг, потому что вы используете два языка, не то, что вы используете архитектуру многоуровневой

Смежные вопросы