Как создать n-многоуровневую веб-архитектуру с помощью PHP?

Я имею дело с 3-уровневой архитектурой PHP-сайта.

Теперь мне нужно переконфигурировать его на распределенную n-уровневую архитектуру suрроrt. После долгих часов исследований я пришел к этому решению: бизнес-логику следует разделить на уровень представления и чисто бизнес-логики, чтобы обеспечить n-слойную архитектуру (пользовательский интерфейс, уровень представления, b.logic и уровень данных). Я решил использовать РНР только для презентации. В бизнес-логике я хочу использовать технологию внедрения J2ЕЕ вместо ее реализации на PHP, потому что J2EE может предоставлять гораздо более важные контейнерные услуги, которые необходимы для бизнес-логики, ее надежности, ремонтопригодности и различных критически важных бизнес-операций.

С вашей профессиональной точки зрения, это звучит как хороший способ перепроектировать исходный веб-сайт, чтобы обеспечить n-уровневую архитектуру с учетом специфики веб-сайта и критичности его операций?

Все, что вы хотите сделать, возможно с Zend Framework . Он следует за архитектурой MVC и имеет такие вещи, как компонент Zend_Soap для ваших сервисов. Нет причин создавать какое-то многоязычное приложение, если вы можете сохранить его в PHP. Почему вы так сильно используете Java?

Из вашего описания я понимаю, что существующее приложение работает в стеке LAMP. PHP прекрасно интегрируется в стек LAMP и хорошо масштабируется . Почему вы хотите перенести это на экосистему Java? Повторная реализация бизнес-логики в Java означает, что вы выбрасываете основную рабочую часть существующего приложения. Если уже существует рабочий бизнес-уровень и DAL, зачем начинать с нуля? Не будет ли рефакторинг более умной (и более дешевой) альтернативой?

Кроме того, вы утверждаете, что J2EE обеспечит гораздо лучшую надежность и удобство обслуживания. Как так? Поддержание работоспособности в основном зависит от архитектуры кода и стиля кодирования. Я не знаю ни одного шаблона в PoEAA Fowler, который также не может быть реализован на PHP. PHP также предоставляет зрелые рамки для UnitTesting , непрерывной интеграции , ORM , инъекции зависимостей , очереди сообщений , веб-сервисы , развертывание и т. Д. Для поддержки разработки вашего приложения.

Несомненно, Java компилируется и поддерживает многопоточность и имеет историю в архитектуре корпоративного программного обеспечения, и я не отрицаю, что у нее есть языковые функции, которых нет у PHP. Но вопрос в том, нужны ли вам они для этого проекта? И давайте не будем забывать, что язык программирования ничего не делает сам по себе. Разработчик, который создает приложение, и J2EE Spaghetti код по-прежнему Spaghetti Code.

Просто мой 2c, хотя 🙂