我一直在探索重新发明DataTable
,我想知道MarshalByValueComponent
的用途是什么。我相信它用于.NET Remoting(可能是WinForms和WebForms),但那被WCF取代的替换。我在GitHub或Google上找不到任何值得注意的用法。 MarshalByValueComponent
仍在使用吗?
答案 0 :(得分:8)
这很难回答。想要远程组件的整个概念是一个令人费解的问题。这些设计决策是在13年多前做出的,显然他们对远程操作如何实用有着截然不同的想法。哪个没有那么好,在.NET 3.0中进行了大量的重新设计
只是在不知道背后的想法的情况下对这一点进行了解释。 MarshalByValueComponent作为Component的对象存在。其中继承自MarshalByRefObject。到目前为止,大多数组件和控件都不是可序列化的,它们具有与它们相关联的太多运行时状态,这些状态永远不能在另一个运行时环境中正确地反序列化。拿一个OpenFileDialog,它在另一台机器上的逐字副本可以正常运行的几率是zilch。再次不得不暂停为什么你想要这样做的奇迹。对于任何控件,它有几十个属性,其值取决于操作系统状态。
但MBRO并不是那么令人满意,许多往返行程都会受到网络延迟的严重打击。有一些组件没有运行时状态,在远程处理方案中仍然有点意义。他们是一个组件本身就是一个怪癖,自从我在一个Form上删除一个DataSet已经有很长一段时间了。但他们继承了MBVC。只是忽略这一点,这是不切实际的。