生成、获取代理
一、说明
使用rpc的原则就是像使用本地方法一样,让开发者感觉不到 任何的不同。所以就必须把服务代理到本地,常见的方式有三种,动态代理接口,静态织入,静态编译。三种方式殊途同归,最终都是构建本地数据结构,然后和远程通信。三种方式各有优缺,具体如下:
优缺点 | 动态代理接口 | 静态织入(源代码生成) | 静态编译 |
---|---|---|---|
优点 | 动态构建类,灵活、适应性强。 | 静态代码生成,自定义类参数自动生成,修改较灵活,调用效率高 | 自定义类参数自动生成,密封性强,安全性高,调用效率高。 |
缺点 | 调用效率较低,自定义类参数须自行构建,实现须IL支持,对调用平台有要求,例如:IOS不允许动态类生成,则不可使用。 | 项目代码管理难统一,强迫症猝死 | 服务一旦有破坏性升级,则必须重新替换dll,灵活性几乎为0。 |
二、服务端源文件代理和源代码生成接口代理
2.1 区别
开源版不支持源代码生成接口代理,Pro全部支持。
2.2 场景对比
假设一个场景,你需要开发服务器和客户端。
这时,如果你使用服务端源文件代理,则需要做:
- 定义一个服务项目(可以写接口,也可以直接写逻辑,当然也可以分成两个项目)
- 编译项目,然后导出代理源代码。
- 将导出的源代码引用到客户端
如果你使用源代码生成接口代理,则需要做:
- 单独定义一个接口项目,用于存放服务接口,和接口所需的参数类型实体。
- 再定义一个接口实现项目,用于实现服务接口。
- 编译接口项目,将编译好的dll,引用到需要的客户端
效果
上述步骤如果全部完成,两种方式在客户端的使用效果基本完全一样。