Entwickle derzeit ein Client/Server System. Nun Frage ich mich wie ich die Kommunikation am besten realisiere. Meine Überlegung ist das ganze komplett über XML abzuwickeln sprich:
<message>
<type></type>
...
</message>
Planung: Server & Client generieren XML, sendet es zum jeweiligen Gegenpart, der wertet aus und antwortet ggf. darauf. Vorteil den ich darin sehe ist u.a das ich kein wirklich fest definiertes Protokoll brauche. Muss nur sicher sein das der XML Code komplett übertragen wurde.
Ist das Sinnvoll? Oder wie wird das nach aktuellen Vorgehensweisen gelöst? Geht es überhaupt so problemlos wie ich es mir vorstelle?
(Man will ja mit der Zeit gehen)
Hallo,
sowas wurde schon mal erfunden und ist unter WCF zusammengefasst 😉
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Bin leider nicht so tief in der Materie das ich sagen könnte ob auf niedrigeren Ebenen nicht doch ein festes Protokoll vorhanden ist.
Edit: Nach einer weiteren kurzen Suche hat sich diese Aussage wiederlegen lassen. Werde es mal mit WCF probieren 😃
Hätte ich auch gerne genommen. Leider, so mein derzeitiger Kenntnisstand gibt es in WCF keine Events die vom Server getriggert werden. Pollende Clients wollte ich gerne vermeiden. Lasse mich natürlich gerne eines besseren belehren 😃
Hallo,
gibt es in WCF keine Server Events
Events nicht direkt, aber Callbacks und somit lässt sich Event-Verhalten nachbauen. Siehe WCF Tutorial - Events and Callbacks
Wenn du den Client bzw. den WCF-Proxy selbst erstellt kannt du dort die Events feuer und für den wirkichen Cient ist es dann ganz transparent zu verwenden.
ob auf niedrigeren Ebenen nicht doch ein festes Protokoll vorhanden ist.
Praktisch gesehen kann das egal sein, wichtig ist nur dass es so abstrahiert ist dass die Verwendung im Vorderungrund steht.
Es gibt schon ein Protokoll das verwendet wird (ja nach Bindungsart), die für die Übertragung notwendigen Daten werden jedoch von deinem DataContract bestimmt.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Leider gibt es noch ein Problem, dass ich aber bis eben verdrängt hatte 😄
Das ganze arbeitet mit einer älteren Software zusammen die mir lediglich die Möglichkeit von Socketverbindungen lässt. Kann ich mit einem WCF Service auch nebenbei noch auf einen Port lauschen?
Habe die Möglichkeit die Verbindung anzupassen, leider nur c. Da bin ich mir nicht sicher ob das mit WCF so ohne weiteres spielen will 😄
Hallo,
mir ist nix bekannt dass ohne viel Aufwand WCF so abgeändert werden kann.
Dann wirds wohl am einfachsten sein ein Protokoll wie im Eingangspost und TCP-Listener zu verwenden.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Hallo bl4ckY,
Das ganze arbeitet mit einer älteren Software zusammen die mir lediglich die Möglichkeit von Socketverbindungen lässt. Kann ich mit einem WCF Service auch nebenbei noch auf einen Port lauschen?
Ist es so, dass Deine Anwendung bestimmte Daten von der ältern Anwendung über TCP-Sockets abrufen/senden muss, aber ansonsten eigenständig mit seinen Clients kommuniziert.
Also grundsätzlich moderne Kommunikation und nur nebenbei für einen bestimmten Anwendungsfall auf einem TCP-Port lauschen?
Wenn dem so ist, kannst Du das auch sehr komfortabel mit Zyan (http://zyan.codeplex.com/) lösen. Du könntest z.B. mit Zyan einen kleinen Applikationsserver aufsetzen, der die alte Anwendung kapselt und sie in intuitiver und einfacher .NET-Manier zugreifbar macht.
Hier bekommst Du einen Überblick: http://zyan.codeplex.com/wikipage?title=Erste%20Schritte&referringTitle=Deutsche%20Dokumentation
Zyan ist allerdings nichts, wenn Deine Anwendung interoperabel sein muss (also Standards wie SOAP, etc. vorausgesetzt werden). Dafür wäre eindeutig WCF der beste Kandidat.
Ich würde das mit einem FullDuplex WCF Service realisieren und für die Kommunikation mit der alten Anwendung einen Proxy-Client basteln der als Schnittstelle zw. altem Client und WCF Service dient und die Socket-Kommunikation in WCF Aufrufe übersetzt und umgekehrt.
"Eine wirklich gute Idee erkennt man daran,
dass ihre Verwirklichung von vorneherein ausgeschlossen erscheint."
(Albert Einstein)
Ja, der Server muss auf einen Port lauschen und bekommt so Daten aus dem alten Programm geschickt.
Werde mir Zyan mal anschauen.
Das mit dem Proxy Client habe ich mir auch schon überlegt, allerdings hoffe ich noch auf eine weniger Wartungsaufwendige Lösung 😄
Denn je mehr Programme im Spiel sind desto höher ist die Ausfallrate.
Naja mit Zyan hast du ein ähnliches Szenario mit dem "Nachteil" das du nicht direkt Kontrolle über den Source hast.
"Eine wirklich gute Idee erkennt man daran,
dass ihre Verwirklichung von vorneherein ausgeschlossen erscheint."
(Albert Einstein)
Beim Verweise auf das Assembly von Zyan sagt er:
Das Projekt kann nicht im Objektbrowser angezeigt werden, da es nicht verfügbar oder noch nicht erstellt wurde. Stellen Sie sicher ...
Ich werde mich erstmal an den WCF Server machen und später schauen wie ich die Schnittstelle zur alten Application abbilde.
Das Projekt kann nicht im Objektbrowser angezeigt werden, da es nicht verfügbar oder noch nicht erstellt wurde. Stellen Sie sicher ...
Zyan benötigt .NET 4.0 bzw. Visual Studio 2010.
Naja mit Zyan hast du ein ähnliches Szenario mit dem "Nachteil" das du nicht direkt Kontrolle über den Source hast.
Zyan ist Quelloffen und steht unter der sehr freien MIT-Lizenz.
Beim Verweise auf das Assembly von Zyan sagt er:
Das Projekt kann nicht im Objektbrowser angezeigt werden, da es nicht verfügbar oder noch nicht erstellt wurde. Stellen Sie sicher ...
Zyan 1.0 ist released und läuft nun auch unter .NET 3.5 Client Profile oder besser: http://zyan.codeplex.com/releases/view/57797