Регистрация объекта _instances_ вместо _types_ с удаленным взаимодействием .NET? - PullRequest
0 голосов
/ 05 января 2009

Есть кое-что, чего я просто не понимаю .NET Remoting. Ну, на самом деле две вещи:

  1. Почему акцент делается на классы, которые наследуют от MarshalByRef вместо интерфейсов, как в оригинальном стиле COM (что мне понравилось)?

  2. Почему удаленное взаимодействие .NET всегда вынуждает вас эффективно создавать какой-то пул объектов вместо того, чтобы связывать определенные экземпляры с URL-адресом?

Код сервера:

RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemotingTypes.Server), "MyURL", WellKnownObjectMode.Singleton);

Код клиента:

RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemotingTypes.Server), "MyURL", WellKnownObjectMode.Singleton);

Но предположим, что я хочу создать экземпляр "Server" сам, а затем просто привязать его к конечной точке?

RemotingTypes.Server myInstance = new RemotingTypes.Server();

Что теперь? Как я могу связать «myInstance» с URL «MyURL»?

Ответы [ 2 ]

1 голос
/ 08 января 2009

Проблема с ответом Никда: я хотел знать, как связать уже созданный экземпляр с URL, а не как заставить удаленное взаимодействие .NET сделать это для меня (какой-то созданный мной экземпляр, который не имеет значения по умолчанию) конструктор, например).

Я надеялся, что будет какой-то эпический ответ, объясняющий «философию», лежащую в основе удаленного взаимодействия .NET, и почему она неразрывно связана с системой типов ...

Вместо этого я заключил, что просто: а) Это потому, что удаленное взаимодействие .NET - отстой. Не используйте его б) Используйте WCF вместо

0 голосов
/ 05 января 2009

Я не могу по-настоящему обратиться к пунктам 1 и 2, поскольку у меня нет опыта работы с COM и я не понимаю 2, но чтобы ответить на ваш конкретный последний вопрос, если вы используете класс system.Activator, вы можете сделать это:

RemotingTypes.Server  myInstance = (RemotingTypes.Server) Activator.GetObject(typeof(RemotingTypes.Server), MyUrl);

Это означает, что вы должны связать его во время строительства, но все это на стороне клиента.

Смотрите мой похожий вопрос .

...