某项目要调用现有的100多个DLL 五 自动封装跨域调用的逻辑

上文说到了可以通过继承的方式实现Class的可序列化

那么目前准备采用的方案如下

1.为所有输入输出参数 实现可序列化 (原来已经序列化的就不必了)

2.在本域生成一个代理类, 负责封装所有输入参数 并调用远程域的方法

3.在独立域生成一个代理类,负责接收输入参数 调用实际的方法,并且包装返回值

调用流程

   本身代码 -> 本地代理类 -> 封装输入参数 - > 跨域访问 -> 接收输入参数 并调用实际的DLL -> 封装返回值 -> 本地代理类接收返回参数

一共要动态生成3个Assembly

一个保存 本域的代理类程序集

一个保存 独立域的代理类程序集

还有一个保存所有的实体类 (输入输出参数)

动态生成实体类包括以下内容 (以下说的Class都是不可序列化的)

 所有独立的Class 

 所有Class的不可序列化的公开属性和公开字段

 所有集合类中不可序列化的部分

下一篇文章介绍 如何使用CodeCompiler 动态生成程序集

posted on 2011-02-17 15:40  听说读写  阅读(399)  评论(0编辑  收藏  举报

导航