Codieren von binären Objekten mit dem ByteStream-EncoderEncoding Binary Objects with ByteStream Encoder

Senden und Empfangen von unformatierten Binärdaten mit Windows Communication Foundation (WCF) ist mit konfiguriert ByteStreamMessageEncodingBindingElement.Sending and receiving raw binary data with Windows Communication Foundation (WCF) is configured using ByteStreamMessageEncodingBindingElement.

Bytestream-Nachrichtenencoder-ArchitekturByte Stream Message Encoder Architecture

Der binäre Nachrichtenencoder, die von WCF verwendet weist keine Funktionen zum Verarbeiten, überprüfen oder identifizieren die zugrunde liegenden Binärdaten in der Nachricht.The binary message encoder used by WCF has no facility for processing, validating, or identifying the underlying binary data in the message. Das Datenpaket wird in XML codiert, gesendet, empfangen und decodiert.The data package is encoded into XML, sent, received, and decoded. Der Encoder verarbeitet die Daten, nachdem diese an den Transport übergeben wurden und bevor die Nachricht an die Nachrichtenwarteschlange gesendet wird.The encoder processes the data after being passed to the transport and before the message is sent to the message queue. Der Funktion nach schließt der binäre Encoder die Nachrichtendaten zum Senden in <binary>-Elemente ein und entfernt die Elemente, nachdem die Nachricht empfangen wurde.Functionally, the binary encoder wraps the message data in <binary> elements for sending and removes the elements after the message is received.

Verwenden des Bytestream-NachrichtenencodersUsing the Byte Stream Message Encoder

Das folgende Beispiel zeigt einen Dienstvertrag, der den Bytestream-Nachrichtenencoder implementiert.The following example shows a service contract that implements the byte stream message encoder.

[OperationContract]  
Void Myfunction(Stream stream);  

Das folgende Beispiel zeigt, wie der Dienst aufgerufen wird.The following example shows the service being invoked.

proxy.MyFunction(stream);  

Falls Sie einen Dienst verwenden, der eine Nachrichteninfrastruktur implementiert (zum Beispiel ein Router), wird die Nachricht verarbeitet, ohne dass diese untersucht bzw. überprüft oder dass auf andere Art damit interagiert wird. Dies wird im folgenden Beispiel veranschaulicht.In the case of using a service that implements a message infrastructure (such as a router), the message is processed without inspecting, validating, or otherwise interacting with the message, as shown in the following example.

[OperationContract]  
void ProcessMessage(Message message) ;  

SzenarienScenarios

Der Bytestreamencoder ist in folgenden Szenarios nützlich.The Byte Stream Encoder is useful in the following scenarios.

  • Übertragen eines JPEG-Bilds zwischen Computern mithilfe von WCF.Transferring a JPEG image between computers using WCF. In diesem Szenario wird das Bild über den Transport von einer externen Quelle empfangen. Bei den gesendeten Daten handelt es sich um die unformatierten Bytes, aus denen das Bild besteht.In this scenario, the image will arrive through the transport from an outside source, and the data sent will be the raw bytes that make up the image. Ein Dienst empfängt die Binärdaten und zeigt das Bild an.A service will receive the binary data and display the image.

  • Lesen von Informationen aus einer Meldungswarteschlange und Verarbeiten der Informationen.Reading information out of a message queue and processing it. Die Meldung wird von einem Meldungswarteschlangen-Manager gelesen und zur Verarbeitung an den Meldungswarteschlangenkanal übergeben.The message will be read from a message queue manager, and passed up the message queue channel to be handled. Die Warteschlange Nachrichtenkanal fungiert als ein Warteschlangen-Manager in der WCF-Kanalstapel.The message queue channel will act as a queue manager in the WCF channel stack.

Wenn eine Meldung über einen Meldungswarteschlangenkanal gesendet wird, hat der Absender keine Kontrolle über die vom Warteschlangen-Manger empfangenen Bytes.In the case of sending a message over a message queue channel, the sender has no control over the bytes received from the queue manager. Wenn im Empfängerprozess keine unformatierten Bytes gelesen werden können, wird die Meldung als falsch formatierte Meldung empfangen und nicht verarbeitet. Es wird davon ausgegangen, dass der Empfängerprozess die empfangenen Bytes in ein akzeptables Format übersetzen kann.If the receiving process has no capability to read raw bytes, the message will be received as badly formatted and will not be processed; it is assumed that the receiving process will have the capability of translating the received bytes back into a usable format.