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 bir ağdaki bir gönderen ve alıcı arasında rastgele bilgi iletmenin bir aracıdır. Bilgileri aktarmak, 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 getirilmeleri gerekir. Bellek Message içi nesne oluşturmak için bir iletiyi seri durumdan çıkarma işlemi kullanılarak CreateMessageyapılabilir. Özellikler ayrıca ayrı ayrı seri durumdan çıkarılmalı ve belirli Message bir örnek için özellik koleksiyonuna el ile eklenmelidir.

Bir Message nesnenin boyutu, iletilen verilerin boyutuna sabittir. Her gövde, örneğin sarmalandığı akışın XmlReaderXmlReader boyutu üzerinde önceden tanımlanmış bir sınır olmadan ö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 inceleyip işleyen bir varlık tarafından oluşturulan yararlı bilgilerle açıklama ekleyebilir. Bu işlev 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 kabloda iletildiğinden, üst bilgiyi inceleyen bir varlık, üst bilgi tarafından kullanılan protokollerin temel sürümlerini desteklemelidir. Ancak, özellikler bir iletiye açıklama eklemenin sürümden bağımsız bir yolunu sağlar.

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

Bir iletinin tüketicisinin, tüketici 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 olurlar.
  • 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ının kendisini (On)(Begin)Close (ve/veya OnAbort) öğesinden gizleyin.

Uygulayanlara Notlar

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

Oluşturucular

Name Description
Message()

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

Özellikler

Name Description
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 gösteren bir değer döndürür.

IsEmpty

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

IsFault

Bu iletinin HERHANGI bir SOAP hatası oluşturup oluşturmadığını gösteren 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

Name Description
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)

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

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

SOAP hatası, nedeni ve hatanın ayrıntıları, bir sürüm ve eylem 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, BodyWriter)

Bayt dizisini içeren bir gövdeye sahip 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, Object)

Belirtilen sürüm, eylem ve gövde ile 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(MessageVersion, String)

Sürüm ve eylem içeren 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()

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

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

Geçerli Objectbasit 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 yazilmesine neden olan 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 yazilmesi 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)

İleti gövdesini belirtilen XmlWriterkullanarak 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ı

Name Description
IDisposable.Dispose()

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

Uzantı Metotları

Name Description
ToHttpRequestMessage(Message)

Bir HttpRequestMessage örnekten örnek Message oluşturur.

ToHttpResponseMessage(Message)

Bir HttpResponseMessage örnekten örnek Message oluşturur.

Şunlara uygulanır