Кейс
Artur SardaryanFrontend - часть веб-сервиса, взаимодействующая с пользователем.
Роль Backend заключается в исполнении бизнес-логики приложения и генерации динамических документов. На каждый HTTP запрос application сервер запускает некоторый обработчик в приложении. Это может быть функция, класс или программа, в зависимости от технологии.
В моем Telegram-боте логика написана на языке Python (так как это высокоуровневый язык и на нем писать различные алгоритмы проще, чем на языках низкого уровня). В целом не очень важно на чем писать сервер, так как в основном нагрузка ложится на драйверы баз данных и системы передачи сообщений.
Frontend часть за меня написал Telegram.
Связь между Frontend и Backend осуществляется с помощью API.
API (программный интерфейс приложения, интерфейс прикладного программирования) (англ. application programming interface, API [эй-пи-ай]) — набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) или операционной системой для использования во внешних программных продуктах. Используется программистами при написании всевозможных приложений.
JSON - Текстовый формат обмена данными, основанный на JavaScript. Как и многие другие текстовые форматы, JSON легко читается людьми. Несмотря на происхождение от JavaScript, формат считается независимым от языка и может использоваться практически с любым языком программирования.
Используемая библиотека в Python - pyTelegramBotAPI
AJAX - технология загрузки данных / отправки форм без обновления WEB страницы. XML - совершенно не обязателен, возможны отправка и прием данных любого типа. Чаще всего вместо XML используется HTML либо JSON для загрузки сырых данных.
Real-time сообщения
Решения
• Polling - периодический опрос сервера
• Comet (Long polling) - polling с долгоживущими запросами
• Server Push - бесконечный запрос
• WebSocket - специализированный протокол
В моем Telegram-боте используется long polling (comet). Сервер не отвечает пользователю до тех пор, пока у него не появятся данные. Пользователь отправляет запрос и ждет до тех пор пока не придет сообщение. Затем он получает ответ и отправляет запрос снова. (иногда бывает предел длительности запроса (1-2 мин например), по прохождению этого времени запрос повторяется.
Плюсы и минусы Comet
➕ Поддержка всеми браузерами (так как для браузера это ajax-запрос)
➕ Поддержка большого числа пользователей
➕ Относительная простота реализации
➖ Избыточные HTTP запросы (раз в 1-2 минуты пользователь делает http запрос)
➖ Half-duplex (с помощью кометы можно только получать сообщения, а иногда требуется отправлять (тогда используются обычные ajax запросы))
ХАЙЛОАД
Если сервис высоконагруженный, можно разбить Backend на несколько серверов, каждый из которых обрабатывает какой-нибудь набор запросов от Frontend.
Желательно данные обрабатывать там, где они и лежат, а не пересылать между серверами в json.
Хранение данных пользователей
Существуют различные СУБД (MySQL, PostgreSQL, SQLite). Выбирают исходя из целей использования.
Мои боты умеют работать с Instagram API, писать на почту, читать текст (Google text-to-speech), распознавать текст (speech recognition), строить графики (matplotlib), хранить файлы, парсить сайты, поддерживать разговор.
Если веб-клиент - браузер:
Верстка осуществляется при помощи HTML + CSS (стили), логика на javascipt (либо PHP).
jQuery — библиотека JavaScript, фокусирующаяся на взаимодействии JavaScript и HTML. Библиотека jQuery помогает легко получать доступ к любому элементу DOM, обращаться к атрибутам и содержимому элементов DOM, манипулировать ими. Также библиотека jQuery предоставляет удобный API для работы с AJAX.