Sind binäre Protokolle tot?
Es scheint, wie es verwendet werden, um so mehr binäre Protokolle, die aufgrund der sehr langsamen internet-Geschwindigkeiten von der Zeit (DFÜ). Ich habe schon sehen, alles wird ersetzt durch HTTP und SOAP/REST/XML.
Warum ist das so?
Sind binäre Protokolle wirklich tot, oder sind Sie einfach weniger beliebt? Warum sollte Sie tot sein, oder weniger beliebt?
- Ist eine ZIP-Datei eine Binär-Protokoll oder nicht?
- Ich spreche mehr über Netzwerk
- Aus Ihrer Frage, definiere "alles" und "tot". Auch definieren Sie "binäres Protokoll".
- Solange alles, was nicht frei ist, wird es immer binäre Protokolle für die Fälle, in denen die Wirtschaft zwischen reinem text (Kosten, Bandbreite) oder komprimierter text (cost-Prozessor-Zyklen) - und binary ist also wichtig, dass Sie mit einem text-Protokoll ist wirtschaftlich nicht lebensfähig.
- "Ich bin im Gespräch mehr über das Netzwerk" - Das Netzwerk-Schicht(en) sind Sie in Anspielung auf das?
- In einem Wort, gut, Nein.
- In deiner hypothetischen Welt, wo die Bandbreite und die CPU-Zeit, die frei sind, sind Sie auch unbegrenzt? Was ist mit der Latenz? Sie denken, dass sozial-und Wirtschaftswissenschaften sind es, die regieren design-Kriterien für die "Protokolle"?
- Earlz: ich spreche über Netzwerk-Protokolle. Wenn ich senden Sie eine binäre Datei über das Netzwerk, ist, dass ein binäres Netzwerkprotokoll?
- SSL/TLS, NFS/Sun RPC, X11, SMB/CIFS, VNC, SSH und rsync sind alle gängigen binären Protokolle, die kommen sofort in den Sinn. Der Grund, ASCII-Protokolle sind immer etwas häufiger scheint vor allem aufgrund der Nutzung von HTTP als transport-Schicht anstelle der bloßen TCP und (meist) JavaScript auf der anderen Seite. Für diese beiden Situationen verwenden ein binäres Protokoll wird anstößig sein gegenüber mit einem text-Protokoll wie XML oder JSON.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie Können Einfach nicht Schlagen die Binäre
Binäre Protokolle werden immer mehr Raum effizienter als text-Protokolle. Auch als internet-Geschwindigkeiten drastisch zu erhöhen, so hat die Menge und Komplexität der Informationen, die wir vermitteln wollen.
Den text der Protokolle auf den Sie verweisen, die herausragend sind in Bezug auf Standardisierung, Flexibilität und Benutzerfreundlichkeit. Aber es wird immer Anwendungen, bei denen die Effizienz der binären transport überwiegen diese Faktoren.
Ist ein Großteil der Informationen ist binary in der Natur und wird wahrscheinlich nie ersetzt werden durch ein text-Protokoll. Video-streaming in den Sinn kommt als ein klares Beispiel.
Selbst wenn Sie komprimieren ein text-basiertes Protokoll (z.B. mit GZip), ein Allzweck-Kompressions-Algorithmus, wird nie so effizient wie ein Binär-Protokoll wurde entwickelt, um die spezifischen Daten-stream.
Aber Manchmal nicht Zu
Der Grund, Sie sehen eher text-basierten Protokollen ist, weil die übertragungsgeschwindigkeit und Speicherkapazität für Daten haben in der Tat schnell gewachsen im Vergleich zu der Größe der Daten für eine Breite Palette von Anwendungen. Wir Menschen finden es viel einfacher, die Arbeit mit text-Protokollen, so dass wir unsere allgegenwärtigen XML-Protokoll um einen text-Darstellung. Sicher könnten wir erstellt haben XML als ein binäres Protokoll, wenn wir wirklich zu sparen jedes byte, und baute den gängigen tools zu visualisieren und mit den Daten arbeiten.
Dann Wieder, Manchmal Ist Sie Wirklich Tun
Viele Entwickler sind daran gewöhnt, in Bezug auf multi-GB-multi-core-Computern. Auch Ihre typische Telefon in diesen Tagen stellt meinen ersten IBM-PC-XT zu schade. Dennoch gibt es Plattformen wie embedded-Geräte, die haben ziemlich strenge Beschränkungen auf Rechenleistung und Speicher. Beim Umgang mit solchen Geräten, mit binären kann eine Notwendigkeit sein.
Eine parallele Programmiersprachen ist wahrscheinlich sehr relevant.
Während hi-level-Sprachen sind die bevorzugten tools für die meisten Programmier-jobs, und möglich gemacht haben (zum Teil) durch die Erhöhungen der CPU-Geschwindigkeit und Speicher-capactity, Sie haben nicht entfernt die Notwendigkeit für Assembler.
In eine ähnliche Mode, non-binary-Protokolle einzuführen, die mehr Abstraktion, mehr Erweiterungen und sind daher das Fahrzeug der Wahl besonders für die application-level-Kommunikation. Auch Sie haben profitiert durch die Erhöhung von Bandbreite und Speicherkapazität. Doch auf einer niedrigeren Ebene ist es immer noch unpraktisch zu sein, so verschwenderisch.
Zudem-anders als bei Programmiersprachen, wo gibt es starke Anreize, "die performance-hit" im Austausch für zusätzliche Einfachheit, Geschwindigkeit der Entwicklung, usw., die Fähigkeit, die Struktur der Kommunikation in den Schichten macht die Komplexität und "binary-ness" der unteren Schichten eher für die Anwendung transparent, Ebene. Zum Beispiel so lange, wie die SOAP-Nachrichten, die man erhält sind ok, die Anwendung muss nicht wissen, dass diese effektiv komprimiert, um den transit über den Draht.
Facebook, Last.fm und Evernote verwenden, die Secondhand-binary-Protokoll.
Habe ich selten sehen, diese Sprachen über aber die binären Protokolle block-Protokolle vor allem kann es erheblich vereinfachen, die Komplexität von server-Architekturen.
Viele text-Protokolle implementiert sind, so dass der parser hat keine Grundlage, um zu folgern, wie viel mehr Daten sind notwendig, bevor eine logische Einheit empfangen worden ist (XML, und JSON können alle notwendige minimum bytes zu beenden, aber kann nicht aussagekräftige Schätzungen). Dies bedeutet, dass der parser möglicherweise in regelmäßigen Abständen tritt der socket empfangen von code zum abrufen von mehr Daten. Das ist gut wenn deine Steckdosen sind im blockierenden Modus, nicht so einfach, wenn Sie es nicht sind. Es bedeutet im Allgemeinen, dass alle parser-Zustand gehalten werden auf den heap, nicht den stack.
Wenn Sie haben ein binäres Protokoll, wo sehr früh in den Prozess erhalten Sie genau wissen, wie viele bytes ein, die Sie benötigen, um das Paket, dann erhält Operationen brauchen nicht zu eng verzahnt sein mit Ihren Analyse-Operationen. Als Folge davon werden die parser-Zustand gehalten werden kann, die auf dem stack, und der parser ausführen kann einmal pro Nachricht und laufen gerade durch, ohne Pause, erhalten Sie mehr bytes.
Wird es immer eine Notwendigkeit für binäre Protokolle, die in einigen Anwendungen, wie sehr-geringe-Bandbreite-Kommunikation. Aber es gibt riesige Vorteile für text-basierte Protokolle. Zum Beispiel, kann ich Firebug, um schnell zu sehen, was genau gesendet und empfangen werden von jedem HTTP-Aufruf aus meiner Anwendung. Viel Glück dabei, dass mit einem binären Protokoll 🙂
Ein weiterer Vorteil von text-Protokolle ist, dass, obwohl Sie weniger Raum effizienter als binary -, text-Daten, die komprimiert sehr gut, so werden die Daten automatisch komprimiert, um das beste aus beiden Welten. Sehen HTTP-Komprimierung, zum Beispiel.
Binäre Protokolle sind nicht tot. Es ist viel effizienter, zum senden von binären Daten in vielen Fällen.
WCF unterstützt Binär-Codierung unter Verwendung von TCP.
http://msdn.microsoft.com/en-us/library/ms730879.aspx
Bisher die Antworten, die alle konzentrieren sich auf Raum und Zeit-Effizienz. Niemand hat erwähnt, was ich fühle, ist die Zahl ein Grund für so viele text-basierte Protokolle: Austausch von Informationen. Es ist der springende Punkt, der das Internet und es ist viel leichter zu tun mit der text-basierten, lesbare Protokolle , die sind auch gut verarbeitet, die von Maschinen. Sie befreien sich von der Sprache abhängig, von der Anwendung bestimmte, Plattform-voreingenommen-Programmierung mit text-data-interchange.
Link, in welcher XML/JSON/*-parsing-Bibliothek, die Sie verwenden möchten, finden Sie die Struktur der Informationen, und schneiden Sie die Stücke von Daten, die Sie interessiert sind in.
Einige binäre Protokolle, die ich gesehen habe auf der wild für Internet-Anwendungen
Ich bin wirklich froh, dass Sie diese Frage, als nicht-Binär-Protokolle haben sich vervielfacht, im Gebrauch der vielen Falten, die seit der Einführung von XML. Vor zehn Jahren, würden Sie sehen, fast alle touting Ihre "compliance" mit XML-basierten Kommunikation. Aber dieser Ansatz, eine von mehreren Ansätzen zu binären Protokollen, hat viele Mängel.
Einen der Werte, zum Beispiel, war die Lesbarkeit. Aber die Lesbarkeit ist wichtig für das debugging, wenn Menschen Lesen sollten, die Transaktion. Sie sind sehr ineffizient, wenn im Vergleich mit Binär überträgt. Dies ist aufgrund der Tatsache, dass XML selbst ist ein binärer Datenstrom, der übersetzt werden muss mit einem anderen layer in Textfragmenten ("Token"), und dann wieder in binäre mit den enthaltenen Daten.
Anderen Menschen Wert fand, war die Erweiterbarkeit. Aber die Erweiterbarkeit können leicht erhalten, wenn ein Protokoll-Versionsnummer für den binären Datenstrom wird zu Beginn der Transaktion. Anstatt das versenden von XML-tags, einen schicken könnte binäre Indikatoren. Wenn die Versionsnummer ist eine unbekannte, dann der Empfänger herunterladen kann das "Wörterbuch" von diesem unbekannten version. Dieses Wörterbuch könnte zum Beispiel eine XML-Datei sein. Aber den Download der Wörterbuch ist ein einmal Betrieb, anstatt jede einzelne Transaktion!!!
Also Effizienz gehalten werden konnten, zusammen mit der Erweiterbarkeit und sehr leicht! Es gibt eine gute Anzahl von "kompilierte XML - " Protokolle gibt, die genau das tun.
Last, but not least, ich habe sogar gehört, wie Leute sagen, dass XML eine gute Möglichkeit, Sie zu überwinden little-endian und big-endian-Typen von binären Systemen. Zum Beispiel, so Computer vs Intel-Computern. Aber das ist falsch: wenn beide Seiten akzeptieren können XML (ASCII) in der richtigen Weise, sicherlich beide Seiten akzeptieren können binäre auf die richtige Weise, wie XML-und ASCII sind, werden auch binarically.......
Hoffe, Sie finden dies interessant zu Lesen!
Binäre Protokolle werden weiterhin zu Leben, wo Effizienz erforderlich ist. Meistens Leben Sie in den unteren Ebenen, wo die hardware-Implementierung ist mehr verbreitet, als software-Implementierungen. Geschwindigkeit ist nicht der einzige Faktor - die Einfachheit der Realisierung ist auch wichtig. Herstellung einer chip-Prozess binary Daten-Nachrichten ist viel einfacher als das analysieren von text-Nachrichten.
Sicher das kommt ganz auf die Anwendung? Es wurden zwei Allgemeine Typen von B. so weit, xml/html-bezogene Antworten und video/audio. Man ist entworfen, um eine 'gemeinsame' wie bereits von Jonathon und die andere eine möglichst effiziente übertragung von Daten (und ohne Matrix vision, "Lesen" einen Film würde nie nützlich sein, wie das Lesen eines HTML-Dokuments).
Einfache debugging ist kein Grund, um wählen Sie ein text-Protokoll über eine 'binäre' eine - den Anforderungen der Datenübertragung sollte diktieren, dass. Ich arbeite in der Luft-und Raumfahrt-Industrie, wo die Mehrheit der Kommunikation mit hoher Geschwindigkeit, vorhersehbare Daten fließt wie Höhe-und radio-Frequenzen, damit Sie zugeordnet sind bits, die von einem Bach, und kein Mensch-lesbar-wrapper ist erforderlich. Es ist auch hoch effizient übertragen und, anderes als Interferenz-Erkennung, erfordert keine meta-Daten-oder Protokoll-Verarbeitung.
Also sicherlich würde ich sagen, dass Sie nicht tot ist.
Ich würde Zustimmen, dass die Menschen die Entscheidungen sind wahrscheinlich von der Tatsache beeinflusst, dass Sie zu Debuggen, sondern wird auch stark davon abhängen, Zuverlässigkeit, Bandbreite, Daten-Typ und-Verarbeitung erforderliche Zeit (und Strom!).
Sind Sie nicht tot, weil Sie die zugrunde liegenden Schichten der jede Kommunikation-system. Alle wichtigen Kommunikations-system ist data link und Netzwerk Schichten basieren auf einer Art "binäres Protokoll".
Nehmen Sie zum Beispiel das internet, Sie sind jetzt wahrscheinlich mit Ethernet in Ihrem LAN, PPPoE für die Kommunikation mit Ihrem ISP, IP im web zu surfen und vielleicht FTP um eine Datei herunterzuladen. Alle sind in "binary-Protokolle".
Sehen wir diesen Wandel hin zu text-basierten Protokolle in den oberen Schichten, weil Sie viel einfacher zu entwickeln und zu verstehen, wenn im Vergleich zu "binary-Protokolle", und weil die meisten Anwendungen nicht die strengen Anforderungen an die Bandbreite.
hängt von der Anwendung ab...
Ich denke, in real-time Umgebung (firewire, usb, Feldbusse...) werden muss immer für binäre Protokolle
Zwei Antworten:
Mindestens eine binäre Protokoll ist besser als XML, das alle die Lesbarkeit eines Binär-Protokoll in Kombination mit
alle Effizienzweniger Wirkungsgrad als eine gut gestaltete ASCII-Protokoll.Eric J s Antwort ziemlich viel sagt, aber hier einige weitere Denkanstöße und Fakten. Beachten Sie, dass das Zeug unten ist nicht über media-Protokolle (videos, Bilder). Einige Artikel können Ihnen klar sein, aber ich höre immer wieder Mythen jeden Tag so here you go ...
Gibt es keinen Unterschied in der Aussagekraft zwischen einem binären Protokoll und ein text-Protokoll. Übertragen Sie die gleichen Informationen mit der gleichen Zuverlässigkeit.
Für jedes optimale Binär-Protokoll, Sie können entwerfen eine optimale text-Protokoll, das dauert nur etwa 15% mehr Platz, und das Protokoll können Sie Typ auf Ihrer Tastatur.
In der Praxis (praktische Protokolle ist jeden Tag zu sehen), der Unterschied ist oft sogar geringer aufgrund der statischen Natur des viele binäre Protokolle.
Nehmen wir zum Beispiel eine Zahl, die sehr groß werden können (z.B., im 32 bit Bereich), aber ist oft sehr klein. Im Binär -, Personen-Modell dieses in der Regel als vier bytes. Im text, es ist oft getan, da gedruckte Zahl, gefolgt von einem Doppelpunkt. In diesem Fall, zahlen unter zehn werden zwei bytes und zahlen unter 100 drei bytes. (Sie können natürlich behaupten, dass die binäre Codierung ist schlecht und Sie können einige Größe bits, um es mehr Platz effizient, aber das ist eine andere Sache, die Sie haben, zu dokumentieren, umzusetzen, auf beiden Seiten, und in der Lage sein, zu beheben, wenn es kommt über den Draht.)
Beispielsweise Nachrichten in binäre Protokolle sind oft umrahmt von Felder Länge und/oder terminatoren, während in der text-Protokolle, verwenden Sie einfach einen CRC.
Möchten Sie einige level an Redundanz, egal ob Binär oder text. Binäre Protokolle lassen oft keinen Raum für Fehler. Sie haben zu 100% korrekt Dokument jedes bit, das Sie senden, und da die meisten von uns Menschen, das passiert selten und man kann es nicht Lesen gut genug, um eine sichere Aussage, was richtig ist.
So in der Zusammenfassung: Binäre Protokolle sind theoretisch mehr Platz-und Rechen-effiziente, aber der Unterschied ist in der Praxis oft weniger als Sie denken, und das Angebot ist oft nicht Wert. Ich arbeite in der Internet-der-Dinge-Bereich und beschäftigen fast auf täglicher Basis mit custom, schlecht gestaltet binäre Protokolle, die sind wirklich schwer zu beheben, nervig zu implementieren und nicht mehr Platz effiziente. Wenn Sie nicht brauchen, um absolut zwicken die letzten milliampere aus Ihrer Batterie und berechnen mit mikrocontroller-Zyklen (oder übertragen Medien), sich zweimal überlegen.