Перенос кода, основанного на скрученном Python, на scala: необходим совет по фреймворку

Я пытаюсь перенести значительный объем кода, написанного на python, с twisted, на scala, и я ищу мнения о том, какую комбинацию фреймворков выбрать.

По сути, это RPC (custom protobuf-based + xmlrpc) / HTTP-сервер и клиент, который выполняет некоторые операции по хранению и преобразованию базы данных, но позже отправляет rpcs рабочим, которые выходят за рамки этой перезаписи.

В качестве сетевой базы ввода-вывода для реализации стека RPC я использую netty. Все рабочие процессы в старой штуке были основаны на Deferred twisted, и для его замены я сейчас рассматриваю либо ChannelFuture напрямую, либо оборачиваю его либо в scalaz.Promise, либо в akka.Future.

Я думаю, это одна часть вопроса есть - можно ли это сделать проще, чем вручную работать с обратными вызовами? Думаю, если я выберу этот маршрут, я смогу упростить его позже, добавив несколько оболочек и используя продолжения, но, может быть, мне нужно использовать что-то отличное от того, что было в начале?

Я пытался подогнать рабочий процесс внутри модели акторов, но похоже, что это не работает с акторами stdlib.

Спасибо.

Обновление: Finagle Похоже, что он смоделирован или, по крайней мере, случайно похож на скрученный. twitter.util.Future очень похож на Deferred от twisted. Так что я использую его на данный момент.

Обновление 2: Причины, по которым я перенес его в первую очередь, - это статическая типизация и производительность.

7
задан Stingray 16 March 2013 в 12:50
поделиться