当您通过.NET Remoting从远程对象返回Stream时,封面下会发生什么?

我从远程服务(.NET Remoting)返回Streams。但Streams也是一次性使用,我们都知道这是一种处置方式。当您通过.NET Remoting从远程对象返回Stream时,封面下会发生什么?

一旦我完成了消费,我可以在客户端调用Dispose。但是,我想知道从远程对象返回Stream时,封面下究竟发生了什么。

特别:

  1. 我应该更好地阅读一切都变成byte[]并返回,而不是Stream的?
  2. 或者.NET的远程处理方式对我来说完全是这样吗?
  3. 如果不是,返回Stream与返回byte[]有什么不同?最后,.NET Remoting必须以某种方式序列化数据呢?
  4. 在客户端调用Dispose是否有任何影响?客户端上的对象和服务器端上的对象之间是否存在任何魔法连接?我认为一旦它被封装后反序列化,在客户端调用Dispose()是没有意义的,或者在那里?

我回答麦克画报这里,因为我也想改善这个问题有点

好了,回话给服务器的流是(至少对我来说)意外。

要cosume远程对象不得不做这样的事情:

public static class ServiceFactory <T> 

{

public static T CreateProxy()

{

Type interfaceType = typeof(T);

string uri = ApplicationServer.ServerURL + interfaceType.FullName;

return (T)Activator.GetObject(interfaceType, uri);

}

}

所以你明确地伸手在一些URI指定的远程对象的消费。当远程对象上的方法返回一个继承自MarshallByRefObject的对象时,意味着它自动与远程对象相关联?好吧,应该很容易用我自己构建的测试对象进行重现。所以这也意味着我应该在客户端调用Dispose,并将它代理回服务器端的对象?

回答:

Stream是MarshalByRefObject。这是一种特殊的类型。这是一个代理。

  1. 可以既在.NET远程工作
  2. 没有,这是一个其他类型的 在生成的代理 - 寻找继承从 MarshalByRefObject的
  3. http://msdn.microsoft.com/en-us/library/system.marshalbyrefobject.aspx
  4. 是的,有点神奇了代理类

以上是 当您通过.NET Remoting从远程对象返回Stream时,封面下会发生什么? 的全部内容, 来源链接: utcz.com/qa/257209.html

回到顶部