4

我一直在探索重新发明DataTable,我想知道它的用途是什么MarshalByValueComponent。我相信它用于 .NET Remoting(可能是 WinForms 和 WebForms),但它已被 WCF 取代我在 GitHub 或 Google 上找不到它的任何显着用途。MarshalByValueComponent还在用吗?

4

1 回答 1

8

这很难回答。想要远程组件的整个概念是一个神秘的概念。这些设计决策是在 13 多年前做出的,显然他们对远程处理的实用性有着截然不同的想法。效果不太好,在 .NET 3.0 中进行了大量重新设计

只是在不知道其背后的想法的情况下对此进行了思考。MarshalByValueComponent 作为 Component 的对立面存在。它继承自 MarshalByRefObject。到目前为止,大多数组件和控件都不是可序列化的,它们有太多与之相关的运行时状态,在另一个运行时环境中永远无法正确反序列化。以 OpenFileDialog 为例,它在另一台机器上的逐字副本可以正确运行的几率是 zilch。再次不得不暂停你为什么要这样做的奇迹。任何控件都一样,它有几十个属性,其值取决于操作系统状态。

但是 MBRO 并不是那么理想,许多往返都会受到网络延迟的严重影响。有一些组件没有运行时状态,但在远程处理场景中仍然有意义。它们是一个组件本身就是一个怪癖,自从我在表单上删除数据集以来已经有很长时间了。但他们因此继承了 MBVC。忽略这个,不实用。

于 2013-04-25T19:47:42.780 回答