某项目要调用现有的100多个DLL 五 自动封装跨域调用的逻辑
上文说到了可以通过继承的方式实现Class的可序列化
那么目前准备采用的方案如下
1.为所有输入输出参数 实现可序列化 (原来已经序列化的就不必了)
2.在本域生成一个代理类, 负责封装所有输入参数 并调用远程域的方法
3.在独立域生成一个代理类,负责接收输入参数 调用实际的方法,并且包装返回值
调用流程
本身代码 -> 本地代理类 -> 封装输入参数 - > 跨域访问 -> 接收输入参数 并调用实际的DLL -> 封装返回值 -> 本地代理类接收返回参数
一共要动态生成3个Assembly
一个保存 本域的代理类程序集
一个保存 独立域的代理类程序集
还有一个保存所有的实体类 (输入输出参数)
动态生成实体类包括以下内容 (以下说的Class都是不可序列化的)
所有独立的Class
所有Class的不可序列化的公开属性和公开字段
所有集合类中不可序列化的部分
下一篇文章介绍 如何使用CodeCompiler 动态生成程序集