Sdílet prostřednictvím


Message Třída

Definice

Představuje jednotku komunikace mezi koncovými body v distribuovaném prostředí.

public ref class Message abstract : IDisposable
public abstract class Message : IDisposable
type Message = class
    interface IDisposable
Public MustInherit Class Message
Implements IDisposable
Dědičnost
Message
Implementuje

Příklady

Následující příklad kódu ukazuje klienta, který používá kanál factory k odeslání zprávy a přečtení odpovědi.

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

Poznámky

Třída Message poskytuje způsob komunikace libovolných informací mezi odesílatelem a příjemcem v síti. Dá se použít k předávání informací, návrhu nebo vyžadování postupu nebo vyžádání dat.

Struktura objektu Message představuje obálku SOAP. Skládá se ze dvou různých částí: textu zprávy a volitelné kolekce hlaviček reprezentovaných Headers třídou . Obsah zprávy jsou data definovaná aplikací odesílaná od odesílatele příjemci. Hlavičky zpráv umožňují, aby rozšiřitelnost systému a aplikací splňovaly měnící se požadavky, protože můžete definovat kód pro manipulaci s konkrétními hlavičkami a pro reakci na ně. Můžete také definovat vlastní hlavičky. Hlavičky zprávy jsou serializovány nebo deserializovány spolu s obsahem zprávy.

Zprávy se přijímají a odesílají v určitých formátech. Podpora je poskytována pro dva formáty: standardní textový formát XML a binární formát XML. Objekt Message lze použít k reprezentaci obálky SOAP 1.1 i SOAP 1.2. Všimněte si, že instance Message je pevně nastavena při vytvoření a je vázána na konkrétní verzi SOAP. Vlastnost Version představuje verzi soap zprávy.

Objekt Message lze serializovat do externího úložiště pomocí WriteMessage metody . Vlastnosti zprávy lze také serializovat, ale musí být jednotlivě identifikovány a serializovány samostatně. Deserializaci zprávy za účelem vytvoření objektu v paměti Message lze provést pomocí .CreateMessage Vlastnosti musí být také deserializovány jednotlivě a ručně přidány do kolekce vlastností pro konkrétní Message instanci.

Velikost objektu Message je pevně daná velikostí přenášených dat. Každé tělo je modelováno jako instance XmlReader, bez předdefinovaného omezení velikosti datového proudu, který XmlReader instance zalamuje. Konkrétní poskytovatelé kanálů ale můžou mít omezení velikosti zpráv, které zpracovávají.

Objekt Message lze anotovat užitečnými informacemi vygenerovanými entitou, která zprávu prozkoumala a zpracovala. Tuto funkci poskytují Headers vlastnosti a Properties . Kolekce Headers představuje sadu hlaviček SOAP ve zprávě.

Vlastnost Properties představuje sadu poznámek na úrovni zpracování zprávy. Vzhledem k tomu, že informace v hlavičce se přenášejí v přenosu, musí entita, která kontroluje hlavičku, podporovat podkladové verze protokolů používaných hlavičkou. Vlastnosti však poskytují více nezávislý způsob, jak anotovat zprávu.

K vytvoření Message instance použijte jednu z CreateMessage metod .

Doporučuje se, aby příjemce zprávy vždy volal Close , když uživatel dokončí přístup k obsahu zprávy. Tato akce uvolní konečné systémové prostředky (například sokety nebo pojmenované kanály), které jsou vázané na dobu života zprávy.

Zvláštní poznámka pro uživatele spravovaného jazyka C++, kteří jsou odvozeni z této třídy:

  • Vložte kód pro vyčištění do (On)(Begin)Close (nebo OnAbort), ne do destruktoru.

  • Vyhněte se destruktorům: způsobí, že kompilátor automaticky vygeneruje IDisposable.

  • Vyhněte se neodkazovaným členům: mohou způsobit automatické vygenerování IDisposablekompilátoru .

  • Vyhněte se finalizačním metodám; Ale pokud jeden zahrnete, potlačit upozornění sestavení a volání SuppressFinalize(Object) a finalizační metodu z (On)(Begin)Close (nebo OnAbort), aby se emuloval, co by bylo automaticky generované IDisposable chování.

Poznámky pro implementátory

Pokud dědíte z Message, musíte přepsat následující členy: Headersa Version.

Konstruktory

Message()

Inicializuje novou instanci Message třídy .

Vlastnosti

Headers

Při přepsání v odvozené třídě získá hlavičky zprávy.

IsDisposed

Vrátí hodnotu, která označuje, zda Message je odstraněna.

IsEmpty

Vrátí hodnotu, která označuje, jestli Message je prázdný.

IsFault

Získá hodnotu, která označuje, zda tato zpráva generuje chyby SOAP.

Properties

Při přepsání v odvozené třídě získá sadu anotací na úrovni zpracování zprávy.

State

Získá aktuální stav tohoto Messageobjektu .

Version

Při přepsání v odvozené třídě získá soap verze zprávy.

Metody

BeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object)

Spustí asynchronní zápis obsahu textu zprávy.

BeginWriteMessage(XmlDictionaryWriter, AsyncCallback, Object)

Spustí asynchronní psaní celé zprávy.

Close()

Message Zavře a uvolní všechny prostředky.

CreateBufferedCopy(Int32)

Ukládá celek Message do vyrovnávací paměti pro budoucí přístup.

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

Vytvoří zprávu, která obsahuje chybu SOAP, důvod a podrobnosti chyby, verzi a akci.

CreateMessage(MessageVersion, FaultCode, String, String)

Vytvoří zprávu, která obsahuje chybu SOAP, důvod chyby, verzi a akci.

CreateMessage(MessageVersion, MessageFault, String)

Vytvoří zprávu, která obsahuje chybu SOAP, verzi a akci.

CreateMessage(MessageVersion, String)

Vytvoří zprávu, která obsahuje verzi a akci.

CreateMessage(MessageVersion, String, BodyWriter)

Vytvoří zprávu s textem, který se skládá z pole bajtů.

CreateMessage(MessageVersion, String, Object)

Vytvoří zprávu se zadanou verzí, akcí a textem.

CreateMessage(MessageVersion, String, Object, XmlObjectSerializer)

Vytvoří zprávu pomocí zadané verze, akce, textu zprávy a serializátoru.

CreateMessage(MessageVersion, String, XmlDictionaryReader)

Vytvoří zprávu se zadanou verzí, akcí a textem.

CreateMessage(MessageVersion, String, XmlReader)

Vytvoří zprávu pomocí zadaného čtenáře, akce a verze.

CreateMessage(XmlDictionaryReader, Int32, MessageVersion)

Vytvoří zprávu pomocí zadaného čtenáře, akce a verze.

CreateMessage(XmlReader, Int32, MessageVersion)

Vytvoří zprávu pomocí zadaného čtenáře, akce a verze.

EndWriteBodyContents(IAsyncResult)

Ukončí asynchronní zápis obsahu textu zprávy.

EndWriteMessage(IAsyncResult)

Ukončí asynchronní psaní celé zprávy.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetBody<T>()

Načte tělo této Message instance.

GetBody<T>(XmlObjectSerializer)

Načte tělo tohoto Message pomocí zadaného serializátoru.

GetBodyAttribute(String, String)

Načte atributy textu zprávy.

GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetReaderAtBodyContents()

Získá čtečku slovníku XML, která přistupuje k obsahu textu této zprávy.

GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
OnBeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object)

Vyvolá událost, když zpráva začne psát obsah textu zprávy.

OnBeginWriteMessage(XmlDictionaryWriter, AsyncCallback, Object)

Vyvolá událost, kdy se spustí psaní celých zpráv.

OnBodyToString(XmlDictionaryWriter)

Volá se při převodu textu zprávy na řetězec.

OnClose()

Volá se při zavírání zprávy.

OnCreateBufferedCopy(Int32)

Volá se při vytvoření vyrovnávací paměti pro uložení této zprávy.

OnEndWriteBodyContents(IAsyncResult)

Vyvolá událost při psaní obsahu textu zprávy.

OnEndWriteMessage(IAsyncResult)

Vyvolá událost, když skončí psaní celé zprávy.

OnGetBody<T>(XmlDictionaryReader)

Volá se při načtení textu zprávy.

OnGetBodyAttribute(String, String)

Volána při načtení atributů textu zprávy.

OnGetReaderAtBodyContents()

Volána při načtení čtečky slovníku XML, která přistupuje k obsahu této zprávy.

OnWriteBodyContents(XmlDictionaryWriter)

Volána při zápisu textu zprávy do souboru XML.

OnWriteMessage(XmlDictionaryWriter)

Volá se, když je celá zpráva zapsána do souboru XML.

OnWriteStartBody(XmlDictionaryWriter)

Volá se při zápisu počátečního textu do souboru XML.

OnWriteStartEnvelope(XmlDictionaryWriter)

Volá se při zápisu počáteční obálky do souboru XML.

OnWriteStartHeaders(XmlDictionaryWriter)

Volá se při zápisu počáteční hlavičky do souboru XML.

ToString()

Vrátí řetězec, který představuje aktuální Message instanci.

WriteBody(XmlDictionaryWriter)

Zapíše element body pomocí zadaného XmlDictionaryWriterobjektu .

WriteBody(XmlWriter)

Serializuje text zprávy pomocí zadaného XmlWriter.

WriteBodyContents(XmlDictionaryWriter)

Serializuje obsah těla pomocí zadaného XmlDictionaryWriter.

WriteMessage(XmlDictionaryWriter)

Serializuje celou zprávu pomocí zadaného XmlDictionaryWriter.

WriteMessage(XmlWriter)

Serializuje celou zprávu pomocí zadaného XmlWriter.

WriteStartBody(XmlDictionaryWriter)

Serializuje počáteční text zprávy pomocí zadaného XmlDictionaryWriter.

WriteStartBody(XmlWriter)

Serializuje počáteční text zprávy pomocí zadaného XmlDictionaryWriter.

WriteStartEnvelope(XmlDictionaryWriter)

Serializuje počáteční obálku pomocí zadaného XmlDictionaryWriter.

Explicitní implementace rozhraní

IDisposable.Dispose()

Zavře všechny prostředky používané touto zprávou. Tuto metodu nelze dědit.

Metody rozšíření

ToHttpRequestMessage(Message)

Vytvoří HttpRequestMessage instanci z Message instance.

ToHttpResponseMessage(Message)

Vytvoří HttpResponseMessage instanci z Message instance.

Platí pro