Message 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
분산 환경에서 엔드포인트 간의 통신 단위를 나타냅니다.
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 봉투를 모두 나타낼 수 있습니다. 의 instance Message 생성 시 수정되며 특정 SOAP 버전에 바인딩됩니다. 속성은 Version 메시지의 SOAP 버전을 나타냅니다.
개체는 Message 메서드를 사용하여 WriteMessage 외부 저장소로 직렬화할 수 있습니다. 메시지의 속성도 직렬화할 수 있지만 개별적으로 식별하고 별도로 직렬화해야 합니다. 를 사용하여 CreateMessage메모리 Message 내 개체를 만들기 위해 메시지를 역직렬화할 수 있습니다. 또한 속성을 개별적으로 역직렬화하고 특정 Message instance 대한 속성 컬렉션에 수동으로 추가해야 합니다.
개체의 Message 크기는 전송하는 데이터의 크기로 고정됩니다. 모든 본문은 instance 래핑하는 스트림 XmlReader 의 크기에 대해 미리 정의된 제한 없이 의 XmlReaderinstance 모델링됩니다. 그러나 특정 채널 공급자는 처리하는 메시지의 크기에 제한이 있을 수 있습니다.
Message 메시지를 검사하고 처리한 엔터티에서 생성된 유용한 정보로 주석을 추가할 수 있습니다. 이 기능은 및 Properties 속성에서 Headers 제공됩니다. 컬렉션은 Headers 메시지의 SOAP 헤더 집합을 나타냅니다.
속성은 Properties 메시지의 처리 수준 주석 집합을 나타냅니다. 헤더의 정보는 유선으로 전송되므로 헤더를 검사하는 엔터티는 헤더에서 사용하는 프로토콜의 기본 버전을 지원해야 합니다. 그러나 속성은 메시지에 주석을 추가하기 위한 버전 독립적 방법을 제공합니다.
instance 만들 Message 려면 메서드 중 CreateMessage 하나를 사용합니다.
소비자가 메시지 내용에 대한 액세스를 완료하면 메시지 소비자가 항상 를 호출 Close 하는 것이 좋습니다. 이 작업은 메시지의 수명에 연결된 유한 시스템 리소스(예: 소켓, 명명된 파이프)를 해제합니다.
이 클래스에서 파생된 Managed C++ 사용자 관련 참고 사항:
소멸자가 아니라 (On)(Begin)Close 및/또는 OnAbort에 정리 코드를 입력하십시오.
소멸자 방지: 컴파일러에서 를 자동으로 생성 IDisposable합니다.
참조가 아닌 멤버를 사용하지 않도록 합니다. 컴파일러에서 를 자동으로 생성 IDisposable할 수 있습니다.
종료자 방지; 그러나 하나를 포함하는 경우 빌드 경고를 표시하지 않고 (켜기)(시작)닫기(및/또는 OnAbort)에서 종료자 자체를 호출 SuppressFinalize(Object) 하여 자동 생성된 IDisposable 동작을 에뮬레이트합니다.
구현자 참고
에서 Message상속하는 경우 , 및 Version멤버Headers를 재정의해야 합니다.
생성자
Message() |
Message 클래스의 새 인스턴스를 초기화합니다. |
속성
Headers |
파생 클래스에서 재정의되는 경우 메시지의 헤더를 가져옵니다. |
IsDisposed |
Message가 삭제되는지 여부를 나타내는 값을 반환합니다. |
IsEmpty |
Message가 비어 있는지 여부를 나타내는 값을 반환합니다. |
IsFault |
이 메시지가 SOAP 오류를 생성하는지 여부를 나타내는 값을 가져옵니다. |
Properties |
파생 클래스에서 재정의되는 경우 메시지에 대한 처리 수준 주석 집합을 가져옵니다. |
State |
이 Message의 현재 상태를 가져옵니다. |
Version |
파생 클래스에서 재정의되는 경우 메시지의 SOAP 버전을 가져옵니다. |
메서드
명시적 인터페이스 구현
IDisposable.Dispose() |
이 메시지에서 사용한 모든 리소스를 닫습니다. 이 메서드는 상속될 수 없습니다. |
확장 메서드
ToHttpRequestMessage(Message) |
HttpRequestMessage 인스턴스에서 Message 인스턴스를 만듭니다. |
ToHttpResponseMessage(Message) |
HttpResponseMessage 인스턴스에서 Message 인스턴스를 만듭니다. |
적용 대상
.NET