求.net序列化在网络传输的细节?
当一个实体类序列化后在网络中传输到目标程序后反序列化可以完全还原.
求这个过程的细节,
我自己做的时候如下:
class myclass
{
int a;
string str;
}
首先将各成员组成字符串,按"#"号分开,然后用Encoding.GetByte()方法转换,传输过去后,再按相反的方法还原,
这中间就有个弊端,"#"该怎么传输?
.net中是怎么处理这些细节的,是怎么序列化和还原的
[解决办法]
.NET本身的序列化功能是有一个专门的叫做格式化器的东西 可以讲对象序列化成不同的格式 比如二进制流,json,或者XML,序列化得时候会把对象的程序集,类型也写进去,然后反序列化得时候会加载程序集,(如果程序集不存在,那就会扔异常)获得对象的类型对象type,并在内存中开辟一个该对象大小的内存区域,并且全部置为0,然后获取里面的所有MemberInfo,遍历MemberInfo的时候读取序列化的数据,进行对象中数据的还原
某一种格式化器进行序列化的对象也只能用相对应的反序列化器
对于你的特殊字符如# 对于.net来说基本不是问题,因为通常我们都是序列化成二进制流,无所谓你是什么字符