【问题标题】:Do we really need to import Corda's code for RPC ? How in the future?我们真的需要为 RPC 导入 Corda 的代码吗?未来如何?
【发布时间】:2017-11-30 01:39:23
【问题描述】:

我知道 Corda 正在移除它的 web 服务器模块,在documentation 他们建议使用其他框架。

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

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

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

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

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

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

提前谢谢你!

【问题讨论】:

    标签: rpc corda


    【解决方案1】:

    目前,您的服务器必须依赖 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 启动/返回的流和状态。

    如果需要,您可以将 CorDapp 模块化,以便 RPC 需要依赖的所有类都包含在单独的模块中,并且仅依赖于该模块。

    【讨论】:

    • 好吧,这就是我的想法(即使希望不同)。再次感谢您!
    • 如果其他人有兴趣,我已经开始将 CordApp 作为 Git 的子模块,而不是 JitPack(为私人仓库付费),并且我已指示 Gradle 将该子文件夹视为子项目.它似乎有效,但可能需要更多努力...... :)
    • 如果可以的话,发布工作代码:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 2012-02-02
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    相关资源
    最近更新 更多