RemotingServices.IsObjectOutOfAppDomain, когда он вернет false? - PullRequest
0 голосов
/ 11 июня 2009

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

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;
}
}
}

1 Ответ

0 голосов
/ 11 июня 2009

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

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

...