Message クラスは、ネットワーク上で送信側と受信側の間で任意の情報を通信するための方法を提供します。情報の転送、対処方法の提案または要求、またはデータの要求のために使用できます。
Message オブジェクトの構造は、SOAP エンベロープを表します。このオブジェクトは、メッセージの本文と、Headers クラスで表されるオプションのヘッダーのコレクションという 2 つの別個の部分で構成されます。このメッセージの内容は、送信者から受信者に送られるアプリケーションで定義されたデータです。メッセージ ヘッダーによりシステムやアプリケーションが拡張可能となり、変化する要件に適合できます。これは、特定のヘッダーを処理して応答するコードを定義できるためです。独自のヘッダーを定義することもできます。メッセージ ヘッダーは、メッセージの内容と一緒にシリアル化および逆シリアル化されます。
メッセージは、特定の形式で送受信されます。標準のテキスト ベースの XML 形式と、バイナリ ベースの XML 形式という 2 つの形式がサポートされます。SOAP 1.1 および SOAP 1.2 の両エンベロープを表すために Message オブジェクトを使用できます。Message のインスタンスは、作成時に修正され、特定の SOAP バージョンに関連付けられることに注意してください。Version プロパティは、メッセージの SOAP バージョンを表します。
Message オブジェクトは、WriteMessage メソッドを使用することにより、外部ストアにシリアル化できます。メッセージのプロパティもシリアル化できますが、個々に識別し、個別にシリアル化する必要があります。メモリ内 Message オブジェクトを作成するためのメッセージの逆シリアル化は、CreateMessage を使用して実行できます。プロパティは、やはり、個別に逆シリアル化し、特定の Message インスタンスに対するプロパティ コレクションに手動で追加する必要があります。
Message オブジェクトのサイズは、それが送信するデータのサイズに固定されます。すべての本文は XmlReader のインスタンスとしてモデル化され、XmlReader のインスタンスがラップするストリームのサイズには事前に定義された制限はありません。ただし、特定のチャネル プロバイダでは、各自が処理するメッセージのサイズが制限されている可能性があります。
Message には、メッセージを調査して処理したエンティティが生成する有用な情報で注釈を付けることができます。この機能は、Headers プロパティと Properties プロパティによって提供されます。Headers コレクションは、メッセージの一連の SOAP ヘッダーを表します。
Properties プロパティは、メッセージに対する処理レベルの注釈を表します。ヘッダー内の情報はネットワークを介して送信されるので、ヘッダーを調査するエンティティは、ヘッダーにより使用されるプロトコルの基になるバージョンをサポートする必要があります。ただし、プロパティはメッセージを注釈するバージョンに対して、より独立した方法を提供しています。
Message インスタンスを作成するには、いずれかの CreateMessage メソッドを使用します。
メッセージのコンシューマは、メッセージの内容へのアクセスが終了したら必ず、Close を呼び出すことをお勧めします。このようにすることで、メッセージの有効期間に関連付けられている有限のシステム リソース (ソケットや名前付きパイプなど) が解放されます。
このクラスから派生するマネージ C++ ユーザーに対する特別な注意 :
クリーンアップ コードは、デストラクタではなく (On)(Begin)Close (または OnAbort のどちらか一方または両方) に置いてください。
デストラクタは使用しないでください。使用すると、コンパイラが IDisposable を自動生成します。
非参照メンバを使用しないでください。使用すると、コンパイラが IDisposable を自動生成します。
ファイナライザを使用しないでください。使用する場合は、ビルド警告を抑制し、SuppressFinalize(Object) を呼び出し、ファイナライザ自体を (On)(Begin)Close (または OnAbort のどちらか一方または両方) から呼び出して、自動生成される IDisposable の動作をエミュレートする必要があります。
継承元へのメモ :Message から継承する場合は、Headers メンバと Version メンバをオーバーライドする必要があります。