4 Stimmen

.NET Remoting Rückruf

Ist es möglich, einen Rückruf über Remoting zu übertragen? Ich würde gerne etwas in der Art von myRemoteObject.PerformStuff( x => Console.WriteLine(x) ); tun.

Wenn nicht, wie würde ich eine äquivalente Funktionalität implementieren?

Bearbeiten: Mir ist bekannt, dass Remoting durch WCF abgelöst wurde, aber ich bin immer noch an diesem speziellen Fall interessiert. (Aus Neugierde, wie ist das Problem bei WCF?)

5voto

Vlad P. Punkte 99

Wichtig ist zu beachten, dass Sie Duplex-Kanäle registrieren müssen, nicht nur einen Server oder einen Client. Andernfalls funktioniert der Rückruf nicht.

Zum Beispiel TcpChannel/HttpChannel/IpcChannel und NICHT TcpServerChannel/TcpClientChannel und so weiter.

Für Firewalled-Lösungen stellen Sie sicher, dass der Rückruf-Port auf dem 'Client' für beide TCP- und HTTP-Kanäle geöffnet ist (IPC verwendet keine Ports).

3voto

Andrew Shepherd Punkte 42283

Remoting bietet Unterstützung für Ereignisse. Der Clientcode kann einfach ein Ereignis abonnieren, das von der Serverklasse bereitgestellt wird. (Hier gibt es eine lange Liste von Vorbehalten).

Sie können auch eine Rückrufschnittstelle an eine Remote-Klasse übergeben, vorausgesetzt, Ihre Implementierung der Schnittstelle ist ein MarshalByRef-Objekt.

Schnittstelle IMyCallback
{
      void OnSomethingHappened(string information);
}

Klasse MyCallbackImplementation : MarshalByRefObject, IMyCallback
{
    public void OnSomethingHappened(string information)
    {
        // ...
    }

}

Klasse MyServerImplementation : MarshalByRefObject
{
     List _callbacks = new List();

     public void RegisterCallback(IMyCallback _callback)
     {
           _callbacks.Add(_callback);
     }

     public void InvokeCalbacks(string information)
     {
         foreach(IMyCallback callback in _callbacks)
         {
              _callback.OnSomethingHappened(information);
         }
     }

}

-1voto

RichardOD Punkte 28349

In WCF verwenden Sie Callback-Operationen. Wenn Sie WCF oder Remoting verwenden können, wählen Sie WCF. Remoting wird als veraltet eingestuft.

0 Stimmen

Beantwortet jedoch nicht die eigentliche Frage. :(

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X