Кейс

Кейс

Artur Sardaryan

Frontend - часть веб-сервиса, взаимодействующая с пользователем.

Роль 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.

Report Page