流程如下:
服务器利用BinaryFormatter 序列化对象成数组,然后将二进制数组编码成字符串发动到客户端,客户端解码字符串然后反序列化。
问题:
因为序列化和反序列化的程序集信息不一致,导致发序列化失败。
通用解决方案:
将需要序列化和反序列化操作的对象放入同一个应用程序集,比如生成一个类库,然后在客户端和服务器端添加引用。(参考
我在运用过程中,遇到以下问题:
由客户端主体本身是一个dll,通过一个称为loader的加载程序加载,loader可以检查更新主程序dll,如果主程序dll需要另外有依赖的类库,需要在主程序运行之前下载到本地,我的loader设计时没有这个功能(看来以后一定要加上去!虽然有后面之嫌疑)
鉴于此,我将对象写入客户端程序集,生成dll在服务器端添加引用,然后进行序列化和反序列化,成功。