Vorgehensweise: Erstellen einer Kanalfactory, mit der ein Kanal erstellt und verwaltet werden kannHow to: Create a Channel Factory and Use it to Create and Manage Channels

Die DuplexChannelFactory<TChannel>-Klasse ermöglicht das Erstellen und Verwalten von Duplexkanälen verschiedener Typen, die von Clients zum Senden und Empfangen von Nachrichten an bzw. von Dienstendpunkten verwendet werden.The DuplexChannelFactory<TChannel> class provides the means to create and manage duplex channels of different types that clients use to send and receive messages to and from service endpoints.

BeispielExample

Der folgende Code zeigt, wie eine Kanalfactory erstellt und zum Erstellen und Verwalten von Kanälen verwendet wird.The following code shows how to create a channel factory and use it to create and manage channels.

  // 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("{0} is ready", member);
		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);
	}
}

Siehe auchSee Also

DuplexChannelFactory<TChannel>