Aracılığıyla paylaş


Message Sınıf

Tanım

Dağıtılmış bir ortamdaki uç noktalar arasındaki iletişim birimini temsil eder.

public ref class Message abstract : IDisposable
public abstract class Message : IDisposable
type Message = class
    interface IDisposable
Public MustInherit Class Message
Implements IDisposable
Devralma
Message
Uygulamalar

Örnekler

Aşağıdaki kod örneği, ileti göndermek ve yanıtı okumak için kanal fabrikasını kullanan bir istemciyi gösterir.

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

Açıklamalar

sınıfı, Message ağdaki bir gönderen ve alıcı arasında rastgele bilgiler iletmenin bir aracıdır. Bilgileri aktarmak, bir eylem kursu önermek veya talep etmek ya da veri istemek için kullanılabilir.

Nesnenin Message yapısı SOAP zarfını temsil eder. İki ayrı bölümden oluşur: iletinin gövdesi ve sınıfı tarafından Headers temsil edilen isteğe bağlı üst bilgi koleksiyonu. İleti içeriği, bir gönderenden alıcıya gönderilen uygulama tanımlı verilerdir. İleti üst bilgileri, değişen gereksinimleri karşılamak için sistem ve uygulama genişletilebilirliğini etkinleştirir, çünkü belirli üst bilgileri işlemek ve yanıtlamak için kod tanımlayabilirsiniz. Kendi üst bilgilerinizi de tanımlayabilirsiniz. İleti üst bilgileri, iletinin içeriğiyle birlikte seri hale getirilir veya seri durumdan çıkarılır.

İletiler belirli biçimlerde alınır ve gönderilir. İki biçim için destek sağlanır: standart metin tabanlı XML biçimi ve ikili tabanlı XML biçimi. Message Nesnesi hem SOAP 1.1 hem de SOAP 1.2 zarflarını temsil etmek için kullanılabilir. örneğinin Message oluşturma sırasında düzeltildiğini ve belirli bir SOAP sürümüne bağlı olduğunu unutmayın. özelliği, Version iletinin SOAP sürümünü temsil eder.

Bir Message nesne, yöntemi kullanılarak bir dış depoya WriteMessage seri hale getirilebilir. İletinin özellikleri de seri hale getirilebilir, ancak ayrı ayrı tanımlanıp seri hale getirilmelidir. Bellek Message içi nesne oluşturmak için bir iletiyi seri durumdan çıkarma işlemi kullanılarak CreateMessageyapılabilir. Özellikler ayrıca tek tek seri durumdan çıkarılmalı ve belirli Message bir örnek için özellik koleksiyonuna el ile eklenmelidir.

Nesnenin Message boyutu, iletilen verilerin boyutuna sabittir. Her gövde, örneğin sarmalandığı akışın XmlReaderXmlReader boyutu üzerinde önceden tanımlanmış bir sınır olmadan bir örneği olarak modellenmiştir. Ancak belirli kanal sağlayıcıları, işledikleri iletilerin boyutu üzerinde bir sınıra sahip olabilir.

bir Message , iletiyi inceleyen ve işleyen bir varlık tarafından oluşturulan yararlı bilgilerle not eklenebilir. Bu işlevsellik ve Properties özellikleri tarafından Headers sağlanır. Koleksiyon, Headers iletideki SOAP üst bilgileri kümesini temsil eder.

özelliği, Properties iletideki işlem düzeyi ek açıklamaları kümesini temsil eder. Üst bilgilerdeki bilgiler kabloya iletildiğinden, üst bilgiyi inceleyen bir varlık, üst bilgi tarafından kullanılan protokollerin temel sürümlerini desteklemelidir. Ancak özellikler, iletiye açıklama eklemenin sürümden bağımsız bir yolunu sağlar.

Örnek Message oluşturmak için yöntemlerden CreateMessage birini kullanın.

Bir iletinin tüketicisinin iletinin içeriğine erişmeyi bitirdiğinde her zaman araması Close önerilir. Bu eylem, iletinin ömrüne bağlı sonlu sistem kaynaklarını (örneğin, yuvalar, adlandırılmış kanallar) serbest kalır.

Bu sınıftan türetilen Yönetilen C++ kullanıcıları için özel not:

  • Temizleme kodunuzu bir yıkıcıya değil (On)(Begin)Close (ve/veya OnAbort) içine yerleştirin.

  • Yıkıcılardan kaçının: derleyicinin otomatik olarak oluşturmasına IDisposableneden olur.

  • Başvuru olmayan üyelerden kaçının: derleyicinin otomatik olarak oluşturmasına IDisposableneden olabilirler.

  • Sonlandırıcılardan kaçının; ancak bir tane eklerseniz, otomatik oluşturulan IDisposable davranışın ne olduğunu öykünmek için derleme uyarısını ve çağrısını SuppressFinalize(Object) ve sonlandırıcıyı (On)(Begin)Close (ve/veya OnAbort) öğesinden gizleyin.

Uygulayanlara Notlar

'den Messagedevraldığınızda, şu üyeleri geçersiz kılmalısınız: Headers, ve Version.

Oluşturucular

Message()

Message sınıfının yeni bir örneğini başlatır.

Özellikler

Headers

Türetilmiş bir sınıfta geçersiz kılındığında iletinin üst bilgilerini alır.

IsDisposed

atılıp atılmadığını Message belirten bir değer döndürür.

IsEmpty

öğesinin boş olup olmadığını Message belirten bir değer döndürür.

IsFault

Bu iletinin herhangi bir SOAP hatası oluşturup oluşturmadığını belirten bir değer alır.

Properties

Türetilmiş bir sınıfta geçersiz kılındığında, iletiye bir dizi işlem düzeyi ek açıklaması alır.

State

Bu Messageöğesinin geçerli durumunu alır.

Version

Türetilmiş bir sınıfta geçersiz kılındığında, iletinin SOAP sürümünü alır.

Yöntemler

BeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object)

İleti gövdesinin içeriğinin zaman uyumsuz yazısını başlatır.

BeginWriteMessage(XmlDictionaryWriter, AsyncCallback, Object)

İletinin tamamının zaman uyumsuz yazısını başlatır.

Close()

Message öğesini kapatır ve tüm kaynakları serbest bırakır.

CreateBufferedCopy(Int32)

Gelecekte erişim için bir bütünü Message bellek arabelleğine depolar.

CreateMessage(MessageVersion, FaultCode, String, Object, String)

SOAP hatası, nedeni ve hatanın ayrıntılarını, bir sürümü ve eylemi içeren bir ileti oluşturur.

CreateMessage(MessageVersion, FaultCode, String, String)

SOAP hatası, hatanın nedeni, sürüm ve eylem içeren bir ileti oluşturur.

CreateMessage(MessageVersion, MessageFault, String)

SOAP hatası, sürüm ve eylem içeren bir ileti oluşturur.

CreateMessage(MessageVersion, String)

Sürüm ve eylem içeren bir ileti oluşturur.

CreateMessage(MessageVersion, String, BodyWriter)

Bayt dizisini içeren bir gövdeye sahip bir ileti oluşturur.

CreateMessage(MessageVersion, String, Object)

Belirtilen sürüm, eylem ve gövde ile bir ileti oluşturur.

CreateMessage(MessageVersion, String, Object, XmlObjectSerializer)

Belirtilen sürümü, eylemi, ileti gövdesini ve seri hale getiriciyi kullanarak bir ileti oluşturur.

CreateMessage(MessageVersion, String, XmlDictionaryReader)

Belirtilen sürüm, eylem ve gövde ile bir ileti oluşturur.

CreateMessage(MessageVersion, String, XmlReader)

Belirtilen okuyucuyu, eylemi ve sürümü kullanarak bir ileti oluşturur.

CreateMessage(XmlDictionaryReader, Int32, MessageVersion)

Belirtilen okuyucuyu, eylemi ve sürümü kullanarak bir ileti oluşturur.

CreateMessage(XmlReader, Int32, MessageVersion)

Belirtilen okuyucuyu, eylemi ve sürümü kullanarak bir ileti oluşturur.

EndWriteBodyContents(IAsyncResult)

İleti gövdesinin içeriğinin zaman uyumsuz yazısını sonlandırır.

EndWriteMessage(IAsyncResult)

İletinin tamamının zaman uyumsuz yazısını sonlandırır.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetBody<T>()

Bu Message örneğin gövdesini alır.

GetBody<T>(XmlObjectSerializer)

Belirtilen seri hale getiriciyi kullanarak bunun Message gövdesini alır.

GetBodyAttribute(String, String)

İleti gövdesinin özniteliklerini alır.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetReaderAtBodyContents()

Bu iletinin gövde içeriğine erişen XML sözlük okuyucuyu alır.

GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
OnBeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object)

İleti, ileti gövdesinin içeriğini yazmaya başladığında bir olay oluşturur.

OnBeginWriteMessage(XmlDictionaryWriter, AsyncCallback, Object)

İletilerin tamamının yazılıyor olduğu bir olayı tetikler.

OnBodyToString(XmlDictionaryWriter)

İleti gövdesi bir dizeye dönüştürüldüğünde çağrılır.

OnClose()

İleti kapatılırken çağrılır.

OnCreateBufferedCopy(Int32)

Bu iletiyi depolamak için bir ileti arabelleği oluşturulduğunda çağrılır.

OnEndWriteBodyContents(IAsyncResult)

İleti gövdesinin içeriği yazılırken bir olay tetikler.

OnEndWriteMessage(IAsyncResult)

İletinin tamamının yazımı sona erdiğinde bir olay oluşturur.

OnGetBody<T>(XmlDictionaryReader)

İletinin gövdesi alındığında çağrılır.

OnGetBodyAttribute(String, String)

İleti gövdesinin öznitelikleri alındığında çağrılır.

OnGetReaderAtBodyContents()

Bu iletinin gövde içeriğine erişen bir XML sözlük okuyucusu alındığında çağrılır.

OnWriteBodyContents(XmlDictionaryWriter)

İleti gövdesi bir XML dosyasına yazıldığında çağrılır.

OnWriteMessage(XmlDictionaryWriter)

İletinin tamamı bir XML dosyasına yazıldığında çağrılır.

OnWriteStartBody(XmlDictionaryWriter)

Başlangıç gövdesi bir XML dosyasına yazıldığında çağrılır.

OnWriteStartEnvelope(XmlDictionaryWriter)

Başlangıç zarfı bir XML dosyasına yazıldığında çağrılır.

OnWriteStartHeaders(XmlDictionaryWriter)

Başlangıç üst bilgisi bir XML dosyasına yazıldığında çağrılır.

ToString()

Geçerli Message örneği temsil eden bir dize döndürür.

WriteBody(XmlDictionaryWriter)

Belirtilen XmlDictionaryWriteröğesini kullanarak gövde öğesini yazar.

WriteBody(XmlWriter)

Belirtilen XmlWriterkullanarak ileti gövdesini serileştirir.

WriteBodyContents(XmlDictionaryWriter)

Belirtilen XmlDictionaryWriteröğesini kullanarak gövde içeriğini serileştirir.

WriteMessage(XmlDictionaryWriter)

Belirtilen XmlDictionaryWriterkullanarak iletinin tamamını serileştirir.

WriteMessage(XmlWriter)

Belirtilen XmlWriterkullanarak iletinin tamamını serileştirir.

WriteStartBody(XmlDictionaryWriter)

Belirtilen XmlDictionaryWriterkullanarak iletinin başlangıç gövdesini serileştirir.

WriteStartBody(XmlWriter)

Belirtilen XmlDictionaryWriterkullanarak iletinin başlangıç gövdesini serileştirir.

WriteStartEnvelope(XmlDictionaryWriter)

Belirtilen XmlDictionaryWriterkullanarak başlangıç zarfını serileştirir.

Belirtik Arabirim Kullanımları

IDisposable.Dispose()

Bu ileti tarafından kullanılan tüm kaynakları kapatır. Bu yöntem devralınamaz.

Uzantı Metotları

ToHttpRequestMessage(Message)

Bir HttpRequestMessage örnekten örnek Message oluşturur.

ToHttpResponseMessage(Message)

Bir HttpResponseMessage örnekten örnek Message oluşturur.

Şunlara uygulanır