MailTransportBindingElementBase 클래스
업데이트: 2007년 11월
MailTransportBindingElementBase 클래스의 핵심 동작을 정의하고 메일 전송 바인딩 요소 파생을 위한 기본 클래스를 제공합니다.
네임스페이스: Microsoft.ServiceModel.Channels.Mail
어셈블리: Microsoft.ServiceModel.Channels.Mail(Microsoft.ServiceModel.Channels.Mail.dll)
구문
‘선언
Public MustInherit Class MailTransportBindingElementBase _
Inherits TransportBindingElement
‘사용 방법
Dim instance As MailTransportBindingElementBase
public abstract class MailTransportBindingElementBase : TransportBindingElement
public ref class MailTransportBindingElementBase abstract : public TransportBindingElement
public abstract class MailTransportBindingElementBase extends TransportBindingElement
설명
이 클래스는 WCF(Windows Communication Foundation)에서 제공하는 모든 메일 전송 바인딩 요소에 공통되는 속성을 모아 놓은 것입니다. 이 클래스는 기본 메일 전송 설정을 런타임 구현으로 변환합니다. 또한 메일 전송 관련 세부 구현을 다음과 같은 구체적인 메일 전송 바인딩 서브클래스에 위임합니다.
MailTransportBindingElementBase 클래스를 사용하여 채널 팩터리 및 채널 수신기를 만들 수 있습니다. 이 클래스를 사용하여 메일 바인딩을 위한 채널 수신기를 만들 때는 인수 중 하나로 Uri를 받는 BuildChannelListener 메서드의 오버로드를 사용해야 합니다. BuildChannelListener를 호출할 때 Uri를 전달하지 않으면 ArgumentException이 throw됩니다.
바인딩 요소 집합을 사용하여 CustomBinding 개체를 만들 수 있습니다. 이 시나리오에서는 CustomBinding 개체를 사용하여 BuildChannelFactory 및 BuildChannelListener 메서드를 호출합니다.
참고
이 클래스는 .NET Compact Framework 버전 3.5에 포함되어 있지만, 이를 사용하려면 런타임에 .NET Compact Framework 3.5 또는 .NET Framework 버전 3.0이 필요합니다.
예제
다음 예제에서는 MailTransportBindingElementBase 클래스를 사용하는 방법을 보여 줍니다. 여기에서는 WindowsMobileMailTransportBindingElement 및 사용자 지정 인코딩 요소를 사용하여 CustomBinding을 만듭니다.
사용자 지정 serializer는 WCF Exchange Server 메일 전송의 고유한 요소가 아니므로 이 예제에 포함되지 않았습니다.
Class Program
Private Shared ChannelName As String = "Channel1"
Private Shared DestinationEmailAddress As String = "someone@example.com"
Private Shared serializer As New CFMessagingSerializer(GetType(String))
Shared Sub Main(ByVal args() As String)
Dim factory As IChannelFactory(Of IOutputChannel)
Dim listener As IChannelListener(Of IInputChannel)
Dim output As IOutputChannel
Dim input As IInputChannel
Dim bpc As BindingParameterCollection
Dim mailTransportBindingElement As MailTransportBindingElementBase
Dim msgEncodingBindingElement As MessageEncodingBindingElement
Dim message As Message
Dim str As String
Dim binding As System.ServiceModel.Channels.Binding
' Instantiate a TextMessageEncodingBindingElement or
' a custom encoding binding element. If you use a custom encoding
' binding element, messages must be sent as attachments.
msgEncodingBindingElement = New CustomMessageEncodingBindingElement()
mailTransportBindingElement = New WindowsMobileMailTransportBindingElement()
mailTransportBindingElement.MessageContainerType = MessageContainerType.Attachment
' In this example, set lifetime to 1 day, 10 hours,
' 20 minutes, and 30 seconds.
mailTransportBindingElement.TimeToLive = New TimeSpan(1, 10, 20, 30)
mailTransportBindingElement.Transport.MaxTotalMessageCacheSize = 1000
binding = New CustomBinding(msgEncodingBindingElement, mailTransportBindingElement)
bpc = New BindingParameterCollection()
factory = binding.BuildChannelFactory(Of IOutputChannel)(bpc)
listener = binding.BuildChannelListener(Of IInputChannel)(MailUriHelper.CreateUri(ChannelName, ""))
factory.Open()
output = factory.CreateChannel(New EndpointAddress(MailUriHelper.Create(ChannelName, DestinationEmailAddress)))
output.Open()
message = System.ServiceModel.Channels.Message.CreateMessage(MessageVersion.Default, "urn:Test", "Hello, World!", serializer)
output.Send(message)
output.Close()
factory.Close()
listener.Open()
input = listener.AcceptChannel()
input.Open()
message = input.Receive()
str = message.GetBody(Of String)(serializer)
MessageBox.Show(str, "Received message")
input.Close()
listener.Close()
mailTransportBindingElement.Close()
End Sub
End Class
class Program
{
private static string ChannelName = "Channel1";
private static string DestinationEmailAddress = "someone@example.com";
private static CFMessagingSerializer serializer = new CFMessagingSerializer(typeof(string));
static void Main(string[] args)
{
IChannelFactory<IOutputChannel> factory;
IChannelListener<IInputChannel> listener;
IOutputChannel output;
IInputChannel input;
BindingParameterCollection bpc;
MailTransportBindingElementBase mailTransportBindingElement;
MessageEncodingBindingElement msgEncodingBindingElement;
Message message;
string str;
System.ServiceModel.Channels.Binding binding;
// Instantiate a TextMessageEncodingBindingElement or
// a custom encoding binding element. If you use a custom encoding
// binding element, messages must be sent as attachments.
msgEncodingBindingElement = new CustomMessageEncodingBindingElement();
mailTransportBindingElement = new WindowsMobileMailTransportBindingElement();
mailTransportBindingElement.MessageContainerType = MessageContainerType.Attachment;
// In this example, set lifetime to 1 day, 10 hours,
// 20 minutes, and 30 seconds.
mailTransportBindingElement.TimeToLive = new TimeSpan(1, 10, 20, 30);
mailTransportBindingElement.Transport.MaxTotalMessageCacheSize = 1000;
binding = new CustomBinding(msgEncodingBindingElement, mailTransportBindingElement);
bpc = new BindingParameterCollection();
factory = binding.BuildChannelFactory<IOutputChannel>(bpc);
listener = binding.BuildChannelListener<IInputChannel>(MailUriHelper.CreateUri(ChannelName, ""), bpc);
factory.Open();
output = factory.CreateChannel(new EndpointAddress(MailUriHelper.Create(ChannelName, DestinationEmailAddress)));
output.Open();
message = Message.CreateMessage(MessageVersion.Default, "urn:Test", "Hello, World!", serializer);
output.Send(message);
output.Close();
factory.Close();
listener.Open();
input = listener.AcceptChannel();
input.Open();
message = input.Receive();
str = message.GetBody<string>(serializer);
MessageBox.Show(str, "Received message");
input.Close();
listener.Close();
mailTransportBindingElement.Close();
}
}
상속 계층 구조
System.Object
System.ServiceModel.Channels.BindingElement
System.ServiceModel.Channels.TransportBindingElement
Microsoft.ServiceModel.Channels.Mail.MailTransportBindingElementBase
Microsoft.ServiceModel.Channels.Mail.WindowsMobile.WindowsMobileMailTransportBindingElement
스레드로부터의 안전성
이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.
플랫폼
Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC
.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.
버전 정보
.NET Compact Framework
3.5에서 지원