Gua*_*ita 3 c++ sockets asynchronous ada boost-asio
我的任务是为分布式应用程序设计一个新的接口(在一台计算机上运行的多个进程,而不是物理上分布的),它由许多用C++/OpenGL编写的图形面板模块和用Ada编写的单个模块组成.
模块共享参数形式的信息(标量非结构化信息,例如:整数,字符串,浮点数等).我打算设计一个基于异步套接字的组件(以下我称之为"接口组件"或IC),由每个模块基于Boost :: Asio库链接,并带有两个简单的"客户端"原语:
Put([ParameterName], [DestinationModule], [Payload], [Type])
Get([ParameterName], [Sourcemodule], [Payload])
Run Code Online (Sandbox Code Playgroud)
ParameterName:指定唯一参数名称
DestinationModule/SourceModule:在系统中为模块添加
有效负载:实际数据
类型:标识传递参数类型的字符串或值
每个这些原语在服务器端由两个相应的函数处理(在IC上):
//No function parameters shown here as I don't know
//exactly how I'm going to do this
ProcessPutRequest()
ProcessGetRequest()
Run Code Online (Sandbox Code Playgroud)
因为传入命令的处理将由IC启动,所以我打算使用将传递给上述函数的函数处理程序.这样,每个模块负责的每个程序员都可以处理传入的命令并在他自己的代码上执行必要的类型转换.
问题是......这在阿达可能吗?我知道可以用C++导入函数并从Ada程序调用它btu是否可以将函数处理程序从Ada传递给C++组件?
(一个侧面问题是:您对实现此接口的更好方法有什么建议吗?)
在两种语言中编写基于套接字的通信都很简单,特别是对于需要仅传递标量值的接口.
创建模块独立于语言的相应的组件将远远高于试图让这种混合语言的接口和连接的工作更容易和更快.不要误解我,可以这样做,但我需要一个令人信服的理由让我这样做,而不是编写单独的,简单的套接字数据处理接口.