2011-10-04 25 views
3

我正在尋找使用finagle在Scala中實現基於JSON-RPC的Web服務。我試圖找出如何最好地構造RPC調用代碼(即採取反序列化的請求並調用適當的方法)。在Scala中創建自我記錄的演員

該服務需要能夠吐出所有可能接受的請求及其參數的幫助頁面。在Java中,我會簡單地使用註釋(既要公開函數又要文檔函數),然後讓RPC服務反映適當的類,檢測所有公開的方法,然後使用反映的MethodInfo在適當的位置調用函數。

什麼是習慣斯卡拉方式來實現類似的東西?我是否應該使用消息傳遞的方法(即,只需將一個請求對象傳遞給actor,確定它是否可以調用它)等等。

+0

如果你使用Akka(2.1里程碑)而不是Finagle,你可以使用scala 2.10,它是新的反射API來生成你想要的。 – Jan

回答

0

我們成功完成了類似於@Jan提出的方法。更具體地說,我們爲所有請求對象定義了一個父類,它將期望的返回類型作爲類型參數。更進一步,我們通過反映API對象(稍多於一組請求)來生成協議IDL和序列化綁定。

未來,Akka的實驗類型通道功能可能對某些機制有所幫助。