Windows Communication Foundation (WCF) での生バイナリ データの送受信は、 ByteStreamMessageEncodingBindingElementを使用して構成されます。
バイト ストリーム メッセージ エンコーダーのアーキテクチャ
WCF によって使用されるバイナリ メッセージ エンコーダーには、メッセージ内の基になるバイナリ データを処理、検証、または識別するための機能がありません。 データ パッケージは XML にエンコードされ、送信、受信、デコードされます。 エンコーダーは、トランスポートに渡された後、およびメッセージがメッセージ キューに送信される前にデータを処理します。 機能的には、バイナリ エンコーダーはメッセージデータを送信用の <binary> 要素にラップし、メッセージの受信後に要素を削除します。
バイト ストリーム メッセージ エンコーダーの使用
バイト ストリーム メッセージ エンコーダーを実装するサービス コントラクトの例を次に示します。
[OperationContract]
Void Myfunction(Stream stream);
次の例は、呼び出されるサービスを示しています。
proxy.MyFunction(stream);
メッセージ インフラストラクチャ (ルーターなど) を実装するサービスを使用する場合、メッセージは、次の例に示すように、メッセージを検査、検証、または対話することなく処理されます。
[OperationContract]
void ProcessMessage(Message message) ;
シナリオ
バイト ストリーム エンコーダーは、次のシナリオで役立ちます。
WCF を使用してコンピューター間で JPEG イメージを転送する。 このシナリオでは、イメージは外部ソースからのトランスポートを経由して到着し、送信されるデータはイメージを構成する生バイトになります。 サービスはバイナリ データを受け取り、イメージを表示します。
メッセージ キューから情報を読み取って処理する。 メッセージはメッセージ・キュー・マネージャーから読み取られ、処理されるメッセージ・キュー・チャネルを渡されます。 メッセージ キュー チャネルは、WCF チャネル スタックのキュー マネージャーとして機能します。
メッセージ キュー チャネル経由でメッセージを送信する場合、送信側はキュー マネージャーから受信したバイトを制御できません。 受信プロセスに生バイトを読み取る機能がない場合、メッセージは不適切な形式で受信され、処理されません。受信プロセスには、受信したバイトを使用可能な形式に変換する機能があることを前提としています。