Введение

В распределенных вычислениях, код по запросу – это любая технология, которая отправляет исполняемый программный код с сервера на компьютер клиента по запросу программного обеспечения клиента. Некоторые известные примеры парадигмы кода по запросу в сети – это Java-апплеты, язык ActionScript от Adobe для Flash Player и JavaScript. Программный код находится в неактивном состоянии на веб-сервере до тех пор, пока пользователь (клиент) не запросит веб-страницу, содержащую ссылку на этот код, с помощью веб-браузера. По этому запросу веб-страница и программа передаются на компьютер пользователя по протоколу HTTP. Когда страница отображается, код запускается в браузере и выполняется локально, на компьютере пользователя, до тех пор, пока не будет остановлен (например, при закрытии пользователем веб-страницы). Код по запросу является частным случаем мобильного кода в области перемещения кода.

Клиент-сервер

Первое ограничение заключается в том, что система должна состоять из клиентов и серверов. Серверы обладают ресурсами, которые необходимы клиентам. Например, сервер хранит список цен на акции (то есть является ресурсом), а клиент хотел бы отобразить эти цены в виде наглядных графиков. Между ними существует четкое разделение ответственности. Сервер отвечает за серверную часть (хранение данных, бизнес-логику и т.п.), а клиент – за клиентскую часть (пользовательский интерфейс).

Без гражданства

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

Кэш-память

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

Код по запросу

Код по запросу (COD) — единственное необязательное ограничение в REST. Он позволяет клиентам повысить свою гибкость, поскольку сервер определяет, как будут реализованы определенные функции. Например, с помощью кода по запросу клиент может загрузить Javascript, Java-апплет или даже Flash-приложение для шифрования обмена данными, чтобы серверы не имели доступа к используемым в этом процессе алгоритмам и ключам шифрования. Однако использование COD снижает прозрачность, поэтому это ограничение является необязательным. К тому же, не всем API требуется подобная гибкость.