Проектирование внешнего интерфейса Javascript <-> C ++. - PullRequest
4 голосов
/ 11 июня 2011

В ближайшем будущем мне нужно будет создать систему с бэкэндом C ++ и веб-интерфейсом (требования). На данный момент я не знаю больше об этом. Я думаю, что Frontend будет запускать доставку данных, а не бэкэнд - поэтому нет необходимости в кометоподобных вещах.

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

Прежде всего, мне не нравится возможность генерировать HTML из C ++. Таким образом, бэкэнд C ++ должен будет взаимодействовать с веб-интерфейсом Javascript. Простейший вариант, который я вижу здесь, это Ajax. Я думаю, что пока все должно быть в порядке.

Коммутирование через Ajax с бэкэндом C ++ означает, что бэкэнд должен быть способен обрабатывать HTTP. Было бы неплохо отделить бэкэнд, который предоставляет фактические данные от функциональности обработки HTTP.

Здесь я вижу место для Node.js. Я получил общее представление об этом, и это то место, где лежат все мои сомнения.

Чтобы иметь сервер обработки HTTP на Node.js, который будет иметь «серверную часть данных» в качестве модуля Node.js. Я думаю, все должно быть в порядке - но я не уверен, что мне действительно нужна вся эта асинхронизация, так что, может быть, есть более простые варианты, о которых я не знаю? Как бы вы создали такую ​​систему?

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 11 июня 2011

«Вся эта асинхронизация» - это не то, что Node.js очень усердно работает, чтобы обеспечить себя как дополнительное.Это другое представление о веб-обслуживании, которое становится простым, как дыхание, когда вы понимаете, как работает Node.js.

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

Обертывание одной программы, которая вызывается для каждого запроса, может быть сделано менее чем в десяти строках Node.js.Не думайте, что асинхронность - это рутинная работа - если принять ее, Node.js - это круто.

Тем не менее, вы можете пойти по пути CGI и сделать это немного более стандартным способом, и в итогерезультат будет примерно таким же. Это может пригодиться или не пригодиться.

0 голосов
/ 11 июня 2011

Рассматривали ли вы вариант модуля CGI / FCGI с nginx, Apache и т. Д.?

Если нет, то я думаю, что имеет смысл начать с этого. Ваш модуль будет обрабатывать запрос data / json, а остальное будет обрабатывать HTTP-сервер.

...