ChannelFactory Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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 CreateFactory metodo fornisce i mezzi per creare un IChannelFactory oggetto 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.
Note
L'impostazione ChannelFactory.Credentials.Windows.AllowedImpersonationLevel su restituisce TokenImpersonationLevel.Anonymous sempre 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 IDisposableautomatica da parte del compilatore.
- Evitare membri non di riferimento; possono causare la generazione IDisposableautomatica del compilatore.
- 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 (e/o OnAbort) per emulare il comportamento generato automaticamente IDisposable .
Quando si aggiungono comportamenti a livello di codice, il comportamento viene aggiunto alla proprietà appropriata Behaviors in ChannelFactory prima della creazione di qualsiasi canale. Vedere la sezione di esempio per un esempio di codice.
Costruttori
| Nome | Descrizione |
|---|---|
| ChannelFactory() |
Inizializza una nuova istanza della classe ChannelFactory. |
Proprietà
| Nome | Descrizione |
|---|---|
| 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
| Nome | Descrizione |
|---|---|
| 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 |
| 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 State proprietà non è impostata sullo Created stato . (Ereditato da CommunicationObject) |
| ThrowIfDisposedOrNotOpen() |
Genera un'eccezione se l'oggetto di comunicazione non è nello Opened stato . (Ereditato da CommunicationObject) |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Eventi
| Nome | Descrizione |
|---|---|
| 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
| Nome | Descrizione |
|---|---|
| IAsyncDisposable.DisposeAsync() |
Crea e gestisce i canali usati dai client per inviare messaggi agli endpoint di servizio. |
| IDisposable.Dispose() |
Chiude la channel factory corrente. |