Ну, отсортированные по сложности, накладным расходам и скорости обратного хода, мне в голову приходят следующие возможности:
- SOAP (который вы уже исключили)
- Корба
- DCOM (DCE)
- обмен сообщениями XML
- ONC-RPC (SunRPC)
- обмен HTTP-подобными сообщениями
- обмен telnet-подобными сообщениями (ориентирован на линию)
Для всех вы получите более или менее готовые к использованию (готовые разочароваться) библиотеки, пакеты и т. Д. В качестве открытого источника.
Некоторые из вышеперечисленных могут показаться странными, но на самом деле мы часто используем HTTP или Telnet для RPC. Причина в том, что вам не нужны модные среды для тестирования, любое самое чужое программное обеспечение может легко адаптироваться к нему. Это также позволяет легко использовать сервисы вашей программы из WebBrowser, сеанса telnet или другой программы, которая просто открывает ей сокет и отправляет запрос. Например, большинство моих программ содержат аргумент командной строки --scripting, который открывает порт telnet, через который вы можете отправлять доступ ко всей объектной модели приложений через язык, похожий на JavaScript. Это также может быть использовано для удаленного управления любым приложением очень легко - без каких-либо усилий. Если вы однажды написали такой фреймворк, его можно использовать для каждого нового приложения (посмотрите, как это выглядит здесь )
Я должен признать, что все мои приложения написаны в среде, в которой все вышеперечисленное уже включено и готово к использованию как в качестве клиентов, так и в качестве серверов.
Резюме: используйте самую простую вещь, которая делает работу. Вам не нужно Corba или SOAP, если ваше приложение не нужно интегрировать в такую инфраструктуру.