随着最近对sourcegenerator的了解,我发现了该方案用于rpc上是可行性。并且可以支持到客户端和服务端。
原先了解到的DispatchProxy在iOS下是不可用的,因为其不允许动态类生成。
那么如果用SourceGenerator是可以使用静态编译的方式实现rpc的支持,而且基本没有性能损耗。
至于猫大前面提出的ET不用OOP,这种接口的形式不适合ET。这个应该不是个问题,因为现在的ET在协议和消息这块的实现方式就是基于接口的OOP方式来实现的。
CodeTypes里有所有协议消息类型的映射关系。相当于都是各种网络消息处理器的单例保存在这里。而MessageAttribute这个标签会将消息标记到应用场景上。也就是说在消息处理器的定位是通过 AppSceneType.MessageHandlerClass.HandleMethodInstance来进行定位的。
而我前面提出的rpc方案也可以使用类似的方式进行rpc服务方法定位。
最近打算尝试实现下这个方案。