Laden...

Kleine Frage zum Remoting

Erstellt von Powerslave vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.169 Views
P
Powerslave Themenstarter:in
554 Beiträge seit 2005
vor 13 Jahren
Kleine Frage zum Remoting

Guten Abend,

ich habe einen Windows Service der mit einer GUI kommunizieren soll.

Die GUI ist eine Konfigurations-Oberfläche für den Service, sie soll Einstellungen am Server (XML-Datei) ändern können und ihn benachrichtigen, falls eben Änderungen an der Konfiguration gespeichert wurden.
Zudem hat die GUI noch einen Monitor, der Server-Arbeiten loggen soll.

Für den ersten Punkt verwende ich momentan eine Singleton-ApplicationSettings Klasse, mit Read() und Write()-Methoden zum Lesen und Speichern der XML-Datei, die sowohl am Client als auch am Server bekannt ist.
Die Klasse wird als SingletonCall veröffentlicht.

Das funktioniert zwar, aber ich bin mir keineswegs sicher, ob das eine elegante geschweige denn eine gute Lösung ist. Habt ihr dazu eine Meinung, wie könnte es besser gehen?

Zu Punkt zwei (Monitoring) habe ich noch keine Idee, da der Client immer hören müsste, ob er eine Benachrichtigung vom Server bekommt.
Klappt das mittels Remoting überhaupt (z.B. mit Events)?

Wäre schön, wenn jemand ein paar Tipps auf Lager hätte. Danke!

Achtung! - Hinter dir ist ein dreiköpfiger Affe!

3.728 Beiträge seit 2005
vor 13 Jahren

Hallo Powerslave,

Das funktioniert zwar, aber ich bin mir keineswegs sicher, ob das eine elegante geschweige denn eine gute Lösung ist. Habt ihr dazu eine Meinung, wie könnte es besser gehen?

Das ist würklich nicht so gut. Eine vernünftige Remoting-Lösung hat immer mindestens die folgenden drei Assemblies:*Server *Shared *Client

In der Shared sind Typen definiert, die Client und Server gemeinsam benötigen. Damit sind aber nur serialisierbare Typen und Schnittstellen gemeint, aber ++keine ++von MarshalByRefObj abgeleiteten Objekte. Der Client sollte von dem Objekt, welches er fernsteuert nur die Schnittstelle, aber nicht die Implementierung kennen.

Zu Punkt zwei (Monitoring) habe ich noch keine Idee, da der Client immer hören müsste, ob er eine Benachrichtigung vom Server bekommt.
Klappt das mittels Remoting überhaupt (z.B. mit Events)?

Natürlich klappt das. Hier ein sehr schönes Beispiel dafür: NotificationService als Erweiterung zu Rainbirds ApplikationServer Beispiel

Für Dich könnte auch Zyan interessant sein. Zyan ist ein Framework für einfache Netzwerkkommunikation zwischen Komponenten. Da es auf .NET Remoting basiert, solltest Du Dich da schnell zu Hause fühlen. Quellcode ist auch frei zugänglich.

Wenn Du aber doch lieber bei .NET Standardklassen bleiben willst, findest Du hier noch ein etwas komplexeres Beispiel zu Remoting: .NET Applikationsserver