Message 클래스

정의

분산 환경에서 엔드포인트 간의 통신 단위를 나타냅니다.

public ref class Message abstract : IDisposable
public abstract class Message : IDisposable
type Message = class
    interface IDisposable
Public MustInherit Class Message
Implements IDisposable
상속
Message
구현

예제

다음 코드 예제에서는 채널 팩터리를 사용하여 메시지를 보내고 회신을 읽는 클라이언트를 보여 줍니다.

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

설명

이 클래스는 Message 네트워크의 발신자와 수신자 간에 임의 정보를 전달하는 수단을 제공합니다. 정보를 릴레이하거나, 작업 과정을 제안하거나 요구하거나, 데이터를 요청하는 데 사용할 수 있습니다.

개체의 Message 구조는 SOAP 봉투를 나타냅니다. 메시지 본문과 클래스가 나타내는 선택적 헤더 컬렉션의 두 가지 부분으로 구성됩니다 Headers . 메시지 콘텐츠는 발신자가 수신자에게 보낸 애플리케이션 정의 데이터입니다. 특정 헤더를 조작하고 헤더에 응답하도록 코드를 정의할 수 있기 때문에 메시지 헤더를 사용하여 시스템 및 애플리케이션을 변경 요구 사항에 맞게 확장할 수 있습니다. 사용자 고유의 헤더를 정의할 수도 있습니다. 메시지 헤더는 메시지 내용과 함께 직렬화되거나 역직렬화됩니다.

메시지는 특정 형식으로 수신 및 전송됩니다. 표준 텍스트 기반 XML 형식과 이진 기반 XML 형식의 두 가지 형식에 대한 지원이 제공됩니다. 개체를 Message 사용하여 SOAP 1.1 및 SOAP 1.2 봉투를 모두 나타낼 수 있습니다. 인스턴스 Message 는 생성 시 수정되며 특정 SOAP 버전에 바인딩됩니다. 속성은 Version 메시지의 SOAP 버전을 나타냅니다.

메서드를 Message 사용하여 WriteMessage 개체를 외부 저장소로 serialize할 수 있습니다. 메시지의 속성을 직렬화할 수도 있지만 개별적으로 식별 및 직렬화해야 합니다. 메모리 Message 내 개체 CreateMessage를 만들기 위해 메시지를 역직렬화하려면 . 또한 속성을 개별적으로 역직렬화하고 특정 Message 인스턴스의 속성 컬렉션에 수동으로 추가해야 합니다.

개체의 Message 크기는 전송 중인 데이터의 크기로 고정됩니다. 모든 본문은 인스턴스가 XmlReader래핑하는 스트림 XmlReader 의 크기에 미리 정의된 제한 없이 인스턴스로 모델링됩니다. 그러나 특정 채널 공급자는 처리하는 메시지의 크기에 제한이 있을 수 있습니다.

메시지를 Message 검사하고 처리한 엔터티에서 생성된 유용한 정보로 주석을 추가할 수 있습니다. 이 기능은 및 Properties 속성에서 Headers 제공됩니다. 컬렉션은 Headers 메시지의 SOAP 헤더 집합을 나타냅니다.

이 속성은 Properties 메시지의 처리 수준 주석 집합을 나타냅니다. 헤더의 정보는 유선으로 전송되므로 헤더를 검사하는 엔터티는 헤더에서 사용하는 프로토콜의 기본 버전을 지원해야 합니다. 그러나 속성은 메시지에 주석을 추가하기 위한 버전 독립적 방법을 제공합니다.

인스턴스를 Message 만들려면 메서드 중 CreateMessage 하나를 사용합니다.

소비자가 메시지 내용에 대한 액세스가 완료되면 항상 메시지 소비자를 호출 Close 하는 것이 좋습니다. 이 작업은 메시지의 수명에 연결된 유한한 시스템 리소스(예: 소켓, 명명된 파이프)를 해제합니다.

이 클래스에서 파생된 Managed C++ 사용자 관련 참고 사항:

  • 소멸자가 아니라 (On)(Begin)Close 및/또는 OnAbort에 정리 코드를 입력하십시오.

  • 소멸자 방지: 컴파일러가 자동으로 생성 IDisposable됩니다.

  • 참조가 아닌 멤버를 사용하지 않도록 합니다. 컴파일러가 자동으로 생성 IDisposable될 수 있습니다.

  • 종료자 방지; 그러나 하나를 포함하는 경우 빌드 경고를 표시하지 않고(On)(Begin)Close(및/또는 OnAbort)에서 종료자 자체를 호출 SuppressFinalize(Object) 하여 자동 생성된 IDisposable 동작을 에뮬레이트합니다.

구현자 참고

상속할 Message때 다음 멤버HeadersVersion를 재정의해야 합니다.

생성자

Message()

Message 클래스의 새 인스턴스를 초기화합니다.

속성

Headers

파생 클래스에서 재정의되는 경우 메시지의 헤더를 가져옵니다.

IsDisposed

Message가 삭제되는지 여부를 나타내는 값을 반환합니다.

IsEmpty

Message가 비어 있는지 여부를 나타내는 값을 반환합니다.

IsFault

이 메시지가 SOAP 오류를 생성하는지 여부를 나타내는 값을 가져옵니다.

Properties

파생 클래스에서 재정의되는 경우 메시지에 대한 처리 수준 주석 집합을 가져옵니다.

State

Message의 현재 상태를 가져옵니다.

Version

파생 클래스에서 재정의되는 경우 메시지의 SOAP 버전을 가져옵니다.

메서드

BeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object)

메시지 본문 내용에 대한 비동기 쓰기를 시작합니다.

BeginWriteMessage(XmlDictionaryWriter, AsyncCallback, Object)

전체 메시지에 대한 비동기 쓰기를 시작합니다.

Close()

Message를 닫고 모든 리소스를 해제합니다.

CreateBufferedCopy(Int32)

나중에 액세스하기 위해 전체 Message를 메모리 버퍼에 저장합니다.

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

SOAP 오류, 오류 원인과 정보, 버전 및 동작을 포함하는 메시지를 만듭니다.

CreateMessage(MessageVersion, FaultCode, String, String)

SOAP 오류, 오류 원인, 버전 및 동작을 포함하는 메시지를 만듭니다.

CreateMessage(MessageVersion, MessageFault, String)

SOAP 오류, 버전 및 동작을 포함하는 메시지를 만듭니다.

CreateMessage(MessageVersion, String)

버전 및 동작을 포함하는 메시지를 만듭니다.

CreateMessage(MessageVersion, String, BodyWriter)

바이트 배열로 구성되는 본문을 가진 메시지를 만듭니다.

CreateMessage(MessageVersion, String, Object)

지정된 버전, 동작 및 본문을 사용하여 메시지를 만듭니다.

CreateMessage(MessageVersion, String, Object, XmlObjectSerializer)

지정된 버전, 동작, 메시지 본문 및 serializer를 사용하여 메시지를 만듭니다.

CreateMessage(MessageVersion, String, XmlDictionaryReader)

지정된 버전, 동작 및 본문을 사용하여 메시지를 만듭니다.

CreateMessage(MessageVersion, String, XmlReader)

지정된 판독기, 동작 및 버전을 사용하여 메시지를 만듭니다.

CreateMessage(XmlDictionaryReader, Int32, MessageVersion)

지정된 판독기, 동작 및 버전을 사용하여 메시지를 만듭니다.

CreateMessage(XmlReader, Int32, MessageVersion)

지정된 판독기, 동작 및 버전을 사용하여 메시지를 만듭니다.

EndWriteBodyContents(IAsyncResult)

메시지 본문 내용의 비동기 쓰기를 종료합니다.

EndWriteMessage(IAsyncResult)

전체 메시지의 비동기 쓰기를 종료합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
GetBody<T>()

Message 인스턴스의 본문을 검색합니다.

GetBody<T>(XmlObjectSerializer)

지정된 serializer를 사용하여 이 Message의 본문을 검색합니다.

GetBodyAttribute(String, String)

메시지 본문의 특성을 검색합니다.

GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetReaderAtBodyContents()

이 메시지의 본문 콘텐츠에 액세스하는 XML 사전 판독기를 가져옵니다.

GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
OnBeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object)

메시지에서 메시지 본문의 콘텐츠 작성을 시작할 때 이벤트를 발생시킵니다.

OnBeginWriteMessage(XmlDictionaryWriter, AsyncCallback, Object)

전체 메시지 쓰기를 시작하는 이벤트를 발생시킵니다.

OnBodyToString(XmlDictionaryWriter)

메시지 본문이 문자열로 변환될 때 호출됩니다.

OnClose()

메시지를 닫을 때 호출됩니다.

OnCreateBufferedCopy(Int32)

이 메시지를 저장할 메시지 버퍼를 만들 때 호출됩니다.

OnEndWriteBodyContents(IAsyncResult)

메시지 본문의 콘텐츠 작성을 종료할 때 이벤트를 발생시킵니다.

OnEndWriteMessage(IAsyncResult)

전체 메시지 작성을 종료할 때 이벤트를 발생시킵니다.

OnGetBody<T>(XmlDictionaryReader)

메시지 본문을 검색할 때 호출됩니다.

OnGetBodyAttribute(String, String)

메시지 본문의 특성을 검색할 때 호출됩니다.

OnGetReaderAtBodyContents()

이 메시지의 본문 콘텐츠에 액세스할 수 있는 XML 사전 판독기를 검색할 수 있을 때 호출됩니다.

OnWriteBodyContents(XmlDictionaryWriter)

메시지 본문을 XML 파일에 쓸 때 호출됩니다.

OnWriteMessage(XmlDictionaryWriter)

전체 메시지를 XML 파일에 쓸 때 호출됩니다.

OnWriteStartBody(XmlDictionaryWriter)

시작 본문을 XML 파일에 쓸 때 호출됩니다.

OnWriteStartEnvelope(XmlDictionaryWriter)

시작 봉투를 XML 파일에 쓸 때 호출됩니다.

OnWriteStartHeaders(XmlDictionaryWriter)

시작 헤더를 XML 파일에 쓸 때 호출됩니다.

ToString()

현재 Message 인스턴스를 나타내는 문자열을 반환합니다.

WriteBody(XmlDictionaryWriter)

지정된 XmlDictionaryWriter를 사용하여 본문 요소를 씁니다.

WriteBody(XmlWriter)

지정된 XmlWriter를 사용하여 메시지 본문을 serialize합니다.

WriteBodyContents(XmlDictionaryWriter)

지정된 XmlDictionaryWriter를 사용하여 본문 콘텐츠를 serialize합니다.

WriteMessage(XmlDictionaryWriter)

지정된 XmlDictionaryWriter를 사용하여 전체 메시지를 serialize합니다.

WriteMessage(XmlWriter)

지정된 XmlWriter를 사용하여 전체 메시지를 serialize합니다.

WriteStartBody(XmlDictionaryWriter)

지정된 XmlDictionaryWriter를 사용하여 메시지의 시작 본문을 serialize합니다.

WriteStartBody(XmlWriter)

지정된 XmlDictionaryWriter를 사용하여 메시지의 시작 본문을 serialize합니다.

WriteStartEnvelope(XmlDictionaryWriter)

지정된 XmlDictionaryWriter를 사용하여 시작 봉투를 serialize합니다.

명시적 인터페이스 구현

IDisposable.Dispose()

이 메시지에서 사용한 모든 리소스를 닫습니다. 이 메서드는 상속될 수 없습니다.

확장 메서드

ToHttpRequestMessage(Message)

HttpRequestMessage 인스턴스에서 Message 인스턴스를 만듭니다.

ToHttpResponseMessage(Message)

HttpResponseMessage 인스턴스에서 Message 인스턴스를 만듭니다.

적용 대상