当您通过.NET Remoting从远程对象返回Stream时,封面下会发生什么?
我从远程服务(.NET Remoting
)返回Streams
。但Streams
也是一次性使用,我们都知道这是一种处置方式。当您通过.NET Remoting从远程对象返回Stream时,封面下会发生什么?
一旦我完成了消费,我可以在客户端调用Dispose
。但是,我想知道从远程对象返回Stream
时,封面下究竟发生了什么。
特别:
- 我应该更好地阅读一切都变成
byte[]
并返回,而不是Stream
的? - 或者.NET的远程处理方式对我来说完全是这样吗?
- 如果不是,返回
Stream
与返回byte[]
有什么不同?最后,.NET Remoting
必须以某种方式序列化数据呢? - 在客户端调用
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。这是一种特殊的类型。这是一个代理。
- 可以既在.NET远程工作
- 没有,这是一个其他类型的 在生成的代理 - 寻找继承从 MarshalByRefObject的
- http://msdn.microsoft.com/en-us/library/system.marshalbyrefobject.aspx
- 是的,有点神奇了代理类
以上是 当您通过.NET Remoting从远程对象返回Stream时,封面下会发生什么? 的全部内容, 来源链接: utcz.com/qa/257209.html