Согласно определению удаленного объекта. Любой объект за пределами домена приложения вызывающей стороны следует считать удаленным.
RemotingServices.IsObjectOutOfAppDomain
- возвращает false, если удаленный объект находится в том же домене приложения.
В статье MSDN Microsoft .NET Remoting: Технический обзор I
нашел следующее утверждение (в пункте «Объекты прокси») о
вызов метода для удаленных объектов:
... вызов [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;
}
}
}