.net - 为什么 SerializableAttribute 不包含在 Silverlight 版本的 FCL 中?

标签 .net silverlight serialization serializable fcl

为什么 SerializableAttribute 不包含在 Silverlight 版本的 FCL 中?

而且,BinaryFormatter 也不在那里。

我不是在寻找替代解决方案,我只是对这个事实感到好奇。

二进制序列化是否从根本上违反了 Silverlight 的某些设计规则?

最佳答案

首先,Silverlight 有不同的权限规则——在私有(private)领域更难获得。当然,对于 FCL 设计人员来说,我认为这不是问题——他们可以将其编码到运行时(但重新创建一种潜在的绕过沙箱的方法)。

也许最重要的是 Silverlight 不需要(或不想)支持“远程处理”,这是它必须存在于主要 .NET BCL 中的主要原因。当然,远程处理通常已经过时,但需要在核心 .NET 中才能向后兼容。

第三个原因很可能是 BinaryFormatter 的本质。 ; SL 中的许多类在 SL 运行时中有不同的实现,以说明不同的功能和可用类型/安全性等。这使得它几乎不可能 电线兼容使用核心 .NET 运行时。因此,您将无法与您的服务器代码共享它。

总的来说,那么,剪掉它是很有意义的。对于 app<===>server,存在基于合约的序列化器;和其他(我敢说:更好的)二进制序列化器可以避免所有这些问题(即完全可移植)。

关于.net - 为什么 SerializableAttribute 不包含在 Silverlight 版本的 FCL 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5700840/

相关文章:

c++ - 类对象的序列化

c# - 如何使用相同的触摸在多个 UIElement 上触发 ManipulationStarted?

c# - 使用 system.text.json 不再可能在 c# 中进行序列化/反序列化

.net - 检测是否支持 SSL

C#按原样获取一个tcp数据包数据

silverlight - silverlight中是否可以动态更改所需的数据注释

Silverlight 可写位图

c# - 是否可以向序列化集合添加属性?

c# - Windows 服务在安装时不工作,在 Debug模式下工作正常;移动/删除文件时崩溃

播放 .wav 时的 C# 消息队列