Необходима трехуровневая архитектура приложения?

StackOverflow https://stackoverflow.com/questions/4461878

  •  10-10-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

Решение

Мне кажется, что ваши 3 уровня такие же, как и представление, модель контроллера. Если ваш PHP в основном звонит на ваш слой № 2, то я бы подумал, что сам не должен быть MVC, если у вас нет очень сложного уровня презентации, который сам должен быть организован в MVC, например, если у вас сложная навигация или пользователь Логика аутентификации.

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

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

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

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

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

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

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

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

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

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