[英]What happens when a connection is terminated in the middle of a remote call on a .NET remoting server?
[英]What happens under the cover when you return a Stream from a remote object via .NET Remoting
我正在从远程服务( .NET Remoting
)返回Streams
。 但Streams
也是一次性用品,我们都知道这些一次性用品需要处理。
一旦我完成消费后,我可以在客户端调用Dispose
。 但是,当我从远程对象返回Stream
时,我想知道封面下究竟发生了什么。
特别:
byte[]
并返回而不是Stream
吗? Stream
与返回一个byte[]
什么不同? 最后, .NET Remoting
必须以某种方式序列化数据? Dispose
是否甚至有任何影响? 客户端对象和服务器端对象之间是否存在神奇的连接? 我认为一旦它在封面后反序列化,在客户端调用Dispose()
或在那里是没有意义的吗? 我在这里回答Mike Bild,因为我也希望稍微改进一下这个问题
好的,所以回流到服务器的流是(对我来说至少)意想不到的。
为了获取远程对象,必须执行以下操作:
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。 这是一种特殊的。 这是代理人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.