В соответствии с определением удаленного объекта — любой объект за пределами домена приложения вызывающей стороны следует считать удаленным.
В статье MSDN Удаленное взаимодействие Microsoft .NET: технический обзор Я нашел следующее утверждение (в параграфе «Proxy Objects») о вызовах методов на удаленных объектах:
... вызов [method] проверяется, чтобы определить, является ли он допустимым методом удаленного объекта и находится ли экземпляр удаленного объекта в том же домене приложения, что и прокси. Если это так, вызов простого метода направляется к фактическому объекту.
Поэтому я удивлен, когда удаленный объект и прокси будут находиться в одном и том же домене приложения.
пример примера:
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
namespace RemotingSamples
{
public class HelloServer : MarshalByRefObject
{
public HelloServer()
{
Console.WriteLine("HelloServer activated");
}
public String HelloMethod(String name)
{
return "Hi there " + name;
}
}
public class Server
{
public static int Main(string [] args)
{
// server code
ChannelServices.RegisterChannel(new TcpChannel(8085));
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(HelloServer), "SayHelloSingleton",
WellKnownObjectMode.Singleton);
// client code
HelloServer obj = HelloServer)Activator.GetObject(
typeof(HelloServer), "tcp://localhost:8085/SayHelloSingleton");
System.Console.WriteLine(
"IsTransparentProxy={0}, IsOutOfAppDomain={1}",
RemotingServices.IsTransparentProxy(obj),
RemotingServices.IsObjectOutOfAppDomain(obj));
Console.WriteLine(obj.HelloMethod("server"));
return 0;
}
}
}