c#序列化中的方法代码
当一个对象被序列化时(通过远程处理跨线发送),实例方法代码会被序列化吗?或者只是序列化了类级实例字段 我这样问是因为我的一些对象有大型方法,我想知道我是否应该使用DTO(数据传输对象)通过线路发送数据 我猜这只是数据加上一些类型版本数据。。。我说得对吗c#序列化中的方法代码,c#,C#,当一个对象被序列化时(通过远程处理跨线发送),实例方法代码会被序列化吗?或者只是序列化了类级实例字段 我这样问是因为我的一些对象有大型方法,我想知道我是否应该使用DTO(数据传输对象)通过线路发送数据 我猜这只是数据加上一些类型版本数据。。。我说得对吗 谢谢方法从不序列化 重“字段”-这一切都取决于序列化程序BinaryFormatter将处理多个字段;您提到了“remoting”,这意味着BinaryFormatter,但remoting在很大程度上是一个后遗症(关于remoting): 此主
谢谢方法从不序列化 重“字段”-这一切都取决于序列化程序
BinaryFormatter
将处理多个字段;您提到了“remoting”,这意味着BinaryFormatter,但remoting在很大程度上是一个后遗症(关于remoting):
此主题特定于遗留问题
保留用于生产的技术
与现有系统的向后兼容性
不推荐使用此应用程序
为了新的发展。分布的
现在应该开发应用程序
使用Windows通信
基金会(WCF)< < /P>
如果您使用web服务或WCF:XmlSerializer
执行公共字段+属性DataContractSerializer
将执行标记字段等操作
常规类通常可以作为DTO重用,但如果您需要对连接进行大量控制(或存在版本控制问题),则单独的DTO可能会有所帮助
(编辑/附加)还请注意,还有其他原因不喜欢
BinaryFormatter
——版本控制可能非常脆弱,修复起来非常痛苦(尽管可以实现)。如果这可能是一个问题,则存在其他(更宽容的)序列化程序。。。如果是这样,请告诉我,我会更新。保存的是与类和属性名对应的数据和标记。代码本身不会被序列化。我只想提到XmlSerializer和DataContractSerializer不能序列化循环引用。NetDataContractSerializer可以:@Martin:实际上,DataContractSerializer也可以。您只需要启用它(参数preserveObjectReferences
ctor)。远程处理不是传统技术,它有几个使用WCF无法实现的使用场景;我认为他们的意见可能值得注意。远程处理的最大用途(未来)可能是应用程序域之间的通信,开发人员对此一无所知。也;这种逻辑是循环的:WCF还允许使用远程处理无法实现的几种使用场景。。。我不确定这是好是坏——只是不同而已。