Я ищу очень простой способ разрешить RPC между приложениями Java и C ++.
Моя система содержит несколько модулей Java и один модуль C ++.У меня не так много разных процедур для вызова (около 2-3 на модуль), и они не сильно изменятся (за исключением некоторых незначительных изменений, таких как добавление новой процедуры или изменение своего прототипа).Я пишу все модули, чтобы я мог использовать все, что захочу.Кроме того, все модули должны выполняться на одном и том же компьютере, за исключением одного, но возможность выполнения некоторых из них на другом компьютере без особых хлопот (в основном просто путем изменения файла конфигурации) была бы плюсом.
Всем модулям, машинам и сетям, используемым для этого приложения, доверяют, но я не хочу никаких недостатков безопасности в протоколе RPC, и я хочу, чтобы производительность была минимальной, поэтому чем проще будет протокол RPC, тем лучше.Кроме того, у каждого вызываемого метода есть только один прототип.
В данный момент я пытаюсь использовать RPC через сокеты TCP, поскольку я не хочу использовать ни RMI, ни примитивы Unix (нет стандартной реализации на Java и нетсетевые возможности).Я написал очень простой протокол RPC: через фрейм TCP вы даете сериализованное имя вызываемого метода, а затем сериализованный список аргументов.На стороне сервера он прослушивает объект и использует отражение для выполнения данного метода.В случае ошибки возвращаемый объект является DistantRPCError, инкапсулирующим ошибку.
Код очень прост (всего около 100 лок) и может использоваться в самых разных ситуациях (я работаю с потоками, поэтому я даже не зависим от сокетов).Проблема, с которой я сталкиваюсь, заключается в том, что я не могу тестировать свой код статически (простая инициализация локального теста длиннее, чем тестируемый код), и я не могу понять, насколько сложно будет реализовать его в C ++ (используя JNI для сериализации, Я полагаю).
Итак, мой вопрос: знаете ли вы о другом способе выполнения вызовов RPC как в Java, так и в C ++, который действительно прост (поэтому нет RMI) и которому можно доверять (я неЯ ищу что-то особенное, я хочу что-то стандартное и проверенное промышленностью.Кроме того, у меня есть некоторые ограничения по производительности (машина - недорогой компьютер, и у меня много криптологии, которую можно выполнять локально).И, как я уже сказал, большинство модулей (за исключением одного или двух) выполняются локально, поэтому меня также интересуют механизмы IPC (даже если было бы неплохо иметь только один механизм RPC для всех моих модулей).
Я могу дать вам мой реальный код RPC, если хотите, но, как я уже сказал, он даже не тестировался, поэтому я не уверен, что он вообще работает.
Редактировать: Я, вероятно, буду использовать SOAP, так как не вижу особого интереса к использованию ORB для моей конкретной проблемы.Спасибо за идею!