Thursday 2 November 2017

Multipart Content-Transfer Encoding Binario Options


La gestione dei dati binario con Axis2 (MTOMSwA) Introduzione Nonostante la flessibilità, interoperabilità, e l'accettazione globale di XML, ci sono momenti in cui la serializzazione dei dati in XML non ha senso. utenti dei servizi Web potrebbero voler trasmettere allegati binari di vario tipo come immagini, disegni, documenti XML, ecc insieme a un messaggio SOAP. Tali dati sono spesso in un particolare formato binario. Tradizionalmente, due tecniche sono state utilizzate nel trattamento dei dati opachi in XML Invio dati binari valore è ottenuto inserendo opaco dati (naturalmente dopo qualche forma di codifica) come elemento o attributo contenuto del componente XML dei dati. Il vantaggio principale di questa tecnica è che dà applicazioni la capacità di elaborare e descrivere i dati, basati esclusivamente sulla componente XML dei dati. XML supporta opaco dati come contenuti attraverso l'uso di uno o Base64 codifica del testo esadecimale. Entrambe le tecniche gonfiare la dimensione dei dati. Per UTF-8 codifica di testo sottostante, codifica base64 aumenta la dimensione dei dati binari di un fattore 1.33x delle dimensioni originali, mentre codifica esadecimale espande i dati di un fattore 2x. I fattori di cui sopra saranno raddoppiati se si utilizza la codifica del testo UTF-16. Anche di preoccupazione è l'overhead dei costi di lavorazione (reali o percepite) per questi formati, soprattutto quando la decodifica di nuovo in binario non elaborato. L'invio di dati binari di riferimento è ottenuta collegando dati binari puri come entità non analizzate generali esterne al di fuori del documento XML e quindi l'incorporamento URI di riferimento per quelle entità come elementi o valori degli attributi. Ciò impedisce il gonfiore inutili di dati e spreco di potenza di elaborazione. L'ostacolo principale per l'utilizzo di queste entità non analizzate è il loro forte dipendenza DTD, che impedisce la modularità, così come l'uso di namespace XML. Ci sono state diverse specifiche introdotte nel mondo dei servizi Web per affrontare questo problema allegato binario utilizzando la tecnica referencequot quotby. SOAP con allegati è un esempio. Dal momento che SOAP vieta dichiarazioni DTD (Document Type) nei messaggi, questo porta al problema della non rappresentazione dei dati come parte del infoset messaggio, quindi la creazione di due modelli di dati. Questo scenario è come l'invio di allegati con un messaggio di posta elettronica. Anche se tali allegati sono correlate al contenuto del messaggio non sono all'interno del messaggio. Questo fa sì che le tecnologie che elaborano e descrivono i dati basati sulla componente XML dei dati di un malfunzionamento. Un esempio è WS-Security. Da dove viene MTOM Come In MTOM (SOAP Message Transmission Optimization Mechanism) è un'altra specifica che si concentra sulla soluzione del problema quotAttachmentsquot. MTOM cerca di sfruttare i vantaggi di queste due tecniche, cercando di unire le due tecniche. MTOM è in realtà un metodo quotby referencequot. Il filo formato di un messaggio MTOM ottimizzato è lo stesso del SOAP con il messaggio allegate, che rende anche compatibile con gli endpoint SWA. La caratteristica più notevole di MTOM è l'uso del XOP: Include elemento, che è definito nella specifica Packaging Binary XML ottimizzato (XOP) per fare riferimento gli allegati binari (entità generali unparsed esterni) del messaggio. Con l'uso di questo elemento esclusiva, il contenuto binario divisoria diventa logicamente in linea (in valore) con il documento SOAP anche se è effettivamente collegato separatamente. Questo unisce i due mondi, rendendo possibile lavorare solo con un modello di dati. Questo permette alle applicazioni di elaborare e descrivere da solo guardando la parte XML, rendendo la dipendenza da DTD obsoleto. Su una nota più leggera, MTOM ha standardizzato il meccanismo riferimento di SWA. Quanto segue è un estratto dalla specifica XOP. A livello concettuale, questi dati binari possono essere pensati come essere codifica Base64 nel documento XML. Poiché questa forma concettuale potrebbe essere necessario durante alcune elaborazioni del documento XML (ad esempio per la firma del documento XML), è necessario avere una corrispondenza uno-a-uno tra Infoset XML e Pacchetti XOP. Pertanto, la rappresentazione concettuale di tali dati binari è come se fosse con codifica Base64, utilizzando il modulo lessicale canonica del tipo di dati XML Schema base64Binary (vedi XML Schema Part 2: Datatypes Second Edition 3.2.16 base64Binary). In direzione opposta, XOP è in grado di ottimizzare i dati solo Infoset codifica base64 che è nella forma lessicale canonica. Apache Axis2 supporta la codifica Base64. SOAP con allegati e MTOM (SOAP Message Transmission Optimization Mechanism). MTOM con Axis2 modello di programmazione AXIOM è (e può essere il primo) Object Model che ha la capacità di tenere i dati binari. Ha questa capacità come OMText può contenere contenuto binario grezzo in forma di javax. activation. DataHandler. OMText è stato scelto per questo scopo con due motivi. Uno è che XOP (MTOM) è in grado di ottimizzare solo i dati Infoset codifica base64 che è in forma lessicale canonica di XML Schema base64Binary tipo di dati. Altro è quello di preservare la infoset sia il mittente e il destinatario. (Per memorizzare il contenuto binario nello stesso tipo di oggetto, indipendentemente dal fatto che sia ottimizzato o no). MTOM permette di codificare in modo selettivo parti del messaggio, che ci permette di inviare i dati base64encoded così come dati binari grezzi collegati esternamente a cui fa riferimento l'elemento quotXOPquot (contenuti ottimizzati) da inviare in un messaggio SOAP. È possibile specificare se un nodo OMText che contiene dati binari grezzi o dati binari base64encoded è qualificato per essere ottimizzato al momento della costruzione di quel nodo o poi. Per l'efficienza ottimale di MTOM, si consiglia un utente di inviare allegati binari più piccoli che utilizzano base64encoding (non ottimizzato) e gli allegati più grandi come contenuto ottimizzato. Inoltre, un utente può creare un nodo di contenuto binario ottimizzabile utilizzando una stringa codificata base64, che contiene contenuto binario codificato, dato con il tipo MIME della rappresentazione binaria effettiva. Axis2 utilizza javax. activation. DataHandler per gestire i dati binari. Tutti i nodi di contenuti binari ottimizzati verranno serializzati come Base64 stringhe se quotMTOM non è enabledquot. È inoltre possibile creare nodi di contenuto binario, che non sarà ottimizzata in ogni caso. Saranno serializzati e inviati come stringhe Base64. L'attivazione di ottimizzazione MTOM sul lato client In Opzioni, impostare la proprietà quotenableMTOMquot su True quando si inviano messaggi. Quando questa proprietà è impostata su True, qualsiasi busta SOAP, indipendentemente dal fatto che contiene contenuti ottimizzabile o no, verrà serializzato come un messaggio MIME MTOM ottimizzato. Axis2 serializza tutti i nodi di contenuti binari come Base64 codificato stringhe indipendentemente dal fatto che sono qualificati per essere ottimizzato o no se la proprietà quotenableMTOMquot è impostata su False. Se la busta contiene tutti gli elementi di informazione elemento del nome XOP: Include (vedi XML-binary Optimized Packaging 3. XOP infoset costrutti). L'utente non deve specificare nulla in modo che Axis2 di ricevere messaggi MTOM ottimizzato. Axis2 identificherà automaticamente e de-serializzare di conseguenza, come e quando arriva un messaggio MTOM. L'attivazione di ottimizzazione MTOM sul lato server Il server Axis 2 identifica automaticamente i messaggi in arrivo MTOM ottimizzato in base al tipo di contenuto e li de-serializza di conseguenza. L'utente può enableMTOM sul lato server per i messaggi in uscita, per enableMTOM a livello globale per tutti i servizi, gli utenti possono impostare il parametro quotenableMTOMquot su True nel Axis2.xml. Quando è impostato, tutti i messaggi in uscita vengono serializzati e inviati come messaggi MIME MTOM ottimizzato. Se non è impostata, tutti i dati binari nei nodi di contenuti binari verranno serializzati come stringhe Base64 codificati. Questa configurazione può essere sovrascritto nel services. xml in base al servizio e per operazione. È necessario riavviare il server dopo aver impostato questo parametro. Accesso ai dati ricevuti binario (codice di esempio) In seguito il contenuto è stato catturato a TcpMon: Domanda proveniente da SoapUI Pro 3.0.2: POST tf6servicesxdsrepositoryb HTTP1.1 Accept-Encoding: gzip, deflate Content-Type: multipartrelated typeapplicationxopxml avviare start-infoapplicationsoapxml azione boundary - --- Part1728349551.1260534830078 MIME-Version: 1.0 User-Agent: Jakarta Commons-HttpClient3.1 Host: ihexds. nist. gov:9080 Content-Length: 13318 ------ Part1728349551.1260534830078 Content-Type: applicationxopxml charsetUTF -8 typeapplicationsoapxml actionProvideAndRegisterDocumentSetRequest Content-Transfer-Encoding: 8bit Content-ID: ------ Part1728349551.1260534830078 Content-Type: textplain charsetus-ascii Content-Transfer-Encoding: 7bit Content-ID: ltgt Questo è depeches documento. Richiesta fatta da strumento xdstest: POST tf6servicesxdsrepositoryb HTTP1.1 Content-Type: multipartrelated boundaryMIMEBoundaryurnuuid613A2BD2D99F1E6B5912 60.534.073,176 mila typeapplicationxopxml startlt0.urn: uuid: 613A2BD2D99F1E6B591260534073177 apache. orggt Iniziamo-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: binario Content-ID: lt0.urn: uuid: 613A2BD2D99F1E6B591260534073177apache. orggt --MIMEBoundaryurnuuid613A2BD2D99F1E6B59126053407 3176 Content tipo: textplain Content-Transfer-Encoding: binario Content-ID: LT1. urn: uuid: 613A2BD2D99F1E6B591260534073366apache. or g gt Questo è il mio documento. Da dove posso impostare Content-Transfer-Encoding come binario presso la cancelleria del pubblico NIST, è possibile visualizzare il documento di testo che è stato inviato come allegato: Ho anche provato a fare Codifica allegati come vero in Proprietà TestRequest. Ma la sua non funziona neanche. Grazie per la HelpContent-Type: multipart Multi-part Content-Type header identificare i messaggi multipart. Essi richiedono che un sottotipo e altri elementi inclusi nella testata. Il tipo di contenuto multipartalternative viene usata quando la stessa informazione viene presentata in diverse parti del corpo in forme diverse. Le parti del corpo sono ordinate per complessità crescente. Ad esempio, un messaggio che è costituito da un documento Microsoft Word 97 pesantemente formattati potrebbe anche essere presentato in formato Microsoft Word versione 6.0, rich text format, e un formato di testo normale. In questo caso il testo in chiaro sarà presentato come la prima parte del corpo alternativa. La ricca versione del testo seguirebbe, poi il Word 6.0, poi la più complessa, Word 97. Posizionare la versione solo testo prima è il sistema più amichevole per gli utenti con UA ​​non-MIME-compliant, perché vedranno la versione riconoscibile prima. La SUP MIME-compliant devono presentare la versione più complessa che si può riconoscere o dare all'utente una scelta di quale versione da visualizzare. valori Content-ID deve essere diverso per ogni parte dove ci sono diversi livelli di complessità tra le parti. Il contenuto-ID di ogni parte dovrebbe essere diverso dal contenuto-ID del multipartalternative generale. Cioè, un valore contenuto-ID farà riferimento all'entità multipartalternative, mentre uno o più altri valori Content-ID faranno riferimento alle parti al suo interno. Il tipo di contenuto multipartbyteranges è definito come parte del messaggio di protocollo HTTP. Esso comprende due o più parti, ognuna con il proprio Content-Type e campi contenuti media. Le parti sono separate utilizzando un parametro boundary MIME. Esso permette di binario e file 7-bit e 8 bit venga inviato in più parti con le lunghezze delle parti saranno specificate nell'intestazione di ciascuna parte. Si noti che mentre HTTP rende disposizioni per l'utilizzo di MIME per i documenti HTTP, HTTP non è strettamente MIME-compliant. Il tipo di multipartdigest contenuto utilizzato per inviare collezioni di messaggi di testo. Viene realizzato allo stesso modo come il tipo di contenuto multipartmixed, ma ogni parte del corpo dovrebbe essere di content-type: messagerfc822. Il tipo di contenuto multipartform-dati ha lo scopo di consentire ai fornitori di informazioni di esprimere richieste di upload di file in modo uniforme, e per fornire una rappresentazione MIME-compatibile per le risposte di upload di file. Il tipo di contenuto multipartmixed viene utilizzato quando le parti del corpo sono indipendenti e devono essere impacchettato in un ordine particolare. Quando un UA non riconosce un sottotipo multipart, si tratterà il messaggio come multipartmixed. Scopo del tipo di contenuto multipartparallel è di visualizzare tutte le parti simultaneamente su hardware e software in grado di farlo. Per esempio, un file di immagine può essere visualizzata mentre un file audio è in riproduzione. Il tipo di contenuto multipartrelated viene utilizzato per i documenti composti, quei messaggi in cui sono destinati le parti del corpo distinte di lavorare insieme per fornire il pieno significato del messaggio. Inoltre, multipartrelated può essere utilizzato per fornire collegamenti ai contenuti non contenute all'interno del messaggio. Multipartrelated può essere utilizzata per i documenti composti in cui l'oggetto è costruito progressivamente da pezzi, a partire dalla parte del corpo principale come specificato nel parametro start. Se il parametro di avvio non è specificato, allora la prima parte del corpo è considerato il punto di partenza o parte del corpo principale. Multipartrelated richiede un parametro di tipo. Il parametro type specifica il tipo di contenuto della prima parte o root. elaborazione Multipartrelated ha la precedenza su Content-Disposition. Molti agenti utente MIME non riconoscono multipartrelated e trattare questi messaggi come multipartmixed. Per permettere questo, alcuni UAs includeranno il tecnicamente inutile header Content-Disposition in parti del corpo multipartrelated. Content-Location e Content-Base intestazioni sono definite per risolvere i riferimenti URL ad altre parti del corpo. Entrambe le intestazioni sono validi in qualsiasi parte del messaggio o il corpo. Essi sono validi per il titolo contenuto o intestazione messaggio in cui si verificano e per il suo contenuto. I Content-Location e Content-Base intestazioni si applicano alle intestazioni e parti del corpo in cui si verificano e non hanno un significato nelle voci più parti. L'intestazione Content-Base fornisce una base per URI relativi che si verificano in altri campi voce e nei documenti HTML che non hanno alcun elemento BASE nel suo codice HTML. Il suo valore deve essere un URI assoluto. L'intestazione Content-Location contiene un URL che specifica il corpo di quella parte del corpo. L'URL può essere relativo a un URL specificato in un header Content-Base. L'esempio seguente mostra come vengono utilizzate queste intestazioni: Il tipo di contenuto multipartreport è stato definito per la restituzione di relazioni sullo stato di consegna, con optional inclusi i messaggi. Si sta trovando più ampio utilizzo nella comunicazione machine-to-machine. Il multipartreport viene utilizzato per Message Disposition Notification. multipartsigned. multipartencrypted RFC1847 La multipartsigned e multipartencrypted tipi di contenuto fornire un quadro di sicurezza per le parti MIME. Queste intestazioni non definiscono protocolli di sicurezza, ma esistono per portare i documenti protetti. Ogni parte multipartsigned o multipartencrypted corpo viene effettuata in due parti collegate, una con le informazioni di controllo che descrive il protocollo e uno con il documento protetto. Il tipo di contenuto multipartsigned specifica come sostenere i servizi di autenticazione e integrità utilizzando la firma digitale. Le informazioni di controllo viene effettuato nella seconda delle due parti del corpo richiesti. Il tipo di contenuto multipartencrypted specifica come sostenere la riservatezza utilizzando la crittografia. Le informazioni di controllo avviene nella prima delle due parti del corpo richiesti. Mostra: Ereditato codifica di trasferimento contenuto ProtectedConfigure applica a: Exchange Online, la codifica di trasferimento Content Exchange Server 2013 definisce i metodi di codifica per trasformare i dati del messaggio di posta elettronica binari nel formato testo normale US-ASCII. Questa trasformazione consente al messaggio di viaggiare attraverso vecchie server di messaggistica SMTP che supportano solo i messaggi in testo US-ASCII. trasferimento di codifica Il contenuto è definito nella RFC 2045. Il metodo di codifica di trasferimento è memorizzato nel campo di intestazione Content-Transfer-Encoding nel messaggio. In Microsoft Exchange Server 2013, i seguenti metodi di codifica di trasferimento contenuto sono disponibili: 7-bit Questo valore indica che i dati del corpo del messaggio è già nel formato testo ASCII degli Stati Uniti, e non codifica dei messaggi è stato fatto per il messaggio. Quoted-printable (QP) Questo metodo di codifica utilizza caratteri US-ASCII stampabili per codificare i dati del corpo del messaggio. Se il testo del messaggio originale è principalmente testo US-ASCII, la codifica QP dà risultati un po 'leggibili e compatti. Per impostazione predefinita, Cambio 2013 utilizza QP per la codifica di dati del messaggio binari. Base64 Questo metodo di codifica si basa principalmente sullo standard privacy-enhanced mail (PEM) definito nella RFC 1421. codifica Base64 utilizza il metodo di codifica alfabeto di 64 caratteri e caratteri di riempimento di uscita definito dalla PEM per codificare i dati del corpo del messaggio. codifica Base64 crea un prevedibile aumento di dimensioni dei messaggi ed è ottimale per i dati binari e il testo non-US-ASCII. È possibile configurare il metodo di codifica di trasferimento utilizzando i ByteEncoderTypeFor7BitCharsets parametro sul Set-OrganizationConfig e cmdlet Set-RemoteDomain. Le impostazioni di codifica di trasferimento contenuto configurate con Set-OrganizationConfig si applicano a tutti i messaggi nell'organizzazione di Exchange. Le impostazioni di codifica di trasferimento contenuto configurati con Set-RemoteDomain si applicano solo a messaggio inviato ai destinatari esterni nel dominio remoto. Nella tabella seguente sono elencati i valori che è possibile utilizzare per impostare il metodo di codifica di trasferimento. Parametro in Set-OrganizationConfig parametro Set-RemoteDomain

No comments:

Post a Comment