Wir haben eine Anwendung geschrieben, die unsere Kundenkonstakte verwalten soll. Diese WinForms-VB.NET-Appl. benutzt für den Datenzugriff einen eingens geschriebenen BindingSource Mechanismus, da wir VPN-optimiert arbeiten wollen.
Nun wäre es hilfreich, wenn verschiedene Instanzen der Anwendung mitbekommen könnten, dass sich ein Datensatz geändert hat.
Leider funktioniert das Konzept mit den Query notifications nicht mit unserer VPN-Optimierung da dise das Statement IN (...) nutzt, was nicht zulässig ist. Man bekommt dann in dem SqlDependencyOnChange-Event 'Invalid Statement' geworfen.
Daher meine Frage: Auf welchen Weg kann ich einer Anwendung mitteilen, dass sich die Daten, die sie grade benutzt, verändert haben und daher neu geladen werden müssen. Besonders nett wäre dass, wenn man Datensätze hinzufügt und diese dann auch bei den anderen erscheinen sollen
Ich hab Zyan bereits für eine ähnliche Aufgabe verwendet.
"Zyan ist ein Framework für die einfache Erstellung von verteilten Anwendungen. Erstellen Sie ganz einfach Applikationen, deren Komponenten entweder über ein LAN oder über das Internet miteinander kommunizieren. Zyan ist sehr einfach einzusetzen und hochgradig anpassbar. Außerdem unterstützt Zyan auch Event Based Components!"
Beispiele zur Zyan-Programmierung findest Du im Code-Repository von Zyan unter http://zyan.codeplex.com/SourceControl/list/changesets im Order examples.
Wenn Du Fragen zu Zyan hast, kannst Du diese gerne im Zyan-Diskussionsforum stellen: http://zyan.codeplex.com/discussions
Ich habe das schon mal mit SendMessage gelöst, einfach eine WM_USER-Message an die entsprechenden Fenster geschickt. Eine andere Möglichkeit wären ev. über Remoting, Änderungen in ein File schreiben und einen Filewatch aufsetzen.
Das SendMessage würde ja nur dann funktionieren, wenn die Instanzen auf dem selbem PC laufen. Oder kann man diese Messages auch übers Netzwerk an andere Instanzen auf an deren PCs senden?
Würde das SendMessage in der der Applikation oder auf dem SQL-2008 server integriert werden damit alle es mitbekommen?
Sendmessage funktioniert natürlich nur lokal auf dem gleichen PC. Da du verschiedene Instanzen angesprochen hast, nahm ich an, dass diese auf der gleichen Maschine laufen. Sonst wirds natürlich etwas schwieriger und ich sehe auch nicht sofort eine Lösung.
MessageQueue hat den Nachteil, dass man das erst auf allen PCs installieren und konfigurieren muss. Die API ist außerdem nicht unbedingt ein Ausbund von Komfort.
Eine Beschreibung, wie ihr "die ähnliche Aufgabe" gelöst habt, hast du nicht noch zufällig? *gggg*