我正在尝试将大量用 python 编写的代码移植到 scala 中,并且我正在寻找关于选择哪种框架组合的意见。
这个东西本质上是一个 RPC(基于自定义 protobuf + xmlrpc)/HTTP 服务器和客户端,它执行一些数据库维护和转换,但后来将 rpcs 发送到此重写范围之外的工作人员。
作为实现 RPC 堆栈的网络 IO/基础,我使用的是 netty。旧事物中的所有工作流程都基于扭曲的 Deferred,为了替换它,我目前正在考虑直接使用 ChannelFuture,或者将其包装在 scalaz.Promise 或 akka.Future 中。
我想,问题的一部分是 - 它可以比手动处理回调更简单吗?我想,如果我选择这条路线,我可以稍后通过添加一些包装器和使用延续来简化它,但也许我需要从一开始就使用不同的东西?
我试图将工作流程融入演员模型中,但它似乎不适用于 stdlib 演员。
谢谢。
更新: Finagle 似乎非常接近于扭曲的模型,或者至少意外地相似。twitter.util.Future 看起来很像 twisted 的 Deferred。所以我暂时使用它。
更新 2:我首先移植它的原因是静态类型和性能。