我与使用大量动态服务注册的现有系统一起使用,例如使用Andorid HIDL / AIDL:
多个对象实现:
IHandler { Response handleRequet(Id subset, Request r)}
一个对象实现:
class IHandlerCoordinator {
Response handleRequet(Id subset, Request r);
void RegisterHandler(std::vector<Id> subsets, IHandler handler_for_subset_ids);
}
启动/动态地将多个对象注册到IHandlerCoordinator中(传递它们可以处理的预期子集),然后IHandlerCoordinator将传入的请求分派给客户端。
在xIDL中,它需要将服务作为参数传递,如何在Thrift / gRPC中对其进行仿真?
要节俭:还没有回调之类的东西。关于该主题有一些讨论(请参阅邮件列表档案和/或JIRA),但没有实现。最大的挑战是以与运输无关的方式来实现它,因此当前的共识是,如果需要,您必须手动实现它。
从技术上讲,有两种一般的实现方法:
使用gRPC更容易,因为gRPC专注于HTTP。 any kind of transport you can imagine从一开始就开放了Thrift。