Laden...

Kommunikationsprotokoll in XML?

Erstellt von bl4ckY vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.268 Views
B
bl4ckY Themenstarter:in
193 Beiträge seit 2009
vor 13 Jahren
Kommunikationsprotokoll in XML?

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)

6.911 Beiträge seit 2009
vor 13 Jahren

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!"

B
bl4ckY Themenstarter:in
193 Beiträge seit 2009
vor 13 Jahren

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 😃

6.911 Beiträge seit 2009
vor 13 Jahren

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!"

B
bl4ckY Themenstarter:in
193 Beiträge seit 2009
vor 13 Jahren

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 😄

6.911 Beiträge seit 2009
vor 13 Jahren

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!"

3.728 Beiträge seit 2005
vor 13 Jahren
Alternative

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.

161 Beiträge seit 2007
vor 13 Jahren

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)

B
bl4ckY Themenstarter:in
193 Beiträge seit 2009
vor 13 Jahren

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.

161 Beiträge seit 2007
vor 13 Jahren

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)

B
bl4ckY Themenstarter:in
193 Beiträge seit 2009
vor 13 Jahren

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.

3.728 Beiträge seit 2005
vor 13 Jahren
.net 4.0

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.

3.728 Beiträge seit 2005
vor 13 Jahren
Zyan 1.0 läuft nun auch auf .NET 3.5

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