Bewährtes Verfahren zum Teilen von Daten und Benachrichtigungen zwischen Anwendungen [geschlossen]

8

Was ist die beste Vorgehensweise, um Daten zwischen verschiedenen Anwendungen auf demselben Computer auszutauschen und sie zu benachrichtigen, wenn sich die Daten geändert haben?

Ich habe 4 Anwendungen, die dasselbe Projekt verwenden, um ihre Einstellungen zu ändern. Wenn ich die Einstellung im Projekt ändere, müssen andere Anwendungen auf diese Änderung reagieren und müssen wissen, dass die Einstellung geändert wurde.

Ich habe über IPC nachgedacht, um Einstellungsänderungen vorzunehmen und dann die Änderungsinformationen an alle Benutzer zu senden, aber es wäre großartig, wenn eine solche Bibliothek bereits existiert.

BEARBEITEN:

Ich habe eine Lösung gefunden, die für mich funktioniert hat. Wir haben uns entschieden, nicht viel Zeit in diese Funktionalität zu investieren, da es nicht extrem kritisch ist, die anderen Anwendungen zu aktualisieren.

Wir speichern unsere Einstellungen wie zuvor in einer XML-Datei und ich habe FileSystemWatcher für diese Datei, um alle Änderungen zu erhalten. Wenn ich also die Einstellungen ändere, gehen alle 4 Anwendungen und lesen die Einstellungsdatei und bestimmen, ob sie eine Aktion ausführen müssen oder nicht.

    
neutron 08.05.2013, 09:13
quelle

4 Antworten

1

Die zu wählende Lösung hängt von verschiedenen Parametern ab:

  1. Wie viel Aufwand können Sie in die Implementierung investieren?
  2. Wie wichtig ist es, dass Anwendungen schnell aktualisiert werden?
  3. Welche Umgebung ist für Sie / Ihre Kunden verfügbar?
  4. ...

Zum Beispiel:

  • speichert die Änderungen in der Datenbank / Konfigurationsdatei und lässt die Anwendungen einen separaten Thread ausführen, der dediziert nach Einstellungsänderungen alle n Sekunden sucht. Es ist billig und einfach, diese Lösung zu implementieren, aber nicht "nett", und viele Entwickler werden eine solche Lösung ablehnen.
  • Erstellen Sie einen WCF-Dienst, der Änderungen an den Anwendungen "veröffentlicht". In diesem Fall werden die Anwendungen mit Dual Bindings sofort aktualisiert. Natürlich ist diese Lösung teurer ....

Dies sind nur zwei Beispiele von vielen verfügbaren Lösungen (Shared Memory, gemeinsame Anwendungsdomäne usw.).

    
Amit Shkolnik 08.05.2013 09:32
quelle
1

Was Sie getan haben, scheint weise zu sein. Und ich habe eine andere Erfahrung mit MSMQ . Sie können private oder öffentliche Warteschlangen erstellen, da Sie alle Ihre Apps auf demselben Computer haben, die private Warteschlange ist in Ordnung, andernfalls sollten Sie öffentliche Warteschlangen verwenden. In dieser Zeit hatte ich Spring.Net als mein Framework (Object Builder & amp; Abhängigkeit Injector) gewählt. Spring.net hat brillante QuickStarts und einer von ihnen verwendet MSMQ als kommunizierende Bridge zwischen Anwendungen. Wenn ich Sie wäre, würde ich den Queuing-Ansatz verwenden, da Sie Apps benachrichtigen können, die auf verschiedenen Rechnern laufen.

Außerdem bietet WCF praktische Möglichkeiten zum Entwickeln eines verteilten Service über die zugrunde liegende MSMQ-Komponente.

Darüber hinaus ist Publish-Subscribe ein gängiges Entwurfsmuster, das häufig in Client / Server verwendet wird Kommunikationsanwendungen. In der WCF Service-Entwicklung wird das Publish-Subscribe -Muster verwendet helfen auch in solchen Szenarien, in denen die Dienstanwendung Daten bestimmten Gruppen zur Verfügung stellt Clients, die an dem Service und den Daten interessiert sind, werden den Kunden als Push-Modell zur Verfügung gestellt aktiv (statt vom Kunden abzurufen)

    
Masoud 01.06.2013 11:40
quelle
0

Wie wäre es mit den eingebauten Abhängigkeitsobjekten? wie:

  1. CacheDependency - Ссылка
  2. SqlDependency - Ссылка

diese sind ziemlich einfach zu implementieren und und sie arbeiten ziemlich gut

    
JanivZ 08.05.2013 09:38
quelle
0

Wie wäre es mit Netzwerk-Sockets? Sie können Listener und Absender an verschiedenen Ports einrichten

    
G8XSU 01.06.2013 11:45
quelle

Tags und Links