Message Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Representerar kommunikationsenheten mellan slutpunkter i en distribuerad miljö.
public ref class Message abstract : IDisposable
public abstract class Message : IDisposable
type Message = class
interface IDisposable
Public MustInherit Class Message
Implements IDisposable
- Arv
-
Message
- Implementeringar
Exempel
I följande kodexempel visas en klient som använder kanalfabriken för att skicka ett meddelande och läsa svaret.
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
Kommentarer
Klassen Message tillhandahåller ett sätt att kommunicera godtycklig information mellan en avsändare och en mottagare i ett nätverk. Den kan användas för att vidarebefordra information, föreslå eller kräva en åtgärd eller begära data.
Strukturen för ett Message objekt representerar ett SOAP-kuvert. Den består av två distinkta delar: meddelandets brödtext och en valfri samling rubriker som representeras av Headers klassen. Meddelandeinnehållet är programdefinierade data som skickas från en avsändare till en mottagare. Meddelandehuvudena aktiverar system- och programextensibilitet för att uppfylla de ändrade kraven, eftersom du kan definiera kod för att manipulera och svara på specifika rubriker. Du kan också definiera dina egna rubriker. Meddelandehuvuden serialiseras eller deserialiseras tillsammans med innehållet i meddelandet.
Meddelanden tas emot och skickas i vissa format. Stöd ges för två format: standardtextbaserat XML-format och ett binärbaserat XML-format. Objektet Message kan användas för att representera både SOAP 1.1- och SOAP 1.2-kuvert. Observera att en instans av Message korrigeras när den skapas och är bunden till en specifik SOAP-version. Egenskapen Version representerar SOAP-versionen av meddelandet.
Ett Message objekt kan serialiseras till ett externt arkiv med hjälp WriteMessage av metoden . Egenskaperna för meddelandet kan också serialiseras, men de måste identifieras individuellt och serialiseras separat. Att deserialisera ett meddelande för att skapa ett minnesinternt Message objekt kan göras med hjälp av CreateMessage. Egenskaper måste också deserialiseras individuellt och läggas till manuellt i egenskapssamlingen för den specifika Message instansen.
Storleken på ett Message objekt är fast i storleken på data som överförs. Varje brödtext modelleras som en instans av XmlReader, utan någon fördefinierad gräns för storleken på strömmen som instansen XmlReader omsluter. Specifika kanalprovidrar kan dock ha en gräns för storleken på meddelanden som de bearbetar.
En Message kan kommenteras med användbar information som genereras av en entitet som har granskat och bearbetat meddelandet. Den här funktionen tillhandahålls av Headers egenskaperna och Properties . Samlingen Headers representerar uppsättningen SOAP-huvuden i meddelandet.
Egenskapen Properties representerar uppsättningen anteckningar på bearbetningsnivå i meddelandet. Eftersom information i huvuden överförs på tråden måste en entitet som undersöker ett huvud ha stöd för de underliggande versionerna av de protokoll som används av huvudet. Egenskaper ger dock ett mer versionsoberoende sätt att kommentera ett meddelande.
Om du vill skapa en Message instans använder du någon av CreateMessage metoderna.
Vi rekommenderar att en konsument av ett meddelande alltid anropar Close när konsumenten har åtkomst till innehållet i meddelandet. Den här åtgärden frigör begränsade systemresurser (till exempel sockets, namngivna pipes) som är knutna till meddelandets livslängd.
Särskild anmärkning för hanterade C++-användare som härleds från den här klassen:
- Placera din rensningskod i (På)(Begin)Close (och/eller OnAbort), inte i en destruktor.
- Undvik destructors: de gör att kompilatorn automatiskt genererar IDisposable.
- Undvik icke-referensmedlemmar: de kan göra så att kompilatorn automatiskt genererar IDisposable.
- Undvik finalizers; men om du inkluderar en, utelämnar du byggvarningen och anropet SuppressFinalize(Object) och själva slutföraren från (På)(Begin)Close (och/eller OnAbort) för att emulera vad som skulle ha varit det automatiskt genererade beteendet IDisposable .
Anteckningar till implementerare
När du ärver från Messagemåste du åsidosätta följande medlemmar: Headers, och Version.
Konstruktorer
| Name | Description |
|---|---|
| Message() |
Initierar en ny instans av Message klassen. |
Egenskaper
| Name | Description |
|---|---|
| Headers |
När det åsidosättas i en härledd klass hämtar du rubrikerna i meddelandet. |
| IsDisposed |
Returnerar ett värde som anger om tas Message bort. |
| IsEmpty |
Returnerar ett värde som anger om är Message tomt. |
| IsFault |
Hämtar ett värde som anger om det här meddelandet genererar några SOAP-fel. |
| Properties |
När det åsidosättas i en härledd klass hämtar du en uppsättning anteckningar på bearbetningsnivå till meddelandet. |
| State |
Hämtar det aktuella tillståndet för detta Message. |
| Version |
När du åsidosättas i en härledd klass hämtar du SOAP-versionen av meddelandet. |
Metoder
| Name | Description |
|---|---|
| BeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object) |
Startar asynkron skrivning av innehållet i meddelandetexten. |
| BeginWriteMessage(XmlDictionaryWriter, AsyncCallback, Object) |
Startar asynkron skrivning av hela meddelandet. |
| Close() |
Message Stänger och släpper alla resurser. |
| CreateBufferedCopy(Int32) |
Lagrar en hel Message i en minnesbuffert för framtida åtkomst. |
| CreateMessage(MessageVersion, FaultCode, String, Object, String) |
Skapar ett meddelande som innehåller ett SOAP-fel, en orsak och information om felet, en version och en åtgärd. |
| CreateMessage(MessageVersion, FaultCode, String, String) |
Skapar ett meddelande som innehåller ett SOAP-fel, orsaken till felet, en version och en åtgärd. |
| CreateMessage(MessageVersion, MessageFault, String) |
Skapar ett meddelande som innehåller ett SOAP-fel, en version och en åtgärd. |
| CreateMessage(MessageVersion, String, BodyWriter) |
Skapar ett meddelande med en brödtext som består av en matris med byte. |
| CreateMessage(MessageVersion, String, Object, XmlObjectSerializer) |
Skapar ett meddelande med den angivna versionen, åtgärden, meddelandetexten och serialiseraren. |
| CreateMessage(MessageVersion, String, Object) |
Skapar ett meddelande med den angivna versionen, åtgärden och brödtexten. |
| CreateMessage(MessageVersion, String, XmlDictionaryReader) |
Skapar ett meddelande med den angivna versionen, åtgärden och brödtexten. |
| CreateMessage(MessageVersion, String, XmlReader) |
Skapar ett meddelande med den angivna läsaren, åtgärden och versionen. |
| CreateMessage(MessageVersion, String) |
Skapar ett meddelande som innehåller en version och en åtgärd. |
| CreateMessage(XmlDictionaryReader, Int32, MessageVersion) |
Skapar ett meddelande med den angivna läsaren, åtgärden och versionen. |
| CreateMessage(XmlReader, Int32, MessageVersion) |
Skapar ett meddelande med den angivna läsaren, åtgärden och versionen. |
| EndWriteBodyContents(IAsyncResult) |
Avslutar asynkron skrivning av innehållet i meddelandetexten. |
| EndWriteMessage(IAsyncResult) |
Avslutar asynkron skrivning av hela meddelandet. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetBody<T>() |
Hämtar brödtexten för den här Message instansen. |
| GetBody<T>(XmlObjectSerializer) |
Hämtar brödtexten i detta Message med den angivna serialiseraren. |
| GetBodyAttribute(String, String) |
Hämtar attributen för meddelandetexten. |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetReaderAtBodyContents() |
Hämtar XML-ordlisteläsaren som kommer åt brödtextinnehållet i det här meddelandet. |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| OnBeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object) |
Skapar en händelse när meddelandet börjar skriva innehållet i meddelandetexten. |
| OnBeginWriteMessage(XmlDictionaryWriter, AsyncCallback, Object) |
Genererar en händelse när hela meddelanden skrivs. |
| OnBodyToString(XmlDictionaryWriter) |
Anropas när meddelandetexten konverteras till en sträng. |
| OnClose() |
Anropas när meddelandet stängs. |
| OnCreateBufferedCopy(Int32) |
Anropas när en meddelandebuffert skapas för att lagra det här meddelandet. |
| OnEndWriteBodyContents(IAsyncResult) |
Skapar en händelse när skrivning av innehållet i meddelandetexten slutar. |
| OnEndWriteMessage(IAsyncResult) |
Genererar en händelse när hela meddelandet skrivs. |
| OnGetBody<T>(XmlDictionaryReader) |
Anropas när meddelandets brödtext hämtas. |
| OnGetBodyAttribute(String, String) |
Anropas när attributen i meddelandetexten hämtas. |
| OnGetReaderAtBodyContents() |
Anropas när en XML-ordlisteläsare som kommer åt brödtextinnehållet i det här meddelandet hämtas. |
| OnWriteBodyContents(XmlDictionaryWriter) |
Anropas när meddelandetexten skrivs till en XML-fil. |
| OnWriteMessage(XmlDictionaryWriter) |
Anropas när hela meddelandet skrivs till en XML-fil. |
| OnWriteStartBody(XmlDictionaryWriter) |
Anropas när starttexten skrivs till en XML-fil. |
| OnWriteStartEnvelope(XmlDictionaryWriter) |
Anropas när startkuvertet skrivs till en XML-fil. |
| OnWriteStartHeaders(XmlDictionaryWriter) |
Anropas när starthuvudet skrivs till en XML-fil. |
| ToString() |
Returnerar en sträng som representerar den aktuella Message instansen. |
| WriteBody(XmlDictionaryWriter) |
Skriver brödtextelementet med den angivna XmlDictionaryWriter. |
| WriteBody(XmlWriter) |
Serialiserar meddelandetexten med den angivna XmlWriter. |
| WriteBodyContents(XmlDictionaryWriter) |
Serialiserar brödtextinnehållet med den angivna XmlDictionaryWriter. |
| WriteMessage(XmlDictionaryWriter) |
Serialiserar hela meddelandet med den angivna XmlDictionaryWriter. |
| WriteMessage(XmlWriter) |
Serialiserar hela meddelandet med den angivna XmlWriter. |
| WriteStartBody(XmlDictionaryWriter) |
Serialiserar meddelandets starttext med den angivna XmlDictionaryWriter. |
| WriteStartBody(XmlWriter) |
Serialiserar meddelandets starttext med den angivna XmlDictionaryWriter. |
| WriteStartEnvelope(XmlDictionaryWriter) |
Serialiserar startkuvertet med den angivna XmlDictionaryWriter. |
Explicita gränssnittsimplementeringar
| Name | Description |
|---|---|
| IDisposable.Dispose() |
Stänger alla resurser som används av det här meddelandet. Den här metoden kan inte ärvas. |
Tilläggsmetoder
| Name | Description |
|---|---|
| ToHttpRequestMessage(Message) |
Skapar en HttpRequestMessage instans från en Message instans. |
| ToHttpResponseMessage(Message) |
Skapar en HttpResponseMessage instans från en Message instans. |