DNode - это асинхронная объектно-ориентированная RPC-система для node.js, которая позволяет вызывать удаленные функции.

(Из файла Readme в DNode на Github)

DNode работает через сетевые сокеты и даже в браузере с socket.io.

Кроме того, есть реализации dnode для perl, ruby и java, так что вы можете плавно склеивать все ваши процессы бэкэнда.

Как это устроено

Когда вы бросаете объект в dnode, рекурсивный обход function объекты, вложенные в вашу структуру данных и вторичную структуру данных, отправляются вместе с удаленными запросами, которые создают функции shim, которые создают обратные вызовы RPC на стороне, где функции были первоначально определены.

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

По сути, dnode позволяет вам вызывать удаленные функции, как если бы они были определены локально, без использования eval() или же Function.prototype.toString(),

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

Больше возможностей:

  • симметричный дизайн: обе стороны соединения могут размещать методы для вызова другой стороной

  • используйте потоки tcp или websockets любезно предоставлены socket.io! (см. ниже, просто бросьте веб-сервер на listen())

прочитайте больше