2012-01-20 3 views
1

У меня есть две службы, работающие в одном и том же процессе, размещающие одни и те же классы, на разных IP-портах..Net Remoting Calling Context

Предполагается, что созданные экземпляры классов будут работать против разных баз данных в зависимости от того, какой порт был вызван.

Можно ли получить некоторую информацию «владельца» в конструкторе моих классов, которые являются MarshalByRefObjects?

Ссылка на Сервис, TcpCannel или некоторые произвольные значения. Все будет в порядке, я в отчаянии.

Осветление (я надеюсь): В моей Main() У меня есть

ServicesToRun = new ServiceBase[] { 
new BatchServer("ServerA"), 
new BatchServer("ServerB")}; 

и в ExecuteService() в моей реализации ServiceBase у меня есть:

RemotingConfiguration.RegisterWellKnownServiceType(
    typeof(RmtObject), "RmtObject", 
    WellKnownObjectMode.Singleton); 

на стороне клиента я создаю такой объект:

(RmtObject)Activator.GetObject(typeof(RmtObject), theURI, WellKnownObjectMode.Singleton); 

Когда метод i выполнен на RmtObject I необходимо знать, в RmtObject, если он принадлежит ServerA или ServerB.

Вместо этого я мог бы использовать WellKnownObjectMode.SingleCall, если это упростит ситуацию.

+0

Вы можете уточнить свой вопрос? Я не понимаю эту проблему. – leppie

+1

Вы попробовали это? http://stackoverflow.com/questions/527676/identifying-the-client-during-a-net-remoting-invocation – chandmk

+0

Спасибо @ user6130. Реализация моего SinkProvider решила его. Извините, я не могу отметить комментарий в качестве ответа. – idstam

ответ