一个编码代理可以编写Python Worker,另一个可以编写JavaScript Worker。在运行时,这些Worker可以交换对实时对象的引用并调用其方法,而无需定义API、架构或序列化代码。两年前,我们推出了基于Cap 'n Proto RPC的Workers RPC。
这使得Workers可以调用其他Workers和Durable Objects的方法,返回实时对象并调用它们的方法,返回函数、流并获得远程过程调用(RPC)系统的所有好处,而无需定义架构或添加任何依赖项。我们称之为“JavaScript原生RPC”,因为它使使用RPC感觉像是语言的原生。
去年,我们在网络浏览器和服务器之间实现了这一功能,并推出了Cap 'n Web。现在我们要把它变成跨语言的。通常,让用不同语言编写的程序相互交流很复杂:开发人员通常必须构建自定义API或采用与语言无关的序列化格式(如protobuf ),以便两个系统可以相互理解。
Workers中内置的RPC系统能够跨JavaScript和Python进行翻译,而无需任何额外的工作。现在,您可以从JavaScript Worker调用Python Worker中定义的方法,反之亦然。您可以在Python和JavaScript之间共享对象,并从TypeScript调用Python对象上的方法。这一切都奏效了。
如果你在用TypeScript编写的Worker中定义了一个方法add (): ……你可以简单地从Python调用它:不需要依赖。您需要配置的只是服务绑定:那么,您可以用它做什么?此RPC系统允许您构建复杂的多语言系统,就像使用库一样。以下是跨语言RPC的一些功能。