Laden...

Remoting

Erstellt von Guggsdu vor 19 Jahren Letzter Beitrag vor 19 Jahren 1.465 Views
Guggsdu Themenstarter:in
220 Beiträge seit 2004
vor 19 Jahren
Remoting

Tach zusammen!

Ich versuche krampfhaft das .Net-Remoting zu verstehen. Ich habe die Tips hier im Forum beherzigt, das Web durchwühlt, eine Menge gefunden und nix damit anfangen können.

Kann mir jemand von euch mal eine winzige Beispielapplikation schreiben? Ich habe folgendes (als Beispiel) vor:

Auf Rechner A läuft ein Programm (ProgA) und auf Rechner B läuft ein Programm (ProgB).

In ProgA läuft ein Timer. Dieser löst ein Ereignis aus, welches an ProgB geschickt werden soll, der eine Message ausgibt.

Kann ProgB überhaupt ein Ereignis von ProgA abonieren? Wie kann man das sonst lösen??

Bitte helft einem Mann, der die Übersicht verloren hat!!

Gruß
Guggsdu

Gruß
Guggsdu

49.485 Beiträge seit 2005
vor 19 Jahren

Hallo Guggsdu,

meine Programm in "Dateiassoziation" sollte schonmal eine gute Grundlage sein, für das was du willst. Das Programm enthält momentan sowohl den Client- als auch den Server-Teil; das müsstest du noch aufteilen. Aber ansonsten ist es wohl was zu willst: Die Client-Instanz schickt per Remoting eine Nachicht an die Server-Instanz.

HTH

herbivore

Guggsdu Themenstarter:in
220 Beiträge seit 2004
vor 19 Jahren

Ich hab noch so'n bischen Probleme damit das zu verstehen.

Wozu brauche ich die abstrakte Klasse. Muss sie abstrakt sein?

Bedeutet das: ein Client kann nicht ein Event des Servers abonieren, sondern der Server müßte direkt den Client ansprechen und ihm eine Nachricht senden (oder eine Fkt ausführen)?

Gruß
Guggsdu

Gruß
Guggsdu

49.485 Beiträge seit 2005
vor 19 Jahren

Hallo Guggsdu,

Wozu brauche ich die abstrakte Klasse. Muss sie abstrakt sein?

die abstrakte Klasse bildet das "Hauptprogramm" der Anwendung. Sie ist deshalb abstrakt, weil in .NET die Anwendung selbst nicht als Objekt, sondern über statische Methoden realisiert ist.

Bedeutet das: ein Client kann nicht ein Event des Servers abonnieren, sondern der Server müsste direkt den Client ansprechen und ihm eine Nachricht senden (oder eine Fkt ausführen)?

Bevor ich die Frage beantworte, sollten wir erstmal die Begriffe Client und Server klären. Einerseits ist 'Server' im Sinne von die 'Server-Komponente' einer Anwendung, der Teil, der Dienste für die Client-Komponente der Anwendung erbringt. Also ein Webserver liefert die Daten, die der Browser angefordert hat. Analog ist beim .NET-Remoting der Server, der Teil, der das zu benutzende Objekt (hier ArgsReceviver) zur Verfügung stellt und der Client, der Teil, der Methoden des Objekts benutzt.

Um das zu Abonnent zu realisieren, das du willst, ist es vermutlich notwendig, das .NET-Remoting in beiden Richtungen zu verwenden. Also das sowohl die Server-Komponente also auch die Client-Komonente deiner Anwendung ein Remote-Objekt zur Verfügung stellen, dass dann die jeweils andere Komponente benutzen kann (Dazu muss man dann mindestens verschiedene Portnummern verwenden).

Die Client-Komponente würde dann über das Objekt der Server-Komponente das Abonnent bestellen und die Server-Komponente würde über das Objekt der Client-Komponente die auftretenden abonnierten Events an die Client-Komponente schicken.

Man braucht beide Richtungen, da bei einer Client-Server-Kommunikation der Client immer der aktive/auslösende und der Server immer der passive/reagierende Teil ist. Das Bestellen des Abonnements löst jedoch die Client-Komponente aus und die Server-Komponente reagiert, wogegen beim Eintreten eines Ereignisses die Server-Komopnente die zugehörige Nachricht auslöst und die Client-Komponente darauf reagiert.

HTH

herbivore