Фронтенд архитектура - PullRequest
       9

Фронтенд архитектура

1 голос
/ 15 сентября 2010

На данный момент у нас очень тяжелый фронтенд (на самом деле фронтенд + бэкэнд в одном приложении).Интерфейс содержит всю логику: пользовательский интерфейс, бизнес-логику, логику персистентности и так далее.Его очень сложно и сложно поддерживать из-за некоторых проблем с платформой (написанных на PHP), таких как, например, отсутствие пула соединений.

Так что мне пришла в голову идея разделить интерфейс и бэкэнд.Бэкенд может быть написан на более удобной платформе (мы планируем использовать Java), а веб-интерфейс может продолжать использовать PHP.

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

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

    a.мы можем отправлять параллельные запросы в бэкэнд (распараллеливать ввод / вывод);

    b.мы можем предоставить тайм-аут для запросов (SLA).Иногда лучше быстро потерпеть неудачу и не блокировать клиент.

Итак, учитывая все вышесказанное, я считаю, что лучшая архитектура для интерфейса (в моем случае я не распространяю серебряную пулю)это логика пользовательского интерфейса, которая связывается только с бэкэндом REST / SOAP неблокирующим способом.Что вы думаете об этом материале?

Ответы [ 3 ]

1 голос
/ 15 сентября 2010

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

0 голосов
/ 16 сентября 2018

Вы можете использовать следующую архитектуру.

  1. Вы можете использовать любую инфраструктуру JS, например Angular 4 или ReactJS, поскольку обе имеют рендеринг на стороне сервера. Это будет работать и для Single / Multiple Application.
  2. Определите API RestFul с PHP, где будут присутствовать все бизнес-логики. API должен быть размещен на другом сервере.
  3. Для обеспечения безопасности API вы можете использовать OAuth-аутентификацию.
  4. Если вы используете PHP, я предлагаю использовать хранимую процедуру вместо жестко закодированных SQL-запросов или любого ORM.
0 голосов
/ 15 сентября 2010

Звучит хорошо для меня, и у вас есть возможность высасывать информацию из (java?) BL как на стороне сервера, так и на стороне клиента (через AJAX).

Я думаю, что логика интерфейса - это внешний интерфейс должен сделать.

Да - вы определенно думаете прямо:)

...