Message Klas

Definitie

Vertegenwoordigt de communicatie-eenheid tussen eindpunten in een gedistribueerde omgeving.

public ref class Message abstract : IDisposable
public abstract class Message : IDisposable
type Message = class
    interface IDisposable
Public MustInherit Class Message
Implements IDisposable
Overname
Message
Implementeringen

Voorbeelden

In het volgende codevoorbeeld ziet u een client die gebruikmaakt van de kanaalfactory om een bericht te verzenden en het antwoord te lezen.

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

Opmerkingen

De Message klasse biedt een middel voor het communiceren van willekeurige informatie tussen een afzender en een ontvanger in een netwerk. Het kan worden gebruikt voor het doorgeven van informatie, het voorstellen of aanvragen van een actie of het aanvragen van gegevens.

De structuur van een Message object vertegenwoordigt een SOAP-envelop. Het bestaat uit twee afzonderlijke delen: de hoofdtekst van het bericht en een optionele verzameling kopteksten, vertegenwoordigd door de Headers klasse. De inhoud van het bericht is door de toepassing gedefinieerde gegevens die van een afzender naar een ontvanger worden verzonden. Met de berichtkoppen kunnen systeem- en toepassingsuitbreidbaarheid voldoen aan de veranderende vereisten, omdat u code kunt definiëren om specifieke headers te bewerken en erop te reageren. U kunt ook uw eigen headers definiëren. Berichtkoppen worden geserialiseerd of gedeserialiseerd, samen met de inhoud van het bericht.

Berichten worden ontvangen en verzonden in bepaalde indelingen. Er wordt ondersteuning geboden voor twee indelingen: de standaard xml-indeling op basis van tekst en een op binair gebaseerde XML-indeling. Het Message object kan worden gebruikt om zowel SOAP 1.1- als SOAP 1.2-enveloppen weer te geven. Houd er rekening mee dat er een exemplaar van Message is opgelost bij het maken en is gebonden aan een specifieke SOAP-versie. De Version eigenschap vertegenwoordigt de SOAP-versie van het bericht.

Een Message object kan worden geserialiseerd naar een extern archief met behulp van de WriteMessage methode. Eigenschappen van het bericht kunnen ook worden geserialiseerd, maar ze moeten afzonderlijk worden geïdentificeerd en afzonderlijk geserialiseerd. Het deserialiseren van een bericht voor het maken van een in-memory Message object kan worden uitgevoerd met behulp van CreateMessage. Eigenschappen moeten ook afzonderlijk worden gedeserialiseerd en handmatig worden toegevoegd aan de eigenschappenverzameling voor het specifieke Message exemplaar.

De grootte van een Message object is vastgezet aan de grootte van de gegevens die het verzendt. Elke hoofdtekst wordt gemodelleerd als een exemplaar van XmlReader, zonder vooraf gedefinieerde limiet voor de grootte van de stroom die het XmlReader exemplaar verpakt. Specifieke kanaalproviders kunnen echter een limiet hebben voor de grootte van berichten die ze verwerken.

Een Message kan worden geannoteerd met nuttige informatie die wordt gegenereerd door een entiteit die het bericht heeft onderzocht en verwerkt. Deze functionaliteit wordt geleverd door de Headers en Properties eigenschappen. De Headers verzameling vertegenwoordigt de set SOAP-headers in het bericht.

De Properties eigenschap vertegenwoordigt de set aantekeningen op verwerkingsniveau in het bericht. Omdat informatie in headers op de draad wordt verzonden, moet een entiteit die een header onderzoekt de onderliggende versie(s) van de protocollen ondersteunen die door de header worden gebruikt. Eigenschappen bieden echter een meer versie-onafhankelijke manier om aantekeningen te maken bij een bericht.

Als u een exemplaar wilt maken, gebruikt u een Message van de CreateMessage methoden.

Het wordt aanbevolen dat een consument van een bericht altijd belt Close wanneer de consument klaar is met het openen van de inhoud van het bericht. Met deze actie worden eindige systeembronnen (bijvoorbeeld sockets, named pipes) vrijgemaakt die zijn gekoppeld aan de levensduur van het bericht.

Speciale opmerking voor beheerde C++-gebruikers die zijn afgeleid van deze klasse:

  • Plaats de opschooncode in (On)(Begin)Close (en/of OnAbort), niet in een destructor.
  • Vermijd destructors: ze zorgen ervoor dat de compiler automatisch wordt gegenereerd IDisposable.
  • Vermijd niet-referentieleden: ze kunnen ertoe leiden dat de compiler automatisch wordt gegenereerd IDisposable.
  • Vermijd finalizers; maar als u er een opneemt, onderdrukt u de buildwaarschuwing en de aanroep SuppressFinalize(Object) en de finalizer zelf van (On)(Begin)Close (en/of OnAbort) om te emuleren wat het automatisch gegenereerde IDisposable gedrag zou zijn geweest.

Notities voor uitvoerders

Wanneer u overdrat van Message, moet u de volgende leden overschrijven: Headersen Version.

Constructors

Name Description
Message()

Initialiseert een nieuw exemplaar van de Message klasse.

Eigenschappen

Name Description
Headers

Wanneer deze worden overschreven in een afgeleide klasse, worden de kopteksten van het bericht opgevraagd.

IsDisposed

Retourneert een waarde die aangeeft of de Message waarde wordt verwijderd.

IsEmpty

Retourneert een waarde die aangeeft of de Message waarde leeg is.

IsFault

Hiermee wordt een waarde opgehaald die aangeeft of dit bericht SOAP-fouten genereert.

Properties

Wanneer deze worden overschreven in een afgeleide klasse, haalt u een set aantekeningen op verwerkingsniveau op voor het bericht.

State

Hiermee haalt u de huidige status van deze Message.

Version

Wanneer deze wordt overschreven in een afgeleide klasse, haalt u de SOAP-versie van het bericht op.

Methoden

Name Description
BeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object)

Hiermee start u het asynchrone schrijven van de inhoud van de hoofdtekst van het bericht.

BeginWriteMessage(XmlDictionaryWriter, AsyncCallback, Object)

Hiermee wordt het asynchrone schrijven van het hele bericht gestart.

Close()

Hiermee worden alle Message resources gesloten en vrijgegeven.

CreateBufferedCopy(Int32)

Slaat een hele Message op in een geheugenbuffer voor toekomstige toegang.

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

Hiermee maakt u een bericht met een SOAP-fout, een reden en de details voor de fout, een versie en een actie.

CreateMessage(MessageVersion, FaultCode, String, String)

Hiermee maakt u een bericht met een SOAP-fout, de reden voor de fout, een versie en een actie.

CreateMessage(MessageVersion, MessageFault, String)

Hiermee maakt u een bericht met een SOAP-fout, een versie en een actie.

CreateMessage(MessageVersion, String, BodyWriter)

Hiermee maakt u een bericht met een hoofdtekst die bestaat uit een matrix van bytes.

CreateMessage(MessageVersion, String, Object, XmlObjectSerializer)

Hiermee maakt u een bericht met de opgegeven versie, actie, berichttekst en serialisatiefunctie.

CreateMessage(MessageVersion, String, Object)

Hiermee maakt u een bericht met de opgegeven versie, actie en hoofdtekst.

CreateMessage(MessageVersion, String, XmlDictionaryReader)

Hiermee maakt u een bericht met de opgegeven versie, actie en hoofdtekst.

CreateMessage(MessageVersion, String, XmlReader)

Hiermee maakt u een bericht met behulp van de opgegeven lezer, actie en versie.

CreateMessage(MessageVersion, String)

Hiermee maakt u een bericht met een versie en een actie.

CreateMessage(XmlDictionaryReader, Int32, MessageVersion)

Hiermee maakt u een bericht met behulp van de opgegeven lezer, actie en versie.

CreateMessage(XmlReader, Int32, MessageVersion)

Hiermee maakt u een bericht met behulp van de opgegeven lezer, actie en versie.

EndWriteBodyContents(IAsyncResult)

Hiermee wordt het asynchrone schrijven van de inhoud van de hoofdtekst van het bericht beëindigd.

EndWriteMessage(IAsyncResult)

Hiermee wordt het asynchrone schrijven van het hele bericht beëindigd.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetBody<T>()

Haalt de hoofdtekst van dit Message exemplaar op.

GetBody<T>(XmlObjectSerializer)

Haalt de hoofdtekst hiervan op met behulp van Message de opgegeven serializer.

GetBodyAttribute(String, String)

Haalt de kenmerken van de hoofdtekst van het bericht op.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetReaderAtBodyContents()

Hiermee haalt u de XML-woordenlijstlezer op die toegang heeft tot de hoofdinhoud van dit bericht.

GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
OnBeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object)

Hiermee wordt een gebeurtenis gegenereerd wanneer het bericht de inhoud van de hoofdtekst van het bericht begint te schrijven.

OnBeginWriteMessage(XmlDictionaryWriter, AsyncCallback, Object)

Hiermee wordt een gebeurtenis gegenereerd die het schrijven van hele berichten start.

OnBodyToString(XmlDictionaryWriter)

Aangeroepen wanneer de hoofdtekst van het bericht wordt geconverteerd naar een tekenreeks.

OnClose()

Wordt aangeroepen wanneer het bericht wordt gesloten.

OnCreateBufferedCopy(Int32)

Wordt aangeroepen wanneer er een berichtbuffer wordt gemaakt om dit bericht op te slaan.

OnEndWriteBodyContents(IAsyncResult)

Hiermee wordt een gebeurtenis gegenereerd bij het schrijven van de inhoud van de hoofdtekst van het bericht.

OnEndWriteMessage(IAsyncResult)

Hiermee wordt een gebeurtenis gegenereerd wanneer het schrijven van het hele bericht eindigt.

OnGetBody<T>(XmlDictionaryReader)

Wordt aangeroepen wanneer de hoofdtekst van het bericht wordt opgehaald.

OnGetBodyAttribute(String, String)

Aangeroepen wanneer de kenmerken van de hoofdtekst van het bericht worden opgehaald.

OnGetReaderAtBodyContents()

Wordt aangeroepen wanneer een XML-woordenlijstlezer die toegang heeft tot de hoofdtekst van dit bericht, wordt opgehaald.

OnWriteBodyContents(XmlDictionaryWriter)

Aangeroepen wanneer de hoofdtekst van het bericht naar een XML-bestand wordt geschreven.

OnWriteMessage(XmlDictionaryWriter)

Aangeroepen wanneer het hele bericht naar een XML-bestand wordt geschreven.

OnWriteStartBody(XmlDictionaryWriter)

Aangeroepen wanneer de hoofdtekst van het begin naar een XML-bestand wordt geschreven.

OnWriteStartEnvelope(XmlDictionaryWriter)

Aangeroepen wanneer de beginenvelop naar een XML-bestand wordt geschreven.

OnWriteStartHeaders(XmlDictionaryWriter)

Aangeroepen wanneer de beginkop naar een XML-bestand wordt geschreven.

ToString()

Retourneert een tekenreeks die het huidige Message exemplaar vertegenwoordigt.

WriteBody(XmlDictionaryWriter)

Hiermee schrijft u het hoofdtekstelement met behulp van de opgegeven XmlDictionaryWriter.

WriteBody(XmlWriter)

Serialiseert de hoofdtekst van het bericht met behulp van de opgegeven XmlWriter.

WriteBodyContents(XmlDictionaryWriter)

Serialiseert de hoofdtekstinhoud met behulp van de opgegeven XmlDictionaryWriter.

WriteMessage(XmlDictionaryWriter)

Serialiseert het hele bericht met behulp van de opgegeven XmlDictionaryWriter.

WriteMessage(XmlWriter)

Serialiseert het hele bericht met behulp van de opgegeven XmlWriter.

WriteStartBody(XmlDictionaryWriter)

Serialiseert de begintekst van het bericht met behulp van de opgegeven XmlDictionaryWriter.

WriteStartBody(XmlWriter)

Serialiseert de begintekst van het bericht met behulp van de opgegeven XmlDictionaryWriter.

WriteStartEnvelope(XmlDictionaryWriter)

Serialiseert de beginenvelop met behulp van de opgegeven XmlDictionaryWriter.

Expliciete interface-implementaties

Name Description
IDisposable.Dispose()

Hiermee sluit u alle resources die door dit bericht worden gebruikt. Deze methode kan niet worden overgenomen.

Extensiemethoden

Name Description
ToHttpRequestMessage(Message)

Hiermee maakt u een HttpRequestMessage exemplaar van een Message exemplaar.

ToHttpResponseMessage(Message)

Hiermee maakt u een HttpResponseMessage exemplaar van een Message exemplaar.

Van toepassing op