Aracılığıyla paylaş


Nasıl yapılır: Kanal Fabrikası Oluşturma ve Kanal Oluşturmak ve Yönetmek için Bunu Kullanma

sınıfı, DuplexChannelFactory<TChannel> istemcilerin hizmet uç noktalarına ileti gönderip almak için kullandığı farklı türlerdeki çift yönlü kanalları oluşturma ve yönetme araçları sağlar.

Örnek

Aşağıdaki kodda kanal fabrikası oluşturma ve kanal oluşturmak ve yönetmek için bu fabrikayı kullanma işlemleri gösterilmektedir.

// Construct InstanceContext to handle messages on the callback interface.
// An instance of ChatApp is created and passed to the InstanceContext.
InstanceContext site = new InstanceContext(new ChatApp());

// Create the participant with the given endpoint configuration.
// Each participant opens a duplex channel to the mesh.
// Participant is an instance of the chat application that has opened a channel to the mesh.

using (DuplexChannelFactory<IChatChannel> cf =
    new DuplexChannelFactory<IChatChannel>(site, "ChatEndpoint"))
{
    X509Certificate2 issuer = GetCertificate(
        StoreName.CertificateAuthority,
        StoreLocation.CurrentUser, "CN=" + issuerName,
        X509FindType.FindBySubjectDistinguishedName);
    cf.Credentials.Peer.Certificate =
        GetCertificate(StoreName.My,
        StoreLocation.CurrentUser,
        "CN=" + member,
        X509FindType.FindBySubjectDistinguishedName);
    cf.Credentials.Peer.PeerAuthentication.CertificateValidationMode =
        X509CertificateValidationMode.Custom;
    cf.Credentials.Peer.PeerAuthentication.CustomCertificateValidator =
        new IssuerBasedValidator();

    using (IChatChannel participant = cf.CreateChannel())
    {
        // Retrieve the PeerNode associated with the participant and register for online/offline events.
        // PeerNode represents a node in the mesh. Mesh is the named collection of connected nodes.
        IOnlineStatus ostat = participant.GetProperty<IOnlineStatus>();
        ostat.Online += new EventHandler(OnOnline);
        ostat.Offline += new EventHandler(OnOffline);

        Console.WriteLine($"{member} is ready");
        Console.WriteLine("Press <ENTER> to send the chat message.");

        // Announce self to other participants.
        participant.Join(member);
        Console.ReadLine();
        participant.Chat(member, "Hi there - I am chatting");

        Console.WriteLine("Press <ENTER> to terminate this instance of chat.");
        Console.ReadLine();
        // Leave the mesh and close the client.
        participant.Leave(member);
    }
}

Ayrıca bkz.