ChannelDispatcher Classe

Definizione

Un componente che accetta i canali e li associa a un servizio.

public ref class ChannelDispatcher : System::ServiceModel::Dispatcher::ChannelDispatcherBase
public class ChannelDispatcher : System.ServiceModel.Dispatcher.ChannelDispatcherBase
type ChannelDispatcher = class
    inherit ChannelDispatcherBase
Public Class ChannelDispatcher
Inherits ChannelDispatcherBase
Ereditarietà

Esempio

Uri baseAddress = new Uri("http://localhost:8001/Simple");
ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress);

serviceHost.AddServiceEndpoint(
    typeof(ICalculator),
    new WSHttpBinding(),
    "CalculatorServiceObject");

// Enable MEX.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
serviceHost.Description.Behaviors.Add(smb);

serviceHost.Open();

IChannelListener icl = serviceHost.ChannelDispatchers[0].Listener;
ChannelDispatcher dispatcher = new ChannelDispatcher(icl);
Console.WriteLine("servicehost has {0} ChannelDispatchers", serviceHost.ChannelDispatchers.Count);
ChannelDispatcherCollection dispatchers = serviceHost.ChannelDispatchers;

foreach (ChannelDispatcher disp in dispatchers)
{
    Console.WriteLine("Binding name: " + disp.BindingName);
}

Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();

// Close the ServiceHostBase to shutdown the service.
serviceHost.Close();
Dim baseAddress As New Uri("http://localhost:8001/Simple")
Dim serviceHost As New ServiceHost(GetType(CalculatorService), baseAddress)

serviceHost.AddServiceEndpoint(GetType(ICalculator), New WSHttpBinding(), "CalculatorServiceObject")

' Enable MEX.
Dim smb As New ServiceMetadataBehavior()
smb.HttpGetEnabled = True
serviceHost.Description.Behaviors.Add(smb)

serviceHost.Open()

Dim icl As IChannelListener = serviceHost.ChannelDispatchers(0).Listener
Dim dispatcher As New ChannelDispatcher(icl)
Console.WriteLine("servicehost has {0} ChannelDispatchers", serviceHost.ChannelDispatchers.Count)
Dim dispatchers As ChannelDispatcherCollection = serviceHost.ChannelDispatchers

For Each disp As ChannelDispatcher In dispatchers
    Console.WriteLine("Binding name: " & disp.BindingName)
Next disp

Console.WriteLine("The service is ready.")
Console.WriteLine("Press <ENTER> to terminate service.")
Console.WriteLine()
Console.ReadLine()

' Close the ServiceHostBase to shutdown the service.
serviceHost.Close()

Commenti

Un oggetto ChannelDispatcher associa un'interfaccia IChannelListener a un URI specifico (denominato URI di ascolto) con un'istanza di un servizio. Ogni oggetto ServiceHost può essere dotato di molti oggetti ChannelDispatcher, ognuno associato a un listener e a un URI di ascolto diversi per quel servizio.

All'arrivo di un messaggio ChannelDispatcher esegue una query su ognuno degli oggetti EndpointDispatcher associati per scoprire se l'endpoint può accettare il messaggio, quindi passa il messaggio all'endpoint che ne ha la possibilità. L'oggetto EndpointDispatcher è responsabile per l'elaborazione dei messaggi provenienti da una classe ChannelDispatcher quando l'indirizzo di destinazione di un messaggio corrisponde alla proprietà AddressFilter e l'azione del messaggio corrisponde alla proprietà ContractFilter.

Tutte le proprietà che controllano la durata e il comportamento di una sessione del canale sono disponibili per essere controllate o modificate sull'oggetto ChannelDispatcher. Oltre all'oggetto EndpointDispatcher, questi includono gli oggetti IChannelInitializer personalizzati e gli elementi IChannelListener, ServiceHost e InstanceContext associati.

Costruttori

ChannelDispatcher(IChannelListener)

Inizializza una nuova istanza della classe ChannelDispatcher.

ChannelDispatcher(IChannelListener, String)

Inizializza una nuova istanza della classe ChannelDispatcher.

ChannelDispatcher(IChannelListener, String, IDefaultCommunicationTimeouts)

Inizializza una nuova istanza della classe ChannelDispatcher.

Proprietà

AsynchronousTransactedAcceptEnabled

Ottiene un valore che indica se le chiamate del metodo Accept transazionali al listener sono asincrone.

BindingName

Ottiene il nome dell'elemento di associazione utilizzato per configurare il servizio.

ChannelInitializers

Ottiene un set di oggetti IChannelInitializer da utilizzare per controllare e aggiungere uno stato ai canali al momento della creazione.

DefaultCloseTimeout

Consente di ottenere l'intervallo di tempo predefinito consentito per la chiusura del dispatcher del canale.

DefaultOpenTimeout

Consente di ottenere l'intervallo di tempo predefinito consentito per l'apertura del dispatcher del canale.

Endpoints

Ottiene i dispatcher dell'endpoint che inoltrano i messaggi agli endpoint del canale.

ErrorHandlers

Ottiene un set di oggetti IErrorHandler che può essere utilizzato per inserire una funzionalità di gestione degli errori personalizzata per un endpoint.

Host

Ottiene l'host per il servizio associato al dispatcher.

Host

Quando sottoposto a override in una classe derivata, ottiene l'host del servizio associato al ChannelDispatcher.

(Ereditato da ChannelDispatcherBase)
IncludeExceptionDetailInFaults

Ottiene o imposta un valore che indica se includere i dettagli di un'eccezione in un errore.

IsDisposed

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

(Ereditato da CommunicationObject)
IsTransactedAccept

Ottiene un valore che indica se le chiamate del metodo Accept al listener vengono eseguite nell'ambito di una transazione.

IsTransactedReceive

Ottiene un valore che indica se le chiamate del metodo Receive al listener vengono eseguite nell'ambito di una transazione.

Listener

Ottiene il listener associato al ChannelDispatcher.

ManualAddressing

Ottiene o imposta un valore che indica se il ChannelDispatcher aggiunge intestazioni di indirizzamento ai messaggi request-reply.

MaxPendingReceives

Ottiene o imposta il numero massimo di messaggi in sospeso per canale.

MaxTransactedBatchSize

Ottiene o imposta la dimensione massima di un batch transazionale.

MessageVersion

Ottiene o imposta le versioni del messaggio SOAP e WS-Addressing utilizzate o previste.

ReceiveContextEnabled

Ottiene o imposta un valore che indica se ReceiveContext è abilitato.

ReceiveSynchronously

Ottiene o imposta un valore che specifica se il dispatcher utilizza chiamate sincrone per leggere i messaggi dai canali.

SendAsynchronously

Ottiene o imposta un valore che indica se i messaggi vengono inviati in modo asincrono.

ServiceThrottle

Ottiene o imposta il limite del servizio associato al ChannelDispatcher.

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)
TransactionIsolationLevel

Ottiene o imposta il livello di isolamento predefinito delle transazioni.

TransactionTimeout

Ottiene o imposta un valore che specifica il timeout predefinito per le nuove transazioni create dal dispatcher per conto del servizio.

Metodi

Abort()

Determina la transizione immediata di un oggetto di comunicazione dallo stato corrente allo stato di chiusura.

(Ereditato da CommunicationObject)
Attach(ServiceHostBase)

Allega il ChannelDispatcher all'host.

Attach(ServiceHostBase)

Quando sottoposto a override in una classe derivata, allega il ChannelDispatcher a un host specifico.

(Ereditato da ChannelDispatcherBase)
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)
CloseInput()

Interrompe l'accettazione di nuovi canali da parte del listener.

Detach(ServiceHostBase)

Disconnette l'host del servizio dal ChannelDispatcher.

Detach(ServiceHostBase)

Quando sottoposto a override in una classe derivata, disconnette il ChannelDispatcher da un host specifico.

(Ereditato da ChannelDispatcherBase)
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)
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)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
OnAbort()

Interrompe il listener associato al dispatcher.

OnBeginClose(TimeSpan, AsyncCallback, Object)

Avvia un'operazione asincrona per chiudere un listener del canale per il dispatcher che deve essere completato entro un intervallo di tempo specificato.

OnBeginOpen(TimeSpan, AsyncCallback, Object)

Avvia un'operazione asincrona per aprire un listener del canale per il dispatcher che deve essere completato entro un intervallo di tempo specificato.

OnClose(TimeSpan)

Chiude il listener del canale associato al dispatcher entro un intervallo di tempo specificato.

OnCloseAsync(TimeSpan)

Un componente che accetta i canali e li associa a un servizio.

OnCloseAsync(TimeSpan)

Un componente che accetta i canali e li associa a un servizio.

(Ereditato da CommunicationObject)
OnClosed()

Fornisce una traccia della chiusura del dispatcher dell'endpoint associato al ChannelDispatcher.

OnClosing()

Viene chiamato durante la transizione di un oggetto di comunicazione allo stato di chiusura.

(Ereditato da CommunicationObject)
OnEndClose(IAsyncResult)

Completa l'operazione asincrona di chiusura di un listener del canale per il dispatcher.

OnEndOpen(IAsyncResult)

Completa l'operazione asincrona di apertura di un listener del canale per il dispatcher.

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)

Apre il listener associato al ChannelDispatcher.

OnOpenAsync(TimeSpan)

Un componente che accetta i canali e li associa a un servizio.

OnOpenAsync(TimeSpan)

Un componente che accetta i canali e li associa a un servizio.

(Ereditato da CommunicationObject)
OnOpened()

Popola e convalida la tabella dei filtri utilizzata per la distribuzione agli endpoint.

OnOpening()

Verifica se il ChannelDispatcher viene allegato a un host.

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)

Un componente che accetta i canali e li associa a un servizio.

(Ereditato da CommunicationObject)
IAsyncCommunicationObject.OpenAsync(TimeSpan)

Un componente che accetta i canali e li associa a un servizio.

(Ereditato da CommunicationObject)

Metodi di estensione

CloseHelperAsync(ICommunicationObject, TimeSpan)

Un componente che accetta i canali e li associa a un servizio.

OpenHelperAsync(ICommunicationObject, TimeSpan)

Un componente che accetta i canali e li associa a un servizio.

GetInternalCloseTimeout(CommunicationObject)

Un componente che accetta i canali e li associa a un servizio.

Si applica a