Нужна ли трехуровневая архитектура приложения? - PullRequest
4 голосов
/ 16 декабря 2010

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

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

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

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

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

Ответы [ 4 ]

3 голосов
/ 16 декабря 2010

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

0 голосов
/ 16 декабря 2010

Ценность подхода заключается не только в безопасности, но и в удобстве обслуживания.

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

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

0 голосов
/ 16 декабря 2010

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

0 голосов
/ 16 декабря 2010

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

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

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

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

...