为什么 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/