Share via


MailTransportBindingElementBase, classe

Mise à jour : novembre 2007

Définit le comportement principal de la classe MailTransportBindingElementBase et fournit une base pour les dérivations des éléments de liaison de transport de messagerie.

Espace de noms :  Microsoft.ServiceModel.Channels.Mail
Assembly :  Microsoft.ServiceModel.Channels.Mail (dans Microsoft.ServiceModel.Channels.Mail.dll)

Syntaxe

'Déclaration
Public MustInherit Class MailTransportBindingElementBase _
    Inherits TransportBindingElement
'Utilisation
Dim instance As MailTransportBindingElementBase
public abstract class MailTransportBindingElementBase : TransportBindingElement
public ref class MailTransportBindingElementBase abstract : public TransportBindingElement
public abstract class MailTransportBindingElementBase extends TransportBindingElement

Notes

Cette classe élimine les propriétés communes à tous les éléments de liaison de transport de messagerie fournis par Windows Communication Foundation (WCF). Elle gère la traduction des paramètres de transport de messagerie de base en manifestations d'exécution. La classe délègue les détails de l'implémentation spécifique au transport de messagerie à ses sous-classes d'éléments de liaison de transport de messagerie concrètes, qui comprennent les classes suivantes :

Vous pouvez utiliser la classe MailTransportBindingElementBase pour créer des fabriques de canaux et des écouteurs de canaux. Lorsque vous avez recours à cette classe pour créer un écouteur de canal pour une liaison de messagerie, utilisez une surcharge de la méthode BuildChannelListener qui prend un Uri pour l'un de ses arguments. Si un Uri n'est pas passé dans l'appel à BuildChannelListener, un ArgumentException est levé.

Vous pouvez utiliser un ensemble d'éléments de liaison pour créer un objet CustomBinding. Dans ce scénario, utilisez l'objet CustomBinding pour appeler les méthodes BuildChannelFactory et BuildChannelListener.

Bb339109.alert_note(fr-fr,VS.90).gifRemarque :

Cette classe est incluse dans le .NET Compact Framework version 3.5, mais elle requiert par la suite le .NET Compact Framework 3.5 ou le .NET Framework version 3.0 au moment de l'exécution.

Exemples

L'exemple suivant montre comment utiliser la classe MailTransportBindingElementBase. Elle utilise un WindowsMobileMailTransportBindingElement et un élément de codage personnalisé pour créer le CustomBinding.

Le sérialiseur personnalisé n'est pas spécifique au transport de messagerie Exchange Server WCF et n'est pas inclus dans cet exemple.

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();
    }
}

Hiérarchie d'héritage

System.Object
  System.ServiceModel.Channels.BindingElement
    System.ServiceModel.Channels.TransportBindingElement
      Microsoft.ServiceModel.Channels.Mail.MailTransportBindingElementBase
        Microsoft.ServiceModel.Channels.Mail.WindowsMobile.WindowsMobileMailTransportBindingElement

Sécurité des threads

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Plateformes

Windows CE, Windows Mobile pour Smartphone, Windows Mobile pour Pocket PC

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Informations de version

.NET Compact Framework

Pris en charge dans : 3.5

Voir aussi

Référence

Membres MailTransportBindingElementBase

Microsoft.ServiceModel.Channels.Mail, espace de noms