Esporta (0) Stampa
Espandi tutto

Classe DuplexChannelFactory<TChannel>

Aggiornamento: novembre 2007

Fornisce i mezzi per creare e gestire canali duplex di diversi tipi utilizzati dai client per scambiare messaggi con gli endpoint di servizio.

Spazio dei nomi:  System.ServiceModel
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

public class DuplexChannelFactory<TChannel> : ChannelFactory<TChannel>

J# supporta l'utilizzo di API generiche ma non la dichiarazione di nuove.
JScript non supporta i tipi o i metodi generici.

Parametri di tipo

TChannel

Tipo di canale prodotto dalla channel factory.

I canali duplex consentono ai client e ai server di comunicare fra loro indipendentemente in modo che uno sia in grado di effettuare chiamate all'altro. Un servizio duplex può inviare messaggi all'endpoint client, fornendo un comportamento simile a quello degli eventi. Una comunicazione duplex ha luogo quando un client stabilisce una sessione con un servizio e fornisce a quest'ultimo un canale utilizzabile per inviare messaggi al client. Per creare questi canali duplex vengono utilizzati i vari metodi CreateChannel. Il modello di messaggi duplex è uno di tre modelli di messaggi disponibili per i servizi del sistema Windows Communication Foundation (WCF). Gli altri due modelli sono il modello unidirezionale e il modello request/reply.

Per una discussione generale sui servizi duplex che consentono ai client di connettersi nuovamente al servizio, vedere Servizi duplex. Per una descrizione e una discussione sui passaggi relativi alla scrittura di un'applicazione client Windows Communication Foundation (WCF) mediante una channel factory, vedere Procedura: Utilizzo di ChannelFactory. Per una procedura che descrive come creare un client Windows Communication Foundation (WCF) in una classe client che implementa l'interfaccia di callback per accedere a un servizio che utilizza un modello di messaggistica duplex, vedere Procedura: Accesso ai servizi con un contratto duplex.

Nell'esempio seguente viene illustrato come creare una channel factory e come utilizzarla per creare e gestire canali.

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


Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Windows Vista, Windows XP SP2, Windows Server 2003

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft