我正在从远程服务(Streams
)返回.NET Remoting
。但是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,并将其代理回服务器端的对象?
答案 0 :(得分:3)
Stream是MarshalByRefObject。这是一种特殊的。这是代理人。