某項目要調(diào)用現(xiàn)有的100多個DLL 五 自動封裝跨域調(diào)用的邏輯
上文說到了可以通過繼承的方式實現(xiàn)Class的可序列化
那么目前準備采用的方案如下
1.為所有輸入輸出參數(shù) 實現(xiàn)可序列化 (原來已經(jīng)序列化的就不必了)
2.在本域生成一個代理類, 負責封裝所有輸入?yún)?shù) 并調(diào)用遠程域的方法
3.在獨立域生成一個代理類,負責接收輸入?yún)?shù) 調(diào)用實際的方法,并且包裝返回值
調(diào)用流程
本身代碼 -> 本地代理類 -> 封裝輸入?yún)?shù) - > 跨域訪問 -> 接收輸入?yún)?shù) 并調(diào)用實際的DLL -> 封裝返回值 -> 本地代理類接收返回參數(shù)
一共要動態(tài)生成3個Assembly
一個保存 本域的代理類程序集
一個保存 獨立域的代理類程序集
還有一個保存所有的實體類 (輸入輸出參數(shù))
動態(tài)生成實體類包括以下內(nèi)容 (以下說的Class都是不可序列化的)
所有獨立的Class
所有Class的不可序列化的公開屬性和公開字段
所有集合類中不可序列化的部分
下一篇文章介紹 如何使用CodeCompiler 動態(tài)生成程序集
浙公網(wǎng)安備 33010602011771號