Frage

Ich habe eine bestehende Standalone-Anwendung, die von einer 3rd-Party erweitert werden soll, ein Netzwerk-Protokoll. Die Fähigkeiten sind bereits umgesetzt, alles was ich brauche sie nach außen aus.

Unter der Annahme, das Transportprotokoll ist bereits ausgewählt (UDP), gibt es Ressourcen, die mir helfen, mein Anwendungsprotokoll zu entwerfen?

Es scheint eine Menge von Informationen über Software-Design zu sein, aber nicht auf Protokolldesign. Ich habe schon bei Application Protocol Design- aussehen.

War es hilfreich?

Lösung

Siehe Jabber Protokolle Design-Richtlinien und RFC 4101 . Obwohl es RFCs leichter zu machen, zu verstehen Bewertern ausgerichtet ist, bietet diese RFC einige interessante Hinweise.

Andere Tipps

Haben Sie sich unter Google Protocol Buffer ? Es scheint wie ein guter Weg, um dieses Problem zu beheben.

Sie können einen Endpunkt erstellen, die mit Ihrer bestehenden App kommuniziert und reagieren dann von ‚außen‘ mit dem protobuffer Protokoll. Es ist binär, so ist es klein und schnell und Sie haben keine eigenen Protokoll-Manager zu schreiben, weil Sie die Google diejenigen nutzen können. Der Nachteil ist, dass es auf beiden Seiten des Systems (auf den ‚Server‘ Seite und auf den Verbraucher / Client-Seite).

übernommen werden muss

Eine weitere Empfehlung für Protokollpuffer - schöne enge binär mit wenig Aufwand. Beachten Sie jedoch, dass, während das binäre Protokoll ist gut definiert, ist es noch nicht ein vereinbarter RPC-Standard ( einige sind im Gange , auf TCP zum anlehnen neigen oder HTTP).

Die Spezifikation macht es sehr einfach in den Client und Server haben verschiedene Architekturen , das ist gut - und es ist erweiterbar

.

Vorab: Ich bin der Autor eines der .NET Versionen , so kann ich auch voreingenommen ;-p

werden

Zunächst einmal, UDP ist in erster Linie eine Einweg-Broadcast Transportmethode. Auch ist es potenziell verlustbehaftete , so dass Sie müssen in der Lage Griff fehlenden Pakete sein und Out-of-Order-Pakete. Wenn Sie irgendeine Maß an Zuverlässigkeit von UDP benötigen oder erfordern Zwei-Wege-Verbindungen, werden Sie fast alles von TCP am Ende benötigen, so dass Sie könnte genauso gut mit dem gehen, mit zu beginnen und dem Netzwerk-Stack kümmert sich um sie lassen.

Als nächstes, wenn Ihre Daten möglicherweise größer als ein einzelnes IP-Paket, dann werden Sie eine Möglichkeit brauchen, den Anfang und das Ende jedes Pakets zu identifizieren, und ein Mittel zur Behandlung illegal oder beschädigte Pakete. Ich würde eine Art von Kopf mit Paketlänge, eine Art Fußzeile empfehlen, und vielleicht eine Prüfsumme.

Dann brauchen Sie eine Möglichkeit, die Nachrichten und Antworten zu codieren. Es gibt viele RPC-Protokolle um. Sie könnten bei SOAP aussehen, oder entwerfen Sie ein benutzerdefiniertes XML-basiertes Protokoll, oder eine binäre Eins.

Sie sollten sich wirklich intensiv darüber nachdenken, ob Sie wirklich entwerfen wollen, zu dokumentieren und ein eigenes Protokoll pflegen oder etwas verwenden, das bereits existiert. Es ist wahrscheinlich, gibt es bereits ein dokumentiertes Protokoll, das Ihren Bedürfnissen entspricht. Je nachdem, was Sie tun, es wird wahrscheinlich übertrieben auf den ersten Blick und die Umsetzung aller spec langweilig aussehen und viel weniger Spaß als Ihr eigenes schreiben, aber wenn Sie für Ihre Anwendung beabsichtigen, noch werden aktiv in ein paar Jahren entwickelt es sollte sparen Sie eine Menge Zeit und Geld, um etwas zu verwenden, die bereits vorhanden sind und von dritten bekannt. Außerdem, wenn Sie eine vorhandene Bibliothek für dieses Protokoll verwenden können, sollte die Implementierung Teil viel schneller sein.

Entwerfen neues Protokoll ist mehr Spaß als eine Implementierung, aber weniger als eine beibehalten wird, wie Sie mit allen Mängeln leben müssen. Kein Protokoll ist perfekt, aber wenn Sie noch nie ein entworfen haben, können Sie sicher sein, werden Sie mehr Fehler machen als die Menschen, die Gestaltung, die das bestehende bekannte Protokoll konzipiert, dass Sie stattdessen verwenden kann.

Kurz gesagt, nutzen, was bereits, wann immer möglich vorhanden ist.

Wenn Sie nicht wollen, das Protokoll von Grund auf neu zu bauen, sollten Sie einen Blick auf, SOAP . Unterstützung variiert für verschiedene Programmiersprachen, aber Quersprachkommunikation ist ausdrücklich erwünscht.

Leider scheinen UDP und SOAP in den Kinderschuhen stecken zu haben, HTTP wird am häufigsten verwendet.

Wenn Sie XML-Wahl sind bedenken Sie, dass Sie einen riesigen Aufwand von Markup haben.

Ein einfaches binäres Protokoll wird auch braucht nicht so viele Ressourcen im Vergleich zu XML zu analysieren.

  

Ich habe eine bestehende Standalone-Anwendung, die von einer 3rd-Party verlängert werden wird, ein Netzwerkprotokoll verwendet wird.

Es würde helfen, ein wenig mehr über das, was Ihr Programm zu wissen, tut und was die Natur dieser 3rd-Party-Erweiterungen ist. Vielleicht sind einige Gründe für die Verwendung von UDP?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top