ChannelFactory Classe

Definizione

Crea e gestisce i canali utilizzati dai client per inviare messaggi agli endpoint del servizio.Creates and manages the channels that are used by clients to send messages to service endpoints.

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

Esempi

Nell'esempio di codice seguente viene illustrato come inserire un comportamento client a livello di codice prima che la factory crei l'oggetto channel.The following code example shows how to insert programmatically a client behavior prior to the creation of the channel object by the 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 canali associati sono in genere usati dagli iniziatori di un modello di comunicazione.Channel factories that implement the IChannelFactory interface and their associated channels are generally used by the initiators of a communication pattern. Le listener factory che implementano l'interfaccia IChannelListener e i listener associati forniscono i meccanismi di accettazione dei canali per le comunicazioni.Listener factories that implement the IChannelListener interface and their associated listeners provide the mechanisms with which channels are accepted for communications.

Questa classe non fa parte del modello di canali, bensì del modello di servizi.This class is not part of the channel model, but of the service model. Il metodo CreateFactory fornisce i mezzi per creare un'interfaccia IChannelFactory per un endpoint del servizio.The CreateFactory method provides the means to create an IChannelFactory for a service endpoint. Utilizzarlo per creare un client associato a un contratto di interfaccia sul servizio senza utilizzare metadati o criteri.Use it to construct a client that hooks up to an interface contract on the service without using metadata or policy.

Nota

L'impostazione di ChannelFactory.Credentials.Windows.AllowedImpersonationLevel su TokenImpersonationLevel.Anonymous comporta sempre un accesso anonimo indipendentemente dal livello di rappresentazione.Setting ChannelFactory.Credentials.Windows.AllowedImpersonationLevel to TokenImpersonationLevel.Anonymous always results in an anonymous logon regardless of impersonation level.

Nota speciale in caso di derivazione da questa classe in C++ gestito:Special note for Managed C++ users deriving from this class:

  • Inserire il codice di pulizia in (On)(Begin)Close (e/o OnAbort), non in un distruttore.Put your cleanup code in (On)(Begin)Close (and/or OnAbort), not in a destructor.

  • Evitare i distruttori perché comportano la generazione automatica di IDisposable da parte del compilatore.Avoid destructors; they cause the compiler to auto-generate IDisposable.

  • Evitare membri non di riferimento perché possono comportare la generazione automatica di IDisposable da parte del compilatore.Avoid non-reference members; they can cause the compiler to auto-generate IDisposable.

  • Evitare l'utilizzo di un finalizzatore. Se tuttavia si include un finalizzatore, è necessario annullare l'avviso di compilazione e chiamare il metodo SuppressFinalize(Object) e il finalizzatore stesso mediante (On)(Begin)Close (e/o OnAbort) al fine di emulare il comportamento dell'oggetto IDisposable generato automaticamente.Avoid using a finalizer; but if you include one, you should suppress the build warning and call SuppressFinalize(Object) and the finalizer itself from (On)(Begin)Close (and/or OnAbort) to emulate what would have been the auto-generated IDisposable behavior.

Quando si aggiungono comportamenti a livello di codice, il comportamento viene aggiunto alla proprietà Behaviors appropriata in ChannelFactory prima della creazione di qualsiasi canale.When adding behaviors programmatically, the behavior is added to the appropriate Behaviors property on the ChannelFactory prior to the creation of any channel. Per un esempio di codice, vedere la sezione relativa agli esempi.See the example section for a code sample.

Costruttori

ChannelFactory()

Inizializza una nuova istanza della classe ChannelFactory.Initializes a new instance of the ChannelFactory class.

Proprietà

Credentials

Ottiene le credenziali utilizzate dai client per comunicare con un endpoint del servizio sui canali prodotti dalla factory.Gets the credentials used by clients to communicate a service endpoint over the channels produced by the factory.

DefaultCloseTimeout

Ottiene l'intervallo di tempo predefinito fornito per il completamento di un'operazione di chiusura.Gets the default interval of time provided for a close operation to complete.

DefaultOpenTimeout

Ottiene l'intervallo di tempo predefinito fornito per il completamento di un'operazione di apertura.Gets the default interval of time provided for an open operation to complete.

Endpoint

Ottiene l'endpoint del servizio al quale si connettono i canali prodotti dalla factory.Gets the service endpoint to which the channels produced by the factory connect.

IsDisposed

Ottiene un valore che indica se l'oggetto di comunicazione è stato eliminato.Gets a value that indicates whether the communication object has been disposed.

(Ereditato da CommunicationObject)
State

Ottiene un valore che indica lo stato corrente dell'oggetto di comunicazione.Gets a value that indicates the current state of the communication object.

(Ereditato da CommunicationObject)
ThisLock

Ottiene il blocco a esclusione reciproca che protegge l'istanza della classe durante una transizione di stato.Gets the mutually exclusive lock that protects the class instance during a state transition.

(Ereditato da CommunicationObject)

Metodi

Abort()

Determina la transizione immediata di un oggetto di comunicazione dallo stato corrente allo stato di chiusura.Causes a communication object to transition immediately from its current state into the closing state.

(Ereditato da CommunicationObject)
ApplyConfiguration(String)

Inizializza la channel factory con i comportamenti forniti da un file di configurazione specificato e con quelli specificati nell'endpoint del servizio della channel factory.Initializes the channel factory with the behaviors provided by a specified configuration file and with those in the service endpoint of the channel factory.

BeginClose(AsyncCallback, Object)

Consente di iniziare un'operazione asincrona finalizzata a chiudere un oggetto di comunicazione.Begins an asynchronous operation to close a communication object.

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

Consente di iniziare un'operazione asincrona finalizzata a chiudere un oggetto di comunicazione entro un determinato intervallo di tempo.Begins an asynchronous operation to close a communication object with a specified timeout.

(Ereditato da CommunicationObject)
BeginOpen(AsyncCallback, Object)

Consente di iniziare un'operazione asincrona finalizzata ad aprire un oggetto di comunicazione.Begins an asynchronous operation to open a communication object.

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

Consente di iniziare un'operazione asincrona finalizzata ad aprire un oggetto di comunicazione entro un determinato intervallo di tempo.Begins an asynchronous operation to open a communication object within a specified interval of time.

(Ereditato da CommunicationObject)
Close()

Comporta la transizione di un oggetto di comunicazione dallo stato corrente allo stato di chiusura.Causes a communication object to transition from its current state into the closed state.

(Ereditato da CommunicationObject)
Close(TimeSpan)

Determina la transizione di un oggetto di comunicazione dallo stato corrente allo stato Closed entro un intervallo di tempo specificato.Causes a communication object to transition from its current state into the closed state within a specified interval of time.

(Ereditato da CommunicationObject)
CreateDescription()

Quando viene implementato in una classe derivata, questo metodo crea una descrizione dell'endpoint del servizio associato alla channel factory.When implemented in a derived class, creates a description of the service endpoint associated with the channel factory.

CreateFactory()

Compila la channel factory per l'endpoint corrente della factory.Builds the channel factory for the current endpoint of the factory.

EndClose(IAsyncResult)

Consente di completare un'operazione asincrona finalizzata a chiudere un oggetto di comunicazione.Completes an asynchronous operation to close a communication object.

(Ereditato da CommunicationObject)
EndOpen(IAsyncResult)

Consente di completare un'operazione asincrona finalizzata ad aprire un oggetto di comunicazione.Completes an asynchronous operation to open a communication object.

(Ereditato da CommunicationObject)
EnsureOpened()

Apre la channel factory corrente se non è ancora aperta.Opens the current channel factory if it is not yet opened.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
Fault()

Determina la transizione di un oggetto di comunicazione dallo stato corrente allo stato Faulted.Causes a communication object to transition from its current state into the faulted state.

(Ereditato da CommunicationObject)
GetCommunicationObjectType()

Ottiene il tipo di oggetto di comunicazione.Gets the type of communication object.

(Ereditato da CommunicationObject)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetProperty<T>()

Se presente, restituisce l'oggetto tipizzato richiesto dal livello appropriato nello stack dei canali; se non è presente, restituisce null.Returns the typed object requested, if present, from the appropriate layer in the channel stack, or null if not present.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
InitializeEndpoint(Binding, EndpointAddress)

Inizializza l'endpoint del servizio della channel factory con un'associazione e un indirizzo specificati.Initializes the service endpoint of the channel factory with a specified binding and address.

InitializeEndpoint(ServiceEndpoint)

Inizializza l'endpoint del servizio della channel factory con un endpoint sepcificato.Initializes the service endpoint of the channel factory with a specified endpoint.

InitializeEndpoint(String, EndpointAddress)

Inizializza l'endpoint del servizio della channel factory con un indirizzo e una configurazione specificati.Initializes the service endpoint of the channel factory with a specified address and configuration.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
OnAbort()

Termina la channel factory interna della channel factory corrente.Terminates the inner channel factory of the current channel factory.

OnBeginClose(TimeSpan, AsyncCallback, Object)

Consente di avviare un'operazione di chiusura asincrona sulla channel factory interna della channel factory corrente a cui è associato un oggetto di stato.Begins an asynchronous close operation on the inner channel factory of the current channel factory that has a state object associated with it.

OnBeginOpen(TimeSpan, AsyncCallback, Object)

Consente di avviare un'operazione di apertura asincrona sulla channel factory interna della channel factory corrente a cui è associato un oggetto di stato.Begins an asynchronous open operation on the inner channel factory of the current channel factory that has a state object associated with it.

OnClose(TimeSpan)

Chiama la chiusura sulla channel factory interna con un timeout specificato per il completamento dell'operazione.Calls close on the inner channel factory with a specified time-out for the completion of the operation.

OnClosed()

Viene chiamato durante la transizione di un oggetto di comunicazione allo stato di chiusura.Invoked during the transition of a communication object into the closing state.

(Ereditato da CommunicationObject)
OnClosing()

Viene chiamato durante la transizione di un oggetto di comunicazione allo stato di chiusura.Invoked during the transition of a communication object into the closing state.

(Ereditato da CommunicationObject)
OnEndClose(IAsyncResult)

Completa un'operazione di chiusura asincrona sulla channel factory interna della channel factory corrente.Completes an asynchronous close operation on the inner channel factory of the current channel factory.

OnEndOpen(IAsyncResult)

Completa un'operazione di apertura asincrona sulla channel factory interna della channel factory corrente.Completes an asynchronous open operation on the inner channel factory of the current channel factory.

OnFaulted()

Inserisce l'elaborazione in un oggetto di comunicazione dopo che ha eseguito la transizione allo stato Faulted in seguito alla chiamata di un'operazione di errore sincrona.Inserts processing on a communication object after it transitions to the faulted state due to the invocation of a synchronous fault operation.

(Ereditato da CommunicationObject)
OnOpen(TimeSpan)

Chiama l'apertura sulla channel factory interna della channel factory corrente con un timeout specificato per il completamento dell'operazione.Calls open on the inner channel factory of the current channel factory with a specified time-out for the completion of the operation.

OnOpened()

Inizializza una copia di sola lettura dell'oggetto ClientCredentials per la channel factory.Initializes a read-only copy of the ClientCredentials object for the channel factory.

OnOpening()

Compila la channel factory interna per il canale corrente.Builds the inner channel factory for the current channel.

Open()

Comporta la transizione di un oggetto di comunicazione dallo stato di creazione allo stato di apertura.Causes a communication object to transition from the created state into the opened state.

(Ereditato da CommunicationObject)
Open(TimeSpan)

Comporta la transizione di un oggetto di comunicazione dallo stato di creazione allo stato di apertura entro un determinato intervallo di tempo.Causes a communication object to transition from the created state into the opened state within a specified interval of time.

(Ereditato da CommunicationObject)
ThrowIfDisposed()

Se l'oggetto di comunicazione è stato eliminato, genera un'eccezione.Throws an exception if the communication object is disposed.

(Ereditato da CommunicationObject)
ThrowIfDisposedOrImmutable()

Se la proprietà State dell'oggetto di comunicazione non è impostata su Created, genera un'eccezione.Throws an exception if the communication object the State property is not set to the Created state.

(Ereditato da CommunicationObject)
ThrowIfDisposedOrNotOpen()

Se l'oggetto di comunicazione non si trova nello stato Opened, genera un'eccezione.Throws an exception if the communication object is not in the Opened state.

(Ereditato da CommunicationObject)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)

Eventi

Closed

Si verifica quando un oggetto di comunicazione esegue la transizione allo stato Closed.Occurs when a communication object transitions into the closed state.

(Ereditato da CommunicationObject)
Closing

Si verifica quando un oggetto di comunicazione esegue la transizione allo stato Closing.Occurs when a communication object transitions into the closing state.

(Ereditato da CommunicationObject)
Faulted

Si verifica quando un oggetto di comunicazione esegue la transizione allo stato Faulted.Occurs when a communication object transitions into the faulted state.

(Ereditato da CommunicationObject)
Opened

Si verifica quando un oggetto di comunicazione esegue la transizione allo stato Opened.Occurs when a communication object transitions into the opened state.

(Ereditato da CommunicationObject)
Opening

Si verifica quando un oggetto di comunicazione esegue la transizione allo stato Opening.Occurs when a communication object transitions into the opening state.

(Ereditato da CommunicationObject)

Implementazioni dell'interfaccia esplicita

IDisposable.Dispose()

Chiude la channel factory corrente.Closes the current channel factory.

Si applica a