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

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

Особенно в первые дни работы разработчиком часто бывает трудно понять общую картину. Люди знают и иногда действительно хорошо справляются со своей частью системы, но часто не понимают, как маленькие кусочки соединяются вместе, чтобы создать прекрасный продукт (или даже серию продуктов). Итак, в этой серии постов я дам обзор технологий, которые, по моему мнению, необходимы разработчику полного стека (конечно, я не буду освещать каждую технологию, а только те, которые, по моему мнению, хорошо подходят для последние несколько лет). Это может помочь человеку, пытающемуся расширить свой кругозор навыков.

Давайте начнем с обзора типичной архитектуры клиент-серверного приложения с высоты 10 000 футов.

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

ЗАВЕРШЕННАЯ ВЕРСИЯ

  1. База данных: это уровень, который фактически отвечает за хранение данных в различных формах. Рекомендуя статью на Medium или лайкая публикацию на Facebook, каждое небольшое действие, которое предпринимает пользователь, приводит к некоторому хранилищу данных, и именно так пользователь может это увидеть, когда он / она вернется снова.
  2. Сервер: Если говорить простыми словами, то вместо того, чтобы предоставлять фрагмент кода каждому пользователю для выполнения на его клиенте (мобильном, браузере или настольном компьютере), мы сохраняем общий код (отвечающий за передачу к базе данных, общей бизнес-логике и множеству других задач) на одном компьютере (или нескольких машинах), называемом сервером. Затем клиенты, распределенные среди пользователей, могут обращаться к этой центральной машине для выполнения этого общего кода (эта центральная машина может быть, о чем мы постоянно читаем/слышим, ОБЛАКОМ).

ВНЕШНИЙ ИНТЕРФЕЙС

Эта часть будет отличаться в зависимости от разрабатываемого вами приложения. Веб-приложение обычно имеет следующие два уровня.

  1. Внешняя структура: внешняя среда необходима для управления данными или состоянием приложения и многих других целей. Опять же, это может быть необязательным. Например, вам может не понадобиться этот слой, если вы просто пытаетесь создать домашнюю страницу компании, или свое личное онлайн-портфолио, или простой список дел. В этих случаях пользовательский ввод очень мал, и, следовательно, уровень пользовательского интерфейса может напрямую общаться с серверной частью (которая может управлять состоянием). Тем не менее, большинство приложений, написанных в наши дни, достаточно сложны, поэтому нам нужна интерфейсная среда.
  2. UI (пользовательский интерфейс): как следует из названия, это то, за что отвечает дизайнер пользовательского интерфейса и будет определять, как будет выглядеть ваше приложение. Этот слой будет иметь все цвета, изображения, макеты и т. д. каждой страницы/экрана приложения.

Если вы создаете мобильное приложение, этот внешний слой может быть одним слоем, но фактический код будет разным для разных платформ или одинаковым для всех платформ. Прочтите этот пост для более подробной информации о том, какие языки/фреймворки вам нужно использовать для каких приложений.

Если вы хотите создать настольное приложение, внешний слой может отличаться. Вы можете создать настольное приложение, используя C#, Visual Basic, Java RCP (для приложений, подобных eclipse), а в последнее время также стали популярными настольные приложения на основе HTML JavaScript, использующие Электрон и аналогичные платформы. Я не буду фокусироваться на них сейчас.