Масштабируемый дизайн приложения в Stack Overflow

Я начинающий php-разработчик, который пытается создать социальную сеть для моих школьников. Зная, что в школе уже работают более 1000 учеников, у меня должен быть план по расширению / масштабированию кода, который я пишу.

Раньше это был просто LAMP Stack, сейчас, как я вижу, современная веб-разработка — это нечто большее, чем я, и я действительно растерялся в том, какие технологии использовать и как их использовать для создания масштабируемого приложения. Я надеюсь разделить это приложение на 3 слоя.

  • Прикладной уровень (phalcon, reddis, apache, php) [mvc api centric]
  • Уровень базы данных (MySQL)
  • Уровень пользовательского интерфейса — (html / css / js /)

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

1

Решение

Добро пожаловать в ТАК. Я не могу придумать какой-то конкретный справочник, на который можно было бы направить вас (хотя Руководство по PHP это хорошее место, если вы застряли на том, как сделать что-то конкретное). Я бы посоветовал прочитать несколько результатов при поиске «Начало работы с MVC в PHP» и отметить, с чем они согласны. Тем не менее, посмотрите на то, что я говорю ниже (а затем игнорируйте это столько, сколько пожелаете;)).

Во-первых, вы умнее, чем многие, разбираетесь в масштабируемом дизайне перед запуском в проект …

Я рад видеть Phalcon в вашем списке уже есть. Однако, как предложил DevDonkey, сначала нужно начать с чего-то более простого (Phalcon очень мощный, но чтобы действительно разобраться с ним, вам нужно хорошо разбираться в PHP, особенно в объектно-ориентированном программировании).

Если вы совершенно новичок в PHP …

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

MVC дизайн

По твоему вопросу я вижу, ты хотя бы слышал об этом. Это действительно то, где лежат слои вашего приложения:

  • модель — взаимодействия с базой данных (получение / редактирование данных) обрабатываются через это. Таким образом, у вас может быть база данных MYSQL, и тогда ваши модели предоставляют хороший интерфейс для взаимодействия с данными (обычно у вас есть одна модель для каждой таблицы).
  • Посмотреть — это последний слой, который видит пользователь. Таким образом, вы будете использовать свои знания html / css / js здесь. По этой теме, если вы действительно не хотите делать свои собственные CSS, подумайте об использовании CSS Framework такие как начальная загрузка. Это действительно поможет ускорить внешний вид вашего сайта, и есть множество бесплатных шаблонов для использования с ним.
  • контроллер — это логика приложения. Контроллеры запрашивают / манипулируют данными через модели, а затем решают, что отправлять представлениям для рендеринга.

Использовать рамки?

Использование хорошего фреймворка может сделать ваше приложение более надежным и быстрее создавать. Но использование фреймворка без понимания будет разочаровывающим, медленным и, возможно, приведет к худшему коду, чем если бы вы не использовали его для начала (поскольку вы используете хаки, чтобы обойти части фреймворка, которые вы не понимаете). Мой любимый сейчас Phalcon но, как относительный новичок в PHP, я бы предложил что-то вроде CakePHP хотя оба Laravel а также Symfony также популярны.

Резюме

  • Начните с малого, учитесь, тестируйте идеи, а затем переходите к большему проекту.
  • Познакомьтесь с использованием PHP (включая стиль ООП) перед использованием фреймворка.
  • Используйте MVC Framework

Слои, которые вы выложили в своем вопросе, хороши, но я бы разделил их немного по-другому (учитывая, что MVC — это 3 слоя)

  • Уровень приложений — контроллеры, написанные на PHP, обрабатывают логику / манипуляции, часто самый большой уровень
  • Уровень базы данных — модели, написанные на PHP, вам также понадобится база данных, которая может быть на вашем любимом языке баз данных — MySQL;)
  • UI Layer — представления, возможно написанные на PHP (в зависимости от каркаса), но также HTML, CSS и JS, а также язык шаблонов, если вы хотите (например, прут или же вольт), по сути, способ сделать ответ от контроллера приятным для человека

Первый проект (для CakePHP)

Этот блог учебник это хорошее место для начала, если вы решите использовать CakePHP.

Начало работы с Phalcon

Phalcon более мощный / универсальный, но чтобы начать с ним, я чувствую, что вам нужно быть лучшим PHP-разработчиком, чем вы, чтобы начать работать с чем-то вроде CakePHP. Не торопитесь, чтобы понять каждую новую концепцию с Phalcon, особенно Внедрение зависимости.

Даже используя CakePHP в течение последних 2 лет и будучи знакомым с шаблонами MVC и PHP, я все же пробирался через все 7 учебные пособия в Фалконе.

Сказав это, моя любимая вещь о Фальконе, что это сильно отделен — так что довольно легко (через некоторое время) заменить его частями своими собственными расширениями, если он не совсем делает то, что вы хотите.

Примечание о Phalcon: Он не так популярен, как многие другие фреймворки (хотя популярность растет), поэтому вам, возможно, придется потратить некоторое время на копания, когда вы застряли. Тем не менее, документы улучшаются все время и Форум очень активен К сожалению, количество ответов на вопросы об этом в StackOverflow все еще мало по сравнению со многими другими платформами.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]