Skip to main content

生成、获取代理

一、说明

使用rpc的原则就是像使用本地方法一样,让开发者感觉不到任何的不同。所以就必须把服务代理到本地,常见的方式有三种,动态代理接口静态织入静态编译。三种方式殊途同归,最终都是构建本地数据结构,然后和远程通信。三种方式各有优缺,具体如下:

优缺点动态代理接口静态织入(源代码生成)静态编译
优点动态构建类,灵活、适应性强。静态代码生成,自定义类参数自动生成,修改较灵活,调用效率高自定义类参数自动生成,密封性强,安全性高,调用效率高。
缺点调用效率较低,自定义类参数须自行构建,实现须IL支持,对调用平台有要求,例如:IOS不允许动态类生成,则不可使用。项目代码管理难统一,强迫症猝死服务一旦有破坏性升级,则必须重新替换dll,灵活性几乎为0。
提示

该内容,对 TouchRpcJsonRpcXmlRpcWebApi均适用。

二、服务端源文件代理和源代码生成接口代理

2.1 区别

开源版不支持源代码生成接口代理,企业版全部支持。

2.2 场景对比

假设一个场景,你需要开发服务器和客户端。

这时,如果你使用服务端源文件代理,则需要做:

  1. 定义一个服务项目(可以写接口,也可以直接写逻辑,当然也可以分成两个项目)
  2. 编译项目,然后导出代理源代码。
  3. 将导出的源代码引用到客户端

如果你使用源代码生成接口代理,则需要做:

  1. 单独定义一个接口项目,用于存放服务接口,和接口所需的参数类型实体。
  2. 再定义一个接口实现项目,用于实现服务接口。
  3. 编译接口项目,将编译好的dll,引用到需要的客户端
效果

上述步骤如果全部完成,两种方式在客户端的使用效果基本完全一样。