ChannelFactory Classe

Definizione

Crea e gestisce i canali usati dai client per inviare messaggi agli endpoint di servizio.

public ref class ChannelFactory abstract : System::ServiceModel::Channels::CommunicationObject, IDisposable, System::ServiceModel::Channels::IChannelFactory
public ref class ChannelFactory abstract : System::ServiceModel::Channels::CommunicationObject, IAsyncDisposable, IDisposable, System::ServiceModel::Channels::IChannelFactory
public abstract class ChannelFactory : System.ServiceModel.Channels.CommunicationObject, IDisposable, System.ServiceModel.Channels.IChannelFactory
public abstract class ChannelFactory : System.ServiceModel.Channels.CommunicationObject, IAsyncDisposable, IDisposable, System.ServiceModel.Channels.IChannelFactory
type ChannelFactory = class
    inherit CommunicationObject
    interface IDisposable
    interface IChannelFactory
    interface ICommunicationObject
type ChannelFactory = class
    inherit CommunicationObject
    interface IDisposable
    interface IChannelFactory
    interface ICommunicationObject
    interface IAsyncDisposable
type ChannelFactory = class
    inherit CommunicationObject
    interface IChannelFactory
    interface ICommunicationObject
    interface IDisposable
Public MustInherit Class ChannelFactory
Inherits CommunicationObject
Implements IChannelFactory, IDisposable
Public MustInherit Class ChannelFactory
Inherits CommunicationObject
Implements IAsyncDisposable, IChannelFactory, IDisposable
Ereditarietà
ChannelFactory
Derivato
Implementazioni

Esempio

Nell'esempio di codice seguente viene illustrato come inserire un comportamento client a livello di codice prima della creazione dell'oggetto canale dalla factory.

public class Client
{
  public static void Main()
  {
    try
    {
      // Picks up configuration from the config file.
      ChannelFactory<ISampleServiceChannel> factory
        = new ChannelFactory<ISampleServiceChannel>("WSHttpBinding_ISampleService");

      // Add the client side behavior programmatically to all created channels.
      factory.Endpoint.Behaviors.Add(new EndpointBehaviorMessageInspector());

      ISampleServiceChannel wcfClientChannel = factory.CreateChannel();

      // Making calls.
      Console.WriteLine("Enter the greeting to send: ");
      string greeting = Console.ReadLine();
      Console.WriteLine("The service responded: " + wcfClientChannel.SampleMethod(greeting));

      Console.WriteLine("Press ENTER to exit:");
      Console.ReadLine();

      // Done with service.
      wcfClientChannel.Close();
      Console.WriteLine("Done!");
    }
    catch (TimeoutException timeProblem)
    {
      Console.WriteLine("The service operation timed out. " + timeProblem.Message);
      Console.Read();
    }
    catch (FaultException<SampleFault> fault)
    {
      Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage);
      Console.Read();
    }
    catch (CommunicationException commProblem)
    {
      Console.WriteLine("There was a communication problem. " + commProblem.Message);
      Console.Read();
    }
  }
Public Class Client
  Public Shared Sub Main()
    Try
      ' Picks up configuration from the config file.
      Dim factory As New ChannelFactory(Of ISampleServiceChannel)("WSHttpBinding_ISampleService")

      ' Add the client side behavior programmatically to all created channels.
      factory.Endpoint.Behaviors.Add(New EndpointBehaviorMessageInspector())

      Dim wcfClientChannel As ISampleServiceChannel = factory.CreateChannel()

      ' Making calls.
      Console.WriteLine("Enter the greeting to send: ")
            Dim greeting As String = Console.ReadLine()
      Console.WriteLine("The service responded: " & wcfClientChannel.SampleMethod(greeting))

      Console.WriteLine("Press ENTER to exit:")
      Console.ReadLine()

      ' Done with service. 
      wcfClientChannel.Close()
      Console.WriteLine("Done!")
    Catch timeProblem As TimeoutException
      Console.WriteLine("The service operation timed out. " & timeProblem.Message)
      Console.Read()
    Catch fault As FaultException(Of SampleFault)
      Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage)
      Console.Read()
    Catch commProblem As CommunicationException
      Console.WriteLine("There was a communication problem. " & commProblem.Message)
      Console.Read()
    End Try
  End Sub

Commenti

Le channel factory che implementano l'interfaccia IChannelFactory e i relativi canali associati vengono in genere usati dagli iniziatori di un modello di comunicazione. Le factory listener che implementano l'interfaccia IChannelListener e i listener associati forniscono i meccanismi con cui vengono accettati i canali per le comunicazioni.

Questa classe non fa parte del modello di canale, ma del modello di servizio. Il metodo CreateFactory consente di creare un IChannelFactory per un endpoint di servizio. Usarlo per costruire un client che si collega a un contratto di interfaccia nel servizio senza usare metadati o criteri.

Nota

Impostando ChannelFactory.Credentials.Windows.AllowedImpersonationLevel su TokenImpersonationLevel.Anonymous viene sempre generato un accesso anonimo indipendentemente dal livello di rappresentazione.

Nota speciale per gli utenti C++ gestiti che derivano da questa classe:

  • Inserire il codice di pulizia in (On)(Begin)Close (and/or OnAbort), non in un distruttore.

  • Evitare distruttori; causano la generazione automatica del compilatore IDisposable.

  • Evitare membri non di riferimento; possono causare la generazione automatica del compilatore IDisposable.

  • Evitare di usare un finalizzatore; ma se ne includi uno, devi eliminare l'avviso di compilazione e chiamare SuppressFinalize(Object) e il finalizzatore stesso da (On)(Begin)Close (and/or OnAbort) per emulare il comportamento IDisposable generato automaticamente.

Quando si aggiungono comportamenti a livello di codice, il comportamento viene aggiunto alla proprietà Behaviors appropriata nella ChannelFactory prima della creazione di qualsiasi canale. Vedere la sezione di esempio per un esempio di codice.

Costruttori

ChannelFactory()

Inizializza una nuova istanza della classe ChannelFactory.

Proprietà

Credentials

Ottiene le credenziali usate dai client per comunicare un endpoint di servizio sui canali prodotti dalla factory.

DefaultCloseTimeout

Ottiene l'intervallo di tempo predefinito specificato per il completamento di un'operazione di chiusura.

DefaultOpenTimeout

Ottiene l'intervallo di tempo predefinito specificato per il completamento di un'operazione aperta.

Endpoint

Ottiene l'endpoint di servizio a cui si connettono i canali prodotti dalla factory.

IsDisposed

Ottiene un valore che indica se l'oggetto di comunicazione è stato eliminato.

(Ereditato da CommunicationObject)
State

Ottiene un valore che indica lo stato corrente dell'oggetto di comunicazione.

(Ereditato da CommunicationObject)
ThisLock

Ottiene il blocco che protegge l'istanza della classe durante una transizione di stato.

(Ereditato da CommunicationObject)

Metodi

Abort()

Fa sì che un oggetto di comunicazione passi immediatamente dallo stato corrente allo stato di chiusura.

(Ereditato da CommunicationObject)
ApplyConfiguration(String)

Inizializza la channel factory con i comportamenti forniti da un file di configurazione specificato e con quelli nell'endpoint di servizio della channel factory.

BeginClose(AsyncCallback, Object)

Avvia un'operazione asincrona per chiudere un oggetto di comunicazione.

(Ereditato da CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

Avvia un'operazione asincrona per chiudere un oggetto di comunicazione con un timeout specificato.

(Ereditato da CommunicationObject)
BeginOpen(AsyncCallback, Object)

Avvia un'operazione asincrona per aprire un oggetto di comunicazione.

(Ereditato da CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

Avvia un'operazione asincrona per aprire un oggetto di comunicazione entro un intervallo di tempo specificato.

(Ereditato da CommunicationObject)
Close()

Fa sì che un oggetto di comunicazione passi dallo stato corrente allo stato chiuso.

(Ereditato da CommunicationObject)
Close(TimeSpan)

Fa sì che un oggetto di comunicazione passi dallo stato corrente allo stato chiuso entro un intervallo di tempo specificato.

(Ereditato da CommunicationObject)
CreateDescription()

Se implementato in una classe derivata, crea una descrizione dell'endpoint di servizio associato alla channel factory.

CreateFactory()

Compila la channel factory per l'endpoint corrente della factory.

EndClose(IAsyncResult)

Completa un'operazione asincrona per chiudere un oggetto di comunicazione.

(Ereditato da CommunicationObject)
EndOpen(IAsyncResult)

Completa un'operazione asincrona per aprire un oggetto di comunicazione.

(Ereditato da CommunicationObject)
EnsureOpened()

Apre la channel factory corrente se non è ancora aperta.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
Fault()

Fa sì che un oggetto di comunicazione passi dallo stato corrente allo stato di errore.

(Ereditato da CommunicationObject)
GetCommunicationObjectType()

Ottiene il tipo di oggetto di comunicazione.

(Ereditato da CommunicationObject)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetProperty<T>()

Restituisce l'oggetto tipizzato richiesto, se presente, dal livello appropriato nello stack di canali o null se non presente.

GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
InitializeEndpoint(Binding, EndpointAddress)

Inizializza l'endpoint di servizio della channel factory con un'associazione e un indirizzo specificati.

InitializeEndpoint(ServiceEndpoint)

Inizializza l'endpoint di servizio della channel factory con un endpoint specificato.

InitializeEndpoint(String, EndpointAddress)

Inizializza l'endpoint di servizio della channel factory con un indirizzo e una configurazione specificati.

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
OnAbort()

Termina la channel factory interna della channel factory corrente.

OnBeginClose(TimeSpan, AsyncCallback, Object)

Avvia un'operazione di chiusura asincrona nella channel factory interna della channel factory corrente a cui è associato un oggetto stato.

OnBeginOpen(TimeSpan, AsyncCallback, Object)

Avvia un'operazione di apertura asincrona nella channel factory interna della channel factory corrente a cui è associato un oggetto stato.

OnClose(TimeSpan)

Chiama close sulla channel factory interna con un timeout specificato per il completamento dell'operazione.

OnClosed()

Richiamato durante la transizione di un oggetto di comunicazione nello stato di chiusura.

(Ereditato da CommunicationObject)
OnClosing()

Richiamato durante la transizione di un oggetto di comunicazione nello stato di chiusura.

(Ereditato da CommunicationObject)
OnEndClose(IAsyncResult)

Completa un'operazione di chiusura asincrona nella channel factory interna della channel factory corrente.

OnEndOpen(IAsyncResult)

Completa un'operazione di apertura asincrona nella channel factory interna della channel factory corrente.

OnFaulted()

Inserisce l'elaborazione in un oggetto di comunicazione dopo la transizione allo stato di errore a causa della chiamata di un'operazione di errore sincrono.

(Ereditato da CommunicationObject)
OnOpen(TimeSpan)

Chiama aperto nella channel factory interna della channel factory corrente con un timeout specificato per il completamento dell'operazione.

OnOpened()

Inizializza una copia di sola lettura dell'oggetto ClientCredentials per la channel factory.

OnOpening()

Compila la channel factory interna per il canale corrente.

Open()

Fa sì che un oggetto di comunicazione passi dallo stato creato allo stato aperto.

(Ereditato da CommunicationObject)
Open(TimeSpan)

Fa sì che un oggetto di comunicazione passi dallo stato creato allo stato aperto entro un intervallo di tempo specificato.

(Ereditato da CommunicationObject)
ThrowIfDisposed()

Genera un'eccezione se l'oggetto di comunicazione viene eliminato.

(Ereditato da CommunicationObject)
ThrowIfDisposedOrImmutable()

Genera un'eccezione se l'oggetto di comunicazione la proprietà State non è impostata sullo stato Created.

(Ereditato da CommunicationObject)
ThrowIfDisposedOrNotOpen()

Genera un'eccezione se l'oggetto di comunicazione non è nello stato Opened.

(Ereditato da CommunicationObject)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Eventi

Closed

Si verifica quando un oggetto di comunicazione passa allo stato chiuso.

(Ereditato da CommunicationObject)
Closing

Si verifica quando un oggetto di comunicazione passa allo stato di chiusura.

(Ereditato da CommunicationObject)
Faulted

Si verifica quando un oggetto di comunicazione passa allo stato di errore.

(Ereditato da CommunicationObject)
Opened

Si verifica quando un oggetto di comunicazione passa allo stato aperto.

(Ereditato da CommunicationObject)
Opening

Si verifica quando un oggetto di comunicazione passa allo stato di apertura.

(Ereditato da CommunicationObject)

Implementazioni dell'interfaccia esplicita

IAsyncDisposable.DisposeAsync()

Crea e gestisce i canali usati dai client per inviare messaggi agli endpoint di servizio.

IDisposable.Dispose()

Chiude la channel factory corrente.

Metodi di estensione

ConfigureAwait(IAsyncDisposable, Boolean)

Configura il modo in cui verranno eseguite le attese nelle attività restituite da un oggetto eliminabile asincrono.

Si applica a