我们真的需要为 RPC 导入 Corda 的代码吗?未来如何?

Do we really need to import Corda's code for RPC ? How in the future?

我知道 Corda 正在删除其 web 服务器模块 并且在 documentation 他们建议使用其他框架。

在一个示例 ("spring-observable-stream") 中,他们使用 Spring Boot 作为服务器端 API,并使用 RPC 调用实际 运行 Corda 节点。这很好,与我必须做的相当。

在那个例子中,作者导入了特定的 Corda 的 RPC 代码,以及所需的实际流(和状态)的代码。

我想问的是,是否有可能通过使用通用 RPC 库(有什么建议吗?)来避免这种混乱并使 Web 服务器 API 独立于实际 Corda/CordApp 的代码。 =12=]

如果相反,我必须导入特定于 Corda 的代码(有原因吗?),我想问你:

  1. 从 Gradle 的角度来看,这样做的最低要求是什么?
  2. 是否可以在 CordApp 上实施某种插件来减少这种混乱?

老实说,我对与 CordApp 进行交互的更通用的方式感兴趣(例如来自 Python),但我知道由于 AMQP 集成还没有准备好,我们现在必须留在 JVM 上。因此,请随意回答我们今天需要从 Kotlin 做什么(我必须将其用于短期 PoC)……

提前致谢!

目前,您的服务器必须依赖 Corda RPC 库才能通过 RPC 与节点交互。 Corda 尚未公开通过 RPC 发送和接收消息的独立格式。

您的服务器还需要依赖任何包含服务器将通过 RPC 启动的流或包含将通过 RPC 返回的类型的 CorDapp。否则,您的服务器将无法启动流程或反序列化返回的类型。

如果您使用的是 Gradle,则最小依赖项块可能如下所示:

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"

    cordaCompile "net.corda:corda-rpc:$corda_release_version"

    compile "com.github.corda:cordapp-example:release-V1-SNAPSHOT"
}

在这里,我们依赖于 corda-rpc 库,并且还使用 JitPack 依赖于 CorDapp,我们在其中定义我们想要通过 RPC start/return 的流和状态。

如果你愿意,你可以将 CorDapp 模块化,这样你需要依赖的所有 类 RPC 都包含在一个单独的模块中,并且只依赖那个模块。