3

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

而且,BinaryFormatter 也不在那里。

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

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

4

1 回答 1

1

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

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

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

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

于 2011-04-18T09:27:03.117 回答