Создание самодокументированных актеров в Scala - PullRequest
3 голосов
/ 04 октября 2011

Я смотрю на реализацию веб-службы на основе JSON-RPC в Scala с использованием finagle . Я пытаюсь выяснить, как лучше структурировать код вызова RPC (т. Е. Принять десериализованный запрос и вызвать соответствующий метод).

Служба должна иметь возможность выдавать справочную страницу обо всех возможных принятых запросах и их параметрах. В Java я просто использовал бы аннотации (как для предоставления, так и для документирования функций), а затем чтобы служба RPC отражала соответствующие классы, обнаруживала все открытые методы и затем использовала отраженные MethodInfo для вызова функций, где это необходимо.

Какой идиоматический способ Scala для достижения чего-то подобного? Должен ли я использовать подход с передачей сообщений (т. Е. Просто передать объект запроса в субъект, попросить его определить, может ли он вызвать его и т. Д.)

1 Ответ

0 голосов
/ 06 мая 2013

Нам удалось сделать что-то похожее на подход, предложенный @Jan выше. Более конкретно, мы определили родительский класс для всех объектов запроса, который принимает ожидаемый тип возвращаемого значения в качестве параметра типа. Идя дальше, мы генерируем наши IDL протокола и привязки сериализации, отражая объекты API (чуть больше, чем наборы запросов).

В будущем функция экспериментальных типизированных каналов в Akka может помочь с некоторыми механиками.

...