我正在考虑使用finagle在Scala中实现基于JSON-RPC的Web服务。我正在尝试找出如何最好地构造RPC调用代码(即,获取反序列化的请求并调用适当的方法)。
服务需要能够在所有可能接受的请求及其参数上吐出帮助页面。在Java中,我只是使用注释(对于公开和文档函数),然后使RPC服务反映在适当的类上,检测所有公开的方法,然后使用反射的MethodInfo来调用适当的函数。
什么是惯用的Scala方法来实现类似的东西?我应该使用消息传递方法(即,只是将请求对象传递给actor,让它确定它是否可以调用它等)。
答案 0 :(得分:0)
我们成功地做了类似于上面@Jan建议的方法。更具体地说,我们为所有请求对象定义了一个父类,它将期望的返回类型作为类型参数。更进一步,我们通过反映API对象(仅仅是请求集)生成协议IDL和序列化绑定。
将来,Akka中的实验类型频道功能可能对某些机制有所帮助。