Condividi tramite


ChannelDispatcher Classe

Definizione

Componente che accetta i canali e li associa a un servizio.

public ref class ChannelDispatcher
public ref class ChannelDispatcher : System::ServiceModel::Dispatcher::ChannelDispatcherBase
public class ChannelDispatcher
public class ChannelDispatcher : System.ServiceModel.Dispatcher.ChannelDispatcherBase
type ChannelDispatcher = class
type ChannelDispatcher = class
    inherit ChannelDispatcherBase
Public Class ChannelDispatcher
Public Class ChannelDispatcher
Inherits ChannelDispatcherBase
Ereditarietà
ChannelDispatcher
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 ChannelDispatcher oggetto associa un oggetto IChannelListener a un particolare URI (denominato URI di ascolto) a un'istanza di un servizio. Ogni ServiceHost oggetto può avere molti ChannelDispatcher oggetti, ognuno associato a un listener diverso e a un URI di ascolto per tale servizio.

Quando arriva un messaggio, esegue una ChannelDispatcher query su ognuno degli oggetti associati EndpointDispatcher se l'endpoint può accettare il messaggio e passa il messaggio a quello che può. L'oggetto EndpointDispatcher è responsabile dell'elaborazione dei messaggi da un ChannelDispatcher oggetto quando l'indirizzo di destinazione di un messaggio corrisponde alla AddressFilter proprietà e l'azione del messaggio corrisponde alla ContractFilter proprietà .

Tutte le proprietà che controllano la durata e il comportamento di una sessione del canale sono disponibili per l'ispezione o la modifica dell'oggetto ChannelDispatcher . Oltre a EndpointDispatcher, questi includono oggetti personalizzati IChannelInitializer , , IChannelListener, l'oggetto ServiceHostassociato e InstanceContext.

Costruttori

Nome Descrizione
ChannelDispatcher(IChannelListener, String, IDefaultCommunicationTimeouts)

Inizializza una nuova istanza della classe ChannelDispatcher.

ChannelDispatcher(IChannelListener, String)

Inizializza una nuova istanza della classe ChannelDispatcher.

ChannelDispatcher(IChannelListener)

Inizializza una nuova istanza della classe ChannelDispatcher.

Proprietà

Nome Descrizione
AsynchronousTransactedAcceptEnabled

Ottiene un valore che indica se le chiamate al metodo accept transazionate nel listener sono asincrone.

BindingName

Ottiene il nome dell'associazione utilizzata per configurare il servizio.

ChannelInitializers

Ottiene un set di IChannelInitializer oggetti che è possibile utilizzare per esaminare e aggiungere lo stato ai canali al momento della creazione.

DefaultCloseTimeout

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

DefaultOpenTimeout

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

Endpoints

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

ErrorHandlers

Ottiene un set di IErrorHandler oggetti che possono essere utilizzati per inserire funzionalità di gestione degli errori personalizzate per un endpoint.

Host

Ottiene l'host per il servizio associato al dispatcher.

IncludeExceptionDetailInFaults

Ottiene o imposta un valore che indica se includere i dettagli relativi a 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 al metodo accept sul listener vengono eseguite in una transazione.

IsTransactedReceive

Ottiene un valore che indica se le chiamate al metodo di ricezione sul listener vengono eseguite in una transazione.

Listener

Ottiene il listener associato al dispatcher del canale.

ManualAddressing

Ottiene o imposta un valore che indica se il dispatcher del canale 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 le dimensioni massime per un batch transazionato.

MessageVersion

Ottiene o imposta il messaggio SOAP e WS-Addressing versioni 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 la limitazione del servizio per il servizio associato al dispatcher del canale.

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

Ottiene o imposta il livello di isolamento predefinito per le transazioni.

TransactionTimeout

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

Metodi

Nome Descrizione
Abort()

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

(Ereditato da CommunicationObject)
Attach(ServiceHostBase)

Collega il dispatcher del canale all'host.

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)
CloseInput()

Impedisce al listener di accettare nuovi canali.

Detach(ServiceHostBase)

Scollega l'host del servizio dal dispatcher del canale.

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)
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)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(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.

OnClosed()

Fornisce una traccia della chiusura dei dispatcher dell'endpoint associati al dispatcher del canale.

OnClosing()

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

(Ereditato da CommunicationObject)
OnEndClose(IAsyncResult)

Completa un'operazione asincrona per chiudere un listener del canale per il dispatcher.

OnEndOpen(IAsyncResult)

Completa un'operazione asincrona per aprire un listener del canale per il dispatcher.

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)

Apre il listener associato al dispatcher del canale.

OnOpened()

Popola e convalida la tabella dei filtri usata per l'invio agli endpoint.

OnOpening()

Verifica se il dispatcher del canale è collegato a un host.

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)

Si applica a