Message Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mewakili unit komunikasi antara titik akhir di lingkungan terdistribusi.
public ref class Message abstract : IDisposable
public abstract class Message : IDisposable
type Message = class
interface IDisposable
Public MustInherit Class Message
Implements IDisposable
- Warisan
-
Message
- Penerapan
Contoh
Contoh kode berikut menunjukkan klien yang menggunakan pabrik saluran untuk mengirim pesan dan membaca balasan.
using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Runtime.Serialization;
namespace ConsoleApplication1
{
class client
{
static void RunClient()
{
//Step1: create a binding with just HTTP
CustomBinding binding = new CustomBinding();
binding.Elements.Add(new HttpTransportBindingElement());
//Step2: use the binding to build the channel factory
IChannelFactory<IRequestChannel> factory =
binding.BuildChannelFactory<IRequestChannel>(
new BindingParameterCollection());
//open the channel factory
factory.Open();
//Step3: use the channel factory to create a channel
IRequestChannel channel = factory.CreateChannel(
new EndpointAddress("http://localhost:8080/channelapp"));
channel.Open();
//Step4: create a message
Message requestmessage = Message.CreateMessage(
MessageVersion.Soap12WSAddressing10,
"http://contoso.com/someaction",
"This is the body data");
//send message
Message replymessage = channel.Request(requestmessage);
Console.WriteLine("Reply message received");
Console.WriteLine("Reply action: {0}",
replymessage.Headers.Action);
string data = replymessage.GetBody<string>();
Console.WriteLine("Reply content: {0}", data);
//Step5: don't forget to close the message
requestmessage.Close();
replymessage.Close();
//don't forget to close the channel
channel.Close();
//don't forget to close the factory
factory.Close();
}
public static void Main()
{
Console.WriteLine("Press [ENTER] when service is ready");
Console.ReadLine();
RunClient();
Console.WriteLine("Press [ENTER] to exit");
Console.ReadLine();
}
}
}
Imports System.Collections.Generic
Imports System.Text
Imports System.ServiceModel
Imports System.ServiceModel.Channels
Imports System.Runtime.Serialization
Namespace ConsoleApplication1
Friend Class client
Private Shared Sub RunClient()
'Step1: create a binding with just HTTP
Dim binding As New CustomBinding()
binding.Elements.Add(New HttpTransportBindingElement())
'Step2: use the binding to build the channel factory
Dim factory As IChannelFactory(Of IRequestChannel) = binding.BuildChannelFactory(Of IRequestChannel)(New BindingParameterCollection())
'open the channel factory
factory.Open()
'Step3: use the channel factory to create a channel
Dim channel As IRequestChannel = factory.CreateChannel(New EndpointAddress("http://localhost:8080/channelapp"))
channel.Open()
'Step4: create a message
Dim requestmessage As Message = Message.CreateMessage(MessageVersion.Soap12WSAddressing10, "http://contoso.com/someaction", "This is the body data")
'send message
Dim replymessage As Message = channel.Request(requestmessage)
Console.WriteLine("Reply message received")
Console.WriteLine("Reply action: {0}", replymessage.Headers.Action)
Dim data = replymessage.GetBody(Of String)()
Console.WriteLine("Reply content: {0}", data)
'Step5: don't forget to close the message
requestmessage.Close()
replymessage.Close()
'don't forget to close the channel
channel.Close()
'don't forget to close the factory
factory.Close()
End Sub
Public Shared Sub Main()
Console.WriteLine("Press [ENTER] when service is ready")
Console.ReadLine()
RunClient()
Console.WriteLine("Press [ENTER] to exit")
Console.ReadLine()
End Sub
End Class
End Namespace
Keterangan
Kelas ini Message menyediakan sarana untuk mengomunikasikan informasi arbitrer antara pengirim dan penerima di jaringan. Ini dapat digunakan untuk menyampaikan informasi, menyarankan atau menuntut tindakan, atau meminta data.
Struktur Message objek mewakili amplop SOAP. Ini terdiri dari dua bagian yang berbeda: isi pesan dan koleksi header opsional, yang Headers diwakili oleh kelas . Konten pesan adalah data yang ditentukan aplikasi yang dikirim dari pengirim ke penerima. Header pesan memungkinkan ekstensibilitas sistem dan aplikasi untuk memenuhi persyaratan yang berubah, karena Anda dapat menentukan kode untuk memanipulasi dan merespons header tertentu. Anda juga dapat menentukan header Anda sendiri. Header pesan diserialisasikan atau dideserialisasi bersama dengan konten pesan.
Pesan diterima dan dikirim dalam format tertentu. Dukungan disediakan untuk dua format: format XML berbasis teks standar dan format XML berbasis biner. Objek Message dapat digunakan untuk mewakili amplop SOAP 1.1 dan SOAP 1.2. Perhatikan bahwa instans Message diperbaiki saat dibuat dan terikat ke versi SOAP tertentu. Properti Version mewakili versi SOAP pesan.
Objek Message dapat diserialisasikan ke penyimpanan eksternal dengan menggunakan WriteMessage metode . Properti pesan juga dapat diserialisasikan, tetapi harus diidentifikasi secara individual dan diserialisasikan secara terpisah. Deserialisasi pesan untuk membuat objek dalam memori Message dapat dilakukan menggunakan CreateMessage. Properti juga harus dideserialisasi secara individual dan ditambahkan secara manual ke koleksi properti untuk instans tertentu Message .
Ukuran Message objek ditetapkan ke ukuran data yang ditransmisikannya. Setiap isi dimodelkan sebagai instans XmlReader, tanpa batas yang telah ditentukan sebelumnya pada ukuran aliran yang dibungkus XmlReader instans. Namun, penyedia saluran tertentu dapat memiliki batasan pada ukuran pesan yang mereka proses.
Message dapat dianotasikan dengan informasi berguna yang dihasilkan oleh entitas yang telah memeriksa dan memproses pesan. Fungsionalitas ini disediakan oleh Headers properti dan Properties . Koleksi Headers mewakili sekumpulan header SOAP pada pesan.
Properti Properties mewakili kumpulan anotasi tingkat pemrosesan pada pesan. Karena informasi dalam header ditransmisikan pada kawat, entitas yang memeriksa header harus mendukung versi yang mendasari protokol yang digunakan oleh header. Namun, properti menyediakan cara yang lebih independen versi untuk membuat anotasi pesan.
Untuk membuat Message instans, gunakan salah CreateMessage satu metode .
Disarankan agar konsumen pesan selalu menelepon Close ketika konsumen selesai mengakses konten pesan. Tindakan ini membebaskan sumber daya sistem terbatas (misalnya, soket, pipa bernama) yang terkait dengan masa pakai pesan.
Catatan khusus untuk pengguna C++ Terkelola yang berasal dari kelas ini:
- Masukkan kode pembersihan Anda di (Aktif)(Mulai)Tutup (dan/atau OnAbort), bukan di destruktor.
- Hindari destruktor: pengompilasi menyebabkan pengompilasi dibuat IDisposablesecara otomatis .
- Hindari anggota non-referensi: mereka dapat menyebabkan pengompilasi menghasilkan IDisposablesecara otomatis .
- Hindari finalizer; tetapi jika Anda menyertakannya, tekan peringatan build dan panggilan SuppressFinalize(Object) dan finalizer itu sendiri dari (On)(Begin)Close (dan/atau OnAbort) untuk meniru apa yang akan menjadi perilaku yang dihasilkan IDisposable secara otomatis.
Catatan Bagi Implementer
Ketika Anda mewarisi dari Message, Anda harus mengambil alih anggota berikut: Headers, dan Version.
Konstruktor
| Nama | Deskripsi |
|---|---|
| Message() |
Menginisialisasi instans baru dari kelas Message. |
Properti
| Nama | Deskripsi |
|---|---|
| Headers |
Saat ditimpa di kelas turunan, mendapatkan header pesan. |
| IsDisposed |
Mengembalikan nilai yang menunjukkan apakah Message dibuang. |
| IsEmpty |
Mengembalikan nilai yang menunjukkan apakah Message nilai kosong. |
| IsFault |
Mendapatkan nilai yang menunjukkan apakah pesan ini menghasilkan kesalahan SOAP. |
| Properties |
Saat ditimpa dalam kelas turunan, mendapatkan serangkaian anotasi tingkat pemrosesan ke pesan. |
| State |
Mendapatkan status saat ini dari .Message |
| Version |
Ketika ditimpa di kelas turunan, mendapatkan versi SOAP pesan. |
Metode
| Nama | Deskripsi |
|---|---|
| BeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object) |
Memulai penulisan isi isi pesan secara asinkron. |
| BeginWriteMessage(XmlDictionaryWriter, AsyncCallback, Object) |
Memulai penulisan asinkron dari seluruh pesan. |
| Close() |
Message Menutup dan merilis sumber daya apa pun. |
| CreateBufferedCopy(Int32) |
Menyimpan seluruh Message ke dalam buffer memori untuk akses di masa mendatang. |
| CreateMessage(MessageVersion, FaultCode, String, Object, String) |
Membuat pesan yang berisi kesalahan SOAP, alasan dan detail untuk kesalahan, versi, dan tindakan. |
| CreateMessage(MessageVersion, FaultCode, String, String) |
Membuat pesan yang berisi kesalahan SOAP, alasan kesalahan, versi, dan tindakan. |
| CreateMessage(MessageVersion, MessageFault, String) |
Membuat pesan yang berisi kesalahan SOAP, versi, dan tindakan. |
| CreateMessage(MessageVersion, String, BodyWriter) |
Membuat pesan dengan isi yang terdiri dari array byte. |
| CreateMessage(MessageVersion, String, Object, XmlObjectSerializer) |
Membuat pesan menggunakan versi, tindakan, isi pesan, dan serializer yang ditentukan. |
| CreateMessage(MessageVersion, String, Object) |
Membuat pesan dengan versi, tindakan, dan isi yang ditentukan. |
| CreateMessage(MessageVersion, String, XmlDictionaryReader) |
Membuat pesan dengan versi, tindakan, dan isi yang ditentukan. |
| CreateMessage(MessageVersion, String, XmlReader) |
Membuat pesan menggunakan pembaca, tindakan, dan versi yang ditentukan. |
| CreateMessage(MessageVersion, String) |
Membuat pesan yang berisi versi dan tindakan. |
| CreateMessage(XmlDictionaryReader, Int32, MessageVersion) |
Membuat pesan menggunakan pembaca, tindakan, dan versi yang ditentukan. |
| CreateMessage(XmlReader, Int32, MessageVersion) |
Membuat pesan menggunakan pembaca, tindakan, dan versi yang ditentukan. |
| EndWriteBodyContents(IAsyncResult) |
Mengakhiri penulisan asinkron isi isi pesan. |
| EndWriteMessage(IAsyncResult) |
Mengakhiri penulisan asinkron dari seluruh pesan. |
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
| GetBody<T>() |
Mengambil isi instans ini Message . |
| GetBody<T>(XmlObjectSerializer) |
Mengambil isi ini Message menggunakan serializer yang ditentukan. |
| GetBodyAttribute(String, String) |
Mengambil atribut isi pesan. |
| GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
| GetReaderAtBodyContents() |
Mendapatkan pembaca kamus XML yang mengakses konten isi pesan ini. |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| OnBeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object) |
Menaikkan peristiwa saat pesan mulai menulis konten isi pesan. |
| OnBeginWriteMessage(XmlDictionaryWriter, AsyncCallback, Object) |
Menaikkan peristiwa penulisan seluruh pesan dimulai. |
| OnBodyToString(XmlDictionaryWriter) |
Dipanggil saat isi pesan dikonversi menjadi string. |
| OnClose() |
Dipanggil ketika pesan ditutup. |
| OnCreateBufferedCopy(Int32) |
Dipanggil ketika buffer pesan dibuat untuk menyimpan pesan ini. |
| OnEndWriteBodyContents(IAsyncResult) |
Menaikkan peristiwa saat menulis konten isi pesan berakhir. |
| OnEndWriteMessage(IAsyncResult) |
Menaikkan peristiwa saat penulisan seluruh pesan berakhir. |
| OnGetBody<T>(XmlDictionaryReader) |
Dipanggil ketika isi pesan diambil. |
| OnGetBodyAttribute(String, String) |
Dipanggil ketika atribut isi pesan diambil. |
| OnGetReaderAtBodyContents() |
Dipanggil ketika pembaca kamus XML yang mengakses isi pesan ini diambil. |
| OnWriteBodyContents(XmlDictionaryWriter) |
Dipanggil saat isi pesan ditulis ke file XML. |
| OnWriteMessage(XmlDictionaryWriter) |
Dipanggil saat seluruh pesan ditulis ke file XML. |
| OnWriteStartBody(XmlDictionaryWriter) |
Dipanggil saat isi awal ditulis ke file XML. |
| OnWriteStartEnvelope(XmlDictionaryWriter) |
Dipanggil ketika amplop mulai ditulis ke file XML. |
| OnWriteStartHeaders(XmlDictionaryWriter) |
Dipanggil saat header mulai ditulis ke file XML. |
| ToString() |
Mengembalikan string yang mewakili instans saat ini Message . |
| WriteBody(XmlDictionaryWriter) |
Menulis elemen isi menggunakan XmlDictionaryWriter. |
| WriteBody(XmlWriter) |
Menserialisasi isi pesan menggunakan XmlWriter. |
| WriteBodyContents(XmlDictionaryWriter) |
Menserialisasikan konten isi menggunakan XmlDictionaryWriter. |
| WriteMessage(XmlDictionaryWriter) |
Menserialisasikan seluruh pesan menggunakan XmlDictionaryWriter. |
| WriteMessage(XmlWriter) |
Menserialisasikan seluruh pesan menggunakan XmlWriter. |
| WriteStartBody(XmlDictionaryWriter) |
Menserialisasikan isi awal pesan menggunakan yang ditentukan XmlDictionaryWriter. |
| WriteStartBody(XmlWriter) |
Menserialisasikan isi awal pesan menggunakan yang ditentukan XmlDictionaryWriter. |
| WriteStartEnvelope(XmlDictionaryWriter) |
Menserialisasikan amplop mulai menggunakan XmlDictionaryWriter. |
Implementasi Antarmuka Eksplisit
| Nama | Deskripsi |
|---|---|
| IDisposable.Dispose() |
Menutup semua sumber daya yang digunakan oleh pesan ini. Metode ini tidak dapat diwariskan. |
Metode Ekstensi
| Nama | Deskripsi |
|---|---|
| ToHttpRequestMessage(Message) |
Membuat instans HttpRequestMessage dari Message instans. |
| ToHttpResponseMessage(Message) |
Membuat instans HttpResponseMessage dari Message instans. |