【问题标题】:Question about .NET remoting and serializing关于 .NET 远程处理和序列化的问题
【发布时间】:2011-09-26 09:46:07
【问题描述】:

我有一个接口(让它命名为 OuterInt)和一个实现它的类(OuterClass)。接口 OuterInt 由其他接口(InnerInt1、InnerInt2 等)组成,并且有一些类(InnerClass1、InnerClass2 等)实现了这些内部接口。 OuterClass 由应用程序的服务器端通过 .NET 远程处理 (RemotingServices.Marshal(_OuterClass, "myOuterInt");) 我的问题是内部类在远程处理过程中是否会被序列化,应用程序的客户端是否应该知道这些类(例如使用这些类引用程序集)?我希望我明确地描述了我的问题,如果没有,请在 cmets 中问我。

【问题讨论】:

  • 远程处理已过时 - 改用 WCF。
  • 由于解决方法的条件,我无法使用 WCF。

标签: c# .net remoting


【解决方案1】:

Remoting(正如 Oded 所说,几乎不推荐使用)为 object 创建了一个远程挂钩;不是 API(接口)。因此,确实有必要在两端拥有相同的 dll(包含被远程的具体类型)。是序列化还是代理取决于它是否继承自MarshalByRefObject。但通常情况下:如果它在 one 一端的对象图中,那么它需要在另一端是可创建的。

如果可能的话,几乎任何其他实现,而不是远程处理,IMO。

【讨论】:

  • @Praetor12 (这不是一个愚蠢的问题;不要让自己失望)如果我发送一个对象的实例,但该对象可以看到其他东西,它可以看到其他东西.. 。 ETC;那么整个可达对象集就是图。远程处理,当它需要序列化时,使用BinaryFormatter,它将发送尽可能多的信息。
  • 感谢马克快速简单的回答。如果以这种方式进行远程处理 - 那是丑陋且无效的。我认为它只发送调用方法的参数或字段和属性的值,并且只需要序列化远程对象:(
  • @Praetor12 这一切都取决于究竟什么是代理和序列化;例如,方法的 result 可以是序列化的对象图,也可以是代理;同样,方法的 argument 可以是序列化图,也可以是代理。如果没有一些非常具体的例子,就不可能说更多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多