Multipart Content Transfer Encoding Binär Optionen
Umgang mit Binärdaten mit Axis2 (MTOMSwA) Einleitung Trotz Flexibilität, Interoperabilität und globaler Akzeptanz von XML gibt es Zeiten, in denen Serialisierung von Daten in XML nicht sinnvoll ist. Web-Services-Benutzer können Binär-Attachments von verschiedenen Sorten wie Bilder, Zeichnungen, XML-Dokumente usw. zusammen mit einer SOAP-Nachricht übertragen. Solche Daten sind oft in einem bestimmten Binärformat. Traditionell wurden zwei Techniken für den Umgang mit opaken Daten in XML verwendet. Das Senden von binären Daten durch den Wert wird durch Einbettung von opaken Daten (natürlich nach irgendeiner Form von Codierung) als Element - oder Attributinhalt der XML-Komponente von Daten erreicht. Der Hauptvorteil dieser Technik ist, dass es Anwendungen die Möglichkeit gibt, Daten zu verarbeiten und zu beschreiben, die nur auf der XML-Komponente der Daten basieren. XML unterstützt undurchsichtige Daten als Inhalt durch die Verwendung von entweder base64 oder hexadezimaler Textcodierung. Beide Techniken blasen die Größe der Daten auf. Für die UTF-8-zugrunde liegende Textcodierung erhöht die Base64-Codierung die Größe der Binärdaten um einen Faktor von 1,33x der ursprünglichen Größe, während die Hexadezimalcodierung Daten um den Faktor 2x erweitert. Die obigen Faktoren werden verdoppelt, wenn UTF-16 Textcodierung verwendet wird. Auch von besorgniserregend ist der Overhead in den Bearbeitungskosten (sowohl real als auch wahrgenommen) für diese Formate, vor allem bei der Dekodierung wieder in rohe Binärdatei. Das Senden von Binärdaten durch Referenz wird durch das Anfügen von reinen Binärdaten als externe, nicht gepardete allgemeine Entitäten außerhalb des XML-Dokuments und anschließendes Einbetten von Referenz-URIs an diese Entitäten als Elemente oder Attributwerte erreicht. Dies verhindert das unnötige Aufblasen von Daten und Verschwendung von Rechenleistung. Das primäre Hindernis für die Nutzung dieser unparsed Entities ist ihre starke Abhängigkeit von DTDs, die Modularität sowie die Verwendung von XML-Namespaces beeinträchtigt. Es gab mehrere Spezifikationen, die in der Web-Service-Welt eingeführt wurden, um mit diesem binären Attachment-Problem unter Verwendung der quotby-Referenzquot-Technik umzugehen. SOAP mit Attachments ist ein solches Beispiel. Da SOAP Dokumenttyp-Deklarationen (DTD) in Meldungen verbietet, führt dies zu dem Problem, Daten nicht als Teil des Meldungs-Infosets darzustellen und damit zwei Datenmodelle zu erzeugen. Dieses Szenario ist wie das Senden von Anhängen mit einer E-Mail-Nachricht. Auch wenn diese Anhänge mit dem Nachrichteninhalt zusammenhängen, sind sie nicht in der Nachricht. Dies führt dazu, dass die Technologien, die die Daten auf der Grundlage der XML-Komponente der Daten verarbeiten und beschreiben, zu Fehlfunktionen führen. Ein Beispiel ist WS-Security. Wo ist MTOM Come In MTOM (SOAP Message Transmission Optimization Mechanism) ist eine weitere Spezifikation, die auf die Lösung der quotAttachmentsquot Problem konzentriert. MTOM versucht, die Vorteile der beiden oben genannten Techniken zu nutzen, indem man versucht, die beiden Techniken zusammenzuführen. MTOM ist eigentlich ein quotby-Referenzquot-Verfahren. Das Drahtformat einer MTOM-optimierten Nachricht ist dasselbe wie die SOAP mit Attachments-Nachricht, die es auch rückwärts kompatibel mit SwA-Endpunkten macht. Das bemerkenswerteste Merkmal von MTOM ist die Verwendung des XOP: Include-Elements, das in der XML Binary Optimized Packaging (XOP) - Spezifikation definiert ist, um auf die binären Attachments (externe ungepufferte allgemeine Entitäten) der Nachricht zu verweisen. Mit der Verwendung dieses exklusiven Elements wird der angehängte Binärinhalt logisch inline (mit dem Wert) mit dem SOAP-Dokument, obwohl er tatsächlich separat angehängt ist. Dies verschmilzt die beiden Bereiche, indem es möglich ist, nur mit einem Datenmodell zu arbeiten. Dies ermöglicht es den Anwendungen zu verarbeiten und zu beschreiben, indem man nur den XML-Teil betrachtet, wodurch die Abhängigkeit von DTDs veraltet ist. Auf einer leichteren Note hat MTOM den Referenzmechanismus von SwA standardisiert. Das folgende ist ein Auszug aus der XOP-Spezifikation. Auf der konzeptionellen Ebene können diese Binärdaten als Basis64-codiert im XML-Dokument betrachtet werden. Da diese konzeptionelle Form bei einer Verarbeitung des XML-Dokuments erforderlich ist (z. B. zum Signieren des XML-Dokuments), ist es notwendig, eine Eins-zu-Eins-Korrespondenz zwischen XML-Infosets und XOP-Paketen zu haben. Daher ist die konzeptionelle Darstellung solcher Binärdaten so, als wäre sie base64-codiert, wobei die kanonische lexikalische Form des XML-Schema base64Binary-Datentyps verwendet wurde (siehe XML-Schema Teil 2: Datentypen Second Edition 3.2.16 base64Binary). In umgekehrter Richtung ist XOP in der Lage, nur base64-codierte Infoset-Daten zu optimieren, die in der kanonischen lexikalischen Form vorliegen. Apache Axis2 unterstützt Base64-Codierung. SOAP mit Attachments und MTOM (SOAP Message Transmission Optimization Mechanism). MTOM mit Axis2 Programmiermodell AXIOM ist (und kann das erste) Objektmodell sein, das die Fähigkeit hat, binäre Daten zu halten. Es hat diese Fähigkeit, wie OMText rohen binären Inhalt in Form von javax. activation. DataHandler halten kann. OMText wurde zu diesem Zweck aus zwei Gründen ausgewählt. Einer ist, dass XOP (MTOM) in der Lage ist, nur base64-codierte Infoset-Daten zu optimieren, die sich in der kanonischen lexikalischen Form des XML-Schema base64Binary-Datentyps befinden. Anderes ist, das Infoset sowohl im Sender als auch im Empfänger zu bewahren. (Um den Binärinhalt in der gleichen Art von Objekt zu speichern, unabhängig davon, ob es optimiert ist oder nicht). MTOM ermöglicht die selektive Verschlüsselung von Teilen der Nachricht, die es uns ermöglicht, basendecodierte Daten sowie extern angehängte rohe Binärdaten zu senden, die durch das in einer SOAP-Nachricht zu sendende quotXOPquot-Element (optimierter Inhalt) referenziert werden. Sie können festlegen, ob ein OMText-Knoten, der rohe Binärdaten oder base64encodierte Binärdaten enthält, qualifiziert ist, um zum Zeitpunkt des Aufbaus dieses Knotens oder später optimiert zu werden. Für eine optimale Effizienz von MTOM empfiehlt es sich, kleinere Binär-Anhänge mit Base64encoding (nicht optimiert) und größeren Anhängen als optimierten Inhalt zu versenden. Außerdem kann ein Benutzer einen optimierbaren Binärinhaltsknoten unter Verwendung eines base64-codierten Strings erstellen, der einen codierten Binärinhalt enthält, der mit dem MIME-Typ der tatsächlichen Binärdarstellung versehen ist. Axis2 verwendet javax. activation. DataHandler, um die Binärdaten zu verarbeiten. Alle optimierten Binärinhaltsknoten werden als Base64-Strings serialisiert, wenn quotMTOM nicht aktiviert ist. Sie können auch binäre Content-Knoten erstellen, die auf keinen Fall optimiert werden. Sie werden serialisiert und als Base64 Strings gesendet. Aktivieren der MTOM-Optimierung auf der Client-Seite In Optionen setzen Sie die quotenableMTOMquot-Eigenschaft auf True beim Senden von Nachrichten. Wenn diese Eigenschaft auf True gesetzt ist, wird jede SOAP-Hüllkurve, unabhängig davon, ob sie einen optimierbaren Inhalt enthält oder nicht, als MTOM-optimierte MIME-Nachricht serialisiert. Axis2 serialisiert alle Binär-Content-Knoten als Base64-codierte Strings, unabhängig davon, ob sie qualifiziert sind, um optimiert zu werden oder nicht, wenn die quotenableMTOMquot-Eigenschaft auf False gesetzt ist. Wenn der Umschlag enthält Elementinformationen des Namens xop: Include (siehe XML-Binär optimierte Verpackung 3. XOP Infosets Constructs). Der Benutzer muss nichts angeben, damit Axis2 MTOM-optimierte Nachrichten empfangen kann. Axis2 identifiziert und de-serialisiert entsprechend, wie und wann eine MTOM-Nachricht eintrifft. Aktivieren der MTOM-Optimierung auf der Serverseite Der Axis 2-Server identifiziert automatisch eingehende MTOM-optimierte Meldungen basierend auf dem Content-Typ und de-serialisiert sie entsprechend. Der Benutzer kannMTOM auf der Serverseite für ausgehende Nachrichten aktivieren, Um MTOM global für alle Dienste zu aktivieren, können Benutzer den quotenableMTOMquot-Parameter in der Axis2.xml auf True setzen. Wenn es gesetzt ist, werden alle ausgehenden Nachrichten serialisiert und als MTOM-optimierte MIME-Nachrichten gesendet. Wenn es nicht gesetzt ist, werden alle Binärdaten in den Binärinhaltsknoten als Base64-codierte Zeichenfolgen serialisiert. Diese Konfiguration kann in services. xml auf der Basis von pro Service und pro Operation überschrieben werden. Sie müssen den Server nach der Einstellung dieses Parameters neu starten. Zugriff auf empfangene Binärdaten (Beispielcode) Folgende Inhalte werden bei TcpMon erfasst: Anforderung von SoapUI Pro 3.0.2: POST tf6servicesxdsrepositoryb HTTP1.1 Accept-Encoding: gzip, deflate Content-Type: multipartrelated typeapplicationxopxml start start-infoapplicationsoapxml action boundary - --- Part1728349551.1260534830078 MIME-Version: 1.0 User-Agent: Jakarta Commons-HttpClient3.1 Host: ihexds. nist. gov:9080 Inhalt-Länge: 13318 ------ Part1728349551.1260534830078 Inhalt-Typ: applicationxopxml charsetUTF -8 typeapplicationsoapxml actionProvideAndRegisterDocumentSetRequest Content-Transfer-Encoding: 8bit Content-ID: ------ Part1728349551.1260534830078 Inhaltstyp: textplain charsetus-ascii Content-Transfer-Encoding: 7bit Content-ID: ltgt Dies ist das Dokument. Antrag von xdstest Werkzeug: POST tf6servicesxdsrepositoryb HTTP1.1 Content-Type: multipartrelated boundaryMIMEBoundaryurnuuid613A2BD2D99F1E6B5912 60534073176 typeapplicationxopxml startlt0.urn: uuid: 613A2BD2D99F1E6B591260534073177 apache. orggt Start-infoapplicationsoapxml actionurn: ihe: iti: 2007 rovideAndRegisterDocumentSet-b User-Agent: Axis2 Host: ihexds. nist. gov: 9080 Transfer-Encoding: chunked 20F1 --MIMEBoundaryurnuuid613A2BD2D99F1E6B59126053407 3176 Content-Type: applicationxopxml charsetUTF-8 typeapplicationsoapxml Content-Transfer-Encoding: binary Content-ID: lt0.urn: uuid: 613A2BD2D99F1E6B591260534073177apache. orggt --MIMEBoundaryurnuuid613A2BD2D99F1E6B59126053407 3176 Inhalt - Type: textplain Content-Transfer-Encoding: binäre Content-ID: lt1. Urn: uuid: 613A2BD2D99F1E6B591260534073366apache. or g gt Das ist mein Dokument. Von wo kann ich Content-Transfer-Encoding als Binär einstellen In der nist öffentlichen Registry können Sie das Textdokument ansehen, das als Anhang gesendet wurde: Ich habe auch versucht, Encode Attachments als wahr unter TestRequest Properties zu machen. Aber es funktioniert auch nicht. Vielen Dank für die helpContent-Type: multipart Multi-part Content-Type Header identifizieren multipart Nachrichten. Sie verlangen, dass ein Subtyp und andere Elemente in den Header aufgenommen werden. Der Multipartalternative Inhaltstyp wird verwendet, wenn die gleichen Informationen in verschiedenen Körperteilen in verschiedenen Formen präsentiert werden. Die Körperteile werden durch zunehmende Komplexität bestellt. Beispielsweise kann eine Nachricht, die aus einem schwer formatierten Microsoft Word 97-Dokument besteht, auch in Microsoft Word Version 6.0 Format, Rich Text Format und einem Klartextformat dargestellt werden. In diesem Fall würde der Klartext als erster alternativer Körperteil dargestellt werden. Die Rich-Text-Version würde folgen, dann das Word 6.0, dann das komplexeste Wort 97. Die Platzierung der Klartext-Version ist zuerst das freundlichste Schema für Benutzer mit nicht-MIME-kompatiblen UAs, weil sie die erkennbare Version zuerst sehen werden. Die MIME-kompatiblen UAs sollten die komplizierteste Version präsentieren, die sie erkennen können, oder geben dem Benutzer die Wahl, welche Version zu sehen ist. Content-ID-Werte sollten für jeden Teil unterschiedlich sein, wo es unterschiedliche Ebenen der Komplexität zwischen den Teilen gibt. Die Inhalts-ID jedes Teils sollte sich von der Inhalts-ID des gesamten Multipartalternativen unterscheiden. Das heißt, ein Content-ID-Wert bezieht sich auf die Multipartalternative Entity, während ein oder mehrere andere Content-ID-Werte auf die darin befindlichen Teile verweisen. Der Multipartbyteränder-Inhaltstyp wird als Teil des HTTP-Nachrichtenprotokolls definiert. Es enthält zwei oder mehr Teile, jeweils mit eigenen Content-Type - und Content-Range-Feldern. Die Teile werden mit einem MIME-Grenzwertparameter getrennt. Es können sowohl binäre als auch 7-Bit - und 8-Bit-Dateien als mehrere Teile gesendet werden, wobei die Längen der Teile im Kopf jedes Teils angegeben sind. Beachten Sie, dass HTTP, während HTTP Vorkehrungen für die Verwendung von MIME für HTTP-Dokumente vornimmt, HTTP nicht streng MIME-kompatibel ist. Der Multipartdigest-Inhaltstyp, der verwendet wird, um Sammlungen von Klartextnachrichten zu senden. Es wird in der gleichen Weise wie die multipartmixed Content-Typ, aber jeder Körper Teil wird erwartet, dass von Content-Typ: messagerfc822. Der Multipartform-Daten-Inhaltstyp soll dazu beitragen, dass Informationsanbieter die Datei-Upload-Anfragen gleichmäßig ausdrücken und eine MIME-kompatible Darstellung für Datei-Upload-Antworten bereitstellen können. Der mehrteilige Inhaltstyp wird verwendet, wenn die Körperteile unabhängig sind und in einer bestimmten Reihenfolge gebündelt werden müssen. Wenn eine UA keinen multipartigen Subtyp erkennt, wird sie die Nachricht als multipartmixed behandeln. Der Zweck des multipartparallelen Inhaltstyps besteht darin, alle Teile gleichzeitig auf Hardware und Software anzuzeigen, die dies tun können. Zum Beispiel kann eine Bilddatei angezeigt werden, während eine Sounddatei abgespielt wird. Der Multipart-bezogene Inhaltstyp wird für zusammengesetzte Dokumente verwendet, wobei die Meldungen, in denen die einzelnen Körperteile zusammenarbeiten sollen, um die volle Bedeutung der Nachricht zu liefern. Darüber hinaus kann multipartrelated verwendet werden, um Links zu Inhalten bereitzustellen, die nicht in der Nachricht enthalten sind. Multipartrelated kann für zusammengesetzte Dokumente verwendet werden, bei denen das Objekt progressiv aus Stücken aufgebaut wird, beginnend mit dem Wurzelkörperteil, wie im Startparameter angegeben. Wenn der Startparameter nicht angegeben ist, wird der erste Körperteil als Ausgangspunkt oder Wurzelkörperteil betrachtet. Multipartrelated benötigt einen Typ-Parameter. Der type-Parameter gibt den Inhaltstyp des ersten oder Root-Parts an. Multipartrelated Bearbeitung hat Vorrang vor Inhalt-Disposition. Viele MIME-User-Agenten erkennen nicht multipartrelated und behandeln diese Meldungen als multipartmixed. Um dies zu ermöglichen, werden einige UAs den technisch unnötigen Content-Disposition-Header in mehrteiligen Körperteilen enthalten. Content-Location - und Content-Base-Header sind definiert, um URL-Verweise auf andere Körperteile aufzulösen. Beide Header sind in jeder Nachricht oder Körperteil gültig. Sie sind gültig für die Inhaltsüberschrift oder die Nachrichtenüberschrift, in der sie auftreten, und für ihren Inhalt. Die Content-Location - und Content-Base-Header gelten für Header und Body Parts, wo sie auftreten und haben keine Bedeutung in Multipart-Überschriften. Der Content-Base-Header gibt eine Basis für relative URIs, die in anderen Überschriftenfeldern und in HTML-Dokumenten auftreten, die kein BASE-Element in seinem HTML-Code haben. Sein Wert muss ein absoluter URI sein. Der Content-Location-Header enthält eine URL, die den Körper dieses Körperteils angibt. Die URL kann relativ zu einer URL sein, die in einem Content-Base-Header angegeben ist. Das folgende Beispiel zeigt, wie diese Header verwendet werden: Der Multipartreport-Inhaltstyp wurde für die Rückgabe von Auslieferungsstatusberichten mit optionalen enthaltenen Nachrichten definiert. Es findet sich in der Maschinen-zu-Maschine-Kommunikation breiter. Der Multipart-Reporter wird für die Meldungserklärung verwendet. Multipartsigned Multiplexverschlüsselte RFC1847 Die Multipartsign - und Multiplex-verschlüsselten Inhaltstypen bieten ein Sicherheits-Framework für MIME-Teile. Diese Header definieren keine Sicherheitsprotokolle, sondern existieren, um die geschützten Dokumente zu tragen. Jeder multipartsigned oder multipartencrypted Körperteil wird als zwei verwandte Teile getragen, eine mit der Steuerinformation, die das Protokoll beschreibt, und eine mit dem geschützten Dokument. Der Multipartsign-Inhaltstyp gibt an, wie die Authentifizierung und Integritätsdienste mit digitaler Signatur unterstützt werden können. Die Steuerinformation wird in der zweiten der beiden erforderlichen Körperteile getragen. Der Multiplexverschlüsselte Inhaltstyp gibt an, wie die Vertraulichkeit durch Verschlüsselung unterstützt wird. Die Steuerinformation wird in dem ersten der beiden erforderlichen Körperteile getragen. Show: Inherited ProtectedConfigure Content Transfer Codierung Gilt für: Exchange Online, Exchange Server 2013 Content Transfer Codierung definiert Codierungsmethoden für die Umwandlung binärer E-Mail-Nachrichten in das US-ASCII-Klartextformat. Diese Transformation ermöglicht es der Nachricht, durch ältere SMTP-Messaging-Server zu reisen, die nur Nachrichten im US-ASCII-Text unterstützen. Content Transfer Codierung ist in RFC 2045 definiert. Die Transfer-Codierung Methode ist in der Content-Transfer-Encoding Header-Feld in der Nachricht gespeichert. In Microsoft Exchange Server 2013 sind die folgenden Content-Transfer-Codierungsmethoden verfügbar: 7-Bit Dieser Wert gibt an, dass sich die Nachrichtentext-Daten bereits im US-ASCII-Klartextformat befinden und keine Meldungscodierung für die Nachricht erfolgt ist. Quoted-printable (QP) Diese Codierungsmethode verwendet druckbare US-ASCII-Zeichen, um die Nachrichtentextdaten zu codieren. Wenn der ursprüngliche Nachrichtentext meist US-ASCII-Text ist, gibt die QP-Codierung etwas lesbare und kompakte Ergebnisse. Standardmäßig verwendet Exchange 2013 QP zum Codieren von binären Nachrichtendaten. Base64 Diese Codierungsmethode basiert primär auf dem in RFC 1421 definierten privatgesteuerten Mail (PEM) - Standard. Base64-Codierung verwendet die 64-stellige Alphabet-Codierungsmethode und Ausgabe-Padding-Zeichen, die von PEM definiert wurden, um die Nachrichtentextdaten zu codieren. Base64-Codierung erzeugt eine vorhersagbare Erhöhung der Nachrichtengröße und ist für Binärdaten und Nicht-US-ASCII-Text optimal. Sie konfigurieren die Übertragungscodierungsmethode mit dem Parameter ByteEncoderTypeFor7BitCharsets auf den Cmdlets Set-OrganizationConfig und Set-RemoteDomain. Die mit Set-OrganizationConfig konfigurierten Inhaltsübertragungscodierungseinstellungen gelten für alle Nachrichten in der Exchange-Organisation. Die Einstellungen für die Inhaltsübertragung, die Sie mit Set-RemoteDomain konfigurieren, gelten nur für Nachrichten, die an externe Empfänger in der entfernten Domäne gesendet werden. In der folgenden Tabelle sind die Werte aufgelistet, mit denen Sie die Übertragungscodierungsmethode einstellen können. Parameter in Set-OrganizationConfig Parameter in Set-RemoteDomain
Comments
Post a Comment