RemotingServices.IsObjectOutOfAppDomain, когда он вернет false?

В соответствии с определением удаленного объекта — любой объект за пределами домена приложения вызывающей стороны следует считать удаленным.

RemotingServices.IsObjectOutOfAppDomain< /a> — возвращает false, если удаленный объект находится в том же домене приложения.

В статье 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;
}
}
}

person Community    schedule 11.06.2009    source источник
comment
У меня не так давно был интересный случай. У меня было клиент-серверное приложение, где серверы могли быть «клиентами» другого сервера. Я хотел написать код, который проверяет, что сервер не связывается с «самим собой». Наткнулся на этот пост. Решил поделиться, так как это может быть связано ..   -  person lb.    schedule 08.04.2011


Ответы (1)


Ну, один очевидный случай, когда он вернет false, — это когда объект не является прокси, а является обычным объектом .NET в локальном домене (без удаленного взаимодействия).

Я тоже не совсем понимаю примечание MSDN ;-p

person Marc Gravell    schedule 11.06.2009