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 utilizzati dai client per inviare messaggi agli endpoint del 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 IChannelFactory
interface ICommunicationObject
interface IDisposable
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 che la factory crei l'oggetto channel.
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. Le listener factory che implementano l'interfaccia IChannelListener e i listener associati forniscono i meccanismi di accettazione dei canali per le comunicazioni.
Questa classe non fa parte del modello di canali, bensì del modello di servizi. Il metodo CreateFactory fornisce i mezzi per creare un'interfaccia IChannelFactory per un endpoint del servizio. Utilizzarlo per creare un client associato a un contratto di interfaccia sul servizio senza utilizzare metadati o criteri.
Nota
L'impostazione di ChannelFactory.Credentials.Windows.AllowedImpersonationLevel
su TokenImpersonationLevel.Anonymous
comporta sempre un accesso anonimo indipendentemente dal livello di rappresentazione.
Nota speciale in caso di derivazione da questa classe in C++ gestito:
Inserire il codice di pulizia in (On)(Begin)Close (e/o OnAbort), non in un distruttore.
Evitare i distruttori perché comportano la generazione automatica di IDisposable da parte del compilatore.
Evitare membri non di riferimento perché possono comportare la generazione automatica di IDisposable da parte del compilatore.
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.
Quando si aggiungono comportamenti a livello di codice, il comportamento viene aggiunto alla proprietà Behaviors
appropriata in ChannelFactory prima della creazione di qualsiasi canale. Per un esempio di codice, vedere la sezione relativa agli esempi.
Costruttori
ChannelFactory() |
Inizializza una nuova istanza della classe ChannelFactory. |
Proprietà
Credentials |
Ottiene le credenziali utilizzate dai client per comunicare con un endpoint del servizio sui canali prodotti dalla factory. |
DefaultCloseTimeout |
Ottiene l'intervallo di tempo predefinito fornito per il completamento di un'operazione di chiusura. |
DefaultOpenTimeout |
Ottiene l'intervallo di tempo predefinito fornito per il completamento di un'operazione di apertura. |
Endpoint |
Ottiene l'endpoint del servizio al quale 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 a esclusione reciproca che protegge l'istanza della classe durante una transizione di stato. (Ereditato da CommunicationObject) |
Metodi
Abort() |
Determina la transizione immediata di un oggetto di comunicazione 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 specificati nell'endpoint del servizio della channel factory. |
BeginClose(AsyncCallback, Object) |
Consente di iniziare un'operazione asincrona finalizzata a chiudere un oggetto di comunicazione. (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. (Ereditato da CommunicationObject) |
BeginOpen(AsyncCallback, Object) |
Consente di iniziare un'operazione asincrona finalizzata ad aprire un oggetto di comunicazione. (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. (Ereditato da CommunicationObject) |
Close() |
Comporta la transizione di un oggetto di comunicazione dallo stato corrente allo stato di chiusura. (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. (Ereditato da CommunicationObject) |
CreateDescription() |
Quando viene implementato in una classe derivata, questo metodo crea una descrizione dell'endpoint del servizio associato alla channel factory. |
CreateFactory() |
Compila la channel factory per l'endpoint corrente della factory. |
EndClose(IAsyncResult) |
Consente di completare un'operazione asincrona finalizzata a chiudere un oggetto di comunicazione. (Ereditato da CommunicationObject) |
EndOpen(IAsyncResult) |
Consente di completare un'operazione asincrona finalizzata ad 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() |
Determina la transizione di un oggetto di comunicazione dallo stato corrente allo stato Faulted. (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>() |
Se presente, restituisce l'oggetto tipizzato richiesto dal livello appropriato nello stack dei canali; se non è presente, restituisce |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
InitializeEndpoint(Binding, EndpointAddress) |
Inizializza l'endpoint del servizio della channel factory con un'associazione e un indirizzo specificati. |
InitializeEndpoint(EndpointAddress) |
Crea e gestisce i canali utilizzati dai client per inviare messaggi agli endpoint del servizio. |
InitializeEndpoint(ServiceEndpoint) |
Inizializza l'endpoint del servizio della channel factory con un endpoint sepcificato. |
InitializeEndpoint(String, EndpointAddress) |
Inizializza l'endpoint del servizio della channel factory con un indirizzo e una configurazione specificati. |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
OnAbort() |
Termina la channel factory interna della channel factory corrente. |
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. |
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. |
OnClose(TimeSpan) |
Chiama la chiusura sulla channel factory interna con un timeout specificato per il completamento dell'operazione. |
OnCloseAsync(TimeSpan) |
Crea e gestisce i canali utilizzati dai client per inviare messaggi agli endpoint del servizio. |
OnCloseAsync(TimeSpan) |
Crea e gestisce i canali utilizzati dai client per inviare messaggi agli endpoint del servizio. (Ereditato da CommunicationObject) |
OnClosed() |
Viene chiamato durante la transizione di un oggetto di comunicazione allo stato di chiusura. (Ereditato da CommunicationObject) |
OnClosing() |
Viene chiamato durante la transizione di un oggetto di comunicazione allo stato di chiusura. (Ereditato da CommunicationObject) |
OnEndClose(IAsyncResult) |
Completa un'operazione di chiusura asincrona sulla channel factory interna della channel factory corrente. |
OnEndOpen(IAsyncResult) |
Completa un'operazione di apertura asincrona sulla channel factory interna della channel factory corrente. |
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. (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. |
OnOpenAsync(TimeSpan) |
Crea e gestisce i canali utilizzati dai client per inviare messaggi agli endpoint del servizio. |
OnOpenAsync(TimeSpan) |
Crea e gestisce i canali utilizzati dai client per inviare messaggi agli endpoint del servizio. (Ereditato da CommunicationObject) |
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() |
Comporta la transizione di un oggetto di comunicazione dallo stato di creazione allo stato di apertura. (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. (Ereditato da CommunicationObject) |
ThrowIfDisposed() |
Se l'oggetto di comunicazione è stato eliminato, genera un'eccezione. (Ereditato da CommunicationObject) |
ThrowIfDisposedOrImmutable() |
Se la proprietà State dell'oggetto di comunicazione non è impostata su Created, genera un'eccezione. (Ereditato da CommunicationObject) |
ThrowIfDisposedOrNotOpen() |
Se l'oggetto di comunicazione non si trova nello stato Opened, genera un'eccezione. (Ereditato da CommunicationObject) |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Eventi
Closed |
Si verifica quando un oggetto di comunicazione esegue la transizione allo stato Closed. (Ereditato da CommunicationObject) |
Closing |
Si verifica quando un oggetto di comunicazione esegue la transizione allo stato Closing. (Ereditato da CommunicationObject) |
Faulted |
Si verifica quando un oggetto di comunicazione esegue la transizione allo stato Faulted. (Ereditato da CommunicationObject) |
Opened |
Si verifica quando un oggetto di comunicazione esegue la transizione allo stato Opened. (Ereditato da CommunicationObject) |
Opening |
Si verifica quando un oggetto di comunicazione esegue la transizione allo stato Opening. (Ereditato da CommunicationObject) |
Implementazioni dell'interfaccia esplicita
IAsyncCommunicationObject.CloseAsync(TimeSpan) |
Crea e gestisce i canali utilizzati dai client per inviare messaggi agli endpoint del servizio. (Ereditato da CommunicationObject) |
IAsyncCommunicationObject.OpenAsync(TimeSpan) |
Crea e gestisce i canali utilizzati dai client per inviare messaggi agli endpoint del servizio. (Ereditato da CommunicationObject) |
IAsyncDisposable.DisposeAsync() |
Crea e gestisce i canali utilizzati dai client per inviare messaggi agli endpoint del servizio. |
IDisposable.Dispose() |
Chiude la channel factory corrente. |
Metodi di estensione
CloseHelperAsync(ICommunicationObject, TimeSpan) |
Crea e gestisce i canali utilizzati dai client per inviare messaggi agli endpoint del servizio. |
OpenHelperAsync(ICommunicationObject, TimeSpan) |
Crea e gestisce i canali utilizzati dai client per inviare messaggi agli endpoint del servizio. |
GetInternalCloseTimeout(CommunicationObject) |
Crea e gestisce i canali utilizzati dai client per inviare messaggi agli endpoint del servizio. |
ConfigureAwait(IAsyncDisposable, Boolean) |
Consente di configurare la modalità di esecuzione delle espressioni await per le attività restituite da un elemento disposable asincrono. |
Si applica a
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per