Gestione delle eccezioni in Windows Communication Foundation

4 pagine in totale: <<Indietro 1 2 3 [4]

Aggiungere la classe alla pipeline di WCF

Una volta creata la classe, questa va aggiunta alla pipeline di WCF per far si che questo la veda. Poiché il funzionamento della pipeline è strettamente legato ai dispatcher, bisogna aggiungere la classe a tutti i dispatcher.

Per fare questo abbiamo a disposizione sia un modello dichiarativo in fase di configurazione, che un modello imperativo, ovvero da codice. Come sempre, comunque, sfruttare la fase di configurazione è la soluzione ideale.

Se si sceglie la via imperativa, l'unico modo in cui si può aggiungere la classe alla pipeline è implementando nel servizio l'interfaccia IServiceBehavior ed aggiungendo l'oggetto alla lista dei gestori degli errori tramite il metodo ApplyDispatchBehavior dell'interfaccia appena nominata.

class Service : IContract, IServiceBehavior{
  public void ApplyDispatcherBehavior (ServiceDescription description, ServiceHostBase host){
    MyErrorHandler errorHandler = new myerrorHandler();
    foreach(ChannelDispatcher dispatcher in host.ChannelDispatchers)  {
        dispatcher.ErrorHandlers.Add(errorHandler);
    }
  }
}

Se invece si decide per la configurazione questo è il codice xml da inserire:

<system.servicemodel>
  <services>
    <service name="Service" behaviorConfiguration="errors">
      ...
    </service>
  </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="errors">
          <handleErrors/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <extensions>
      <behaviorExtensions>
        <add name=" handleErrors "  type="WCFTest.MyErrorHandler, WCFTest" />
      </behaviorExtensions>
    </extensions>

Conclusioni

Come si è visto in questo articolo, WCF introduce grandi novità anche nel campo della gestione degli errori semplificando di molto la fase di manutenzione del servizio e la scrittura del codice necessario. Il tutto, con un occhio di riguardo alle performance ed alla scalabilità del sistema, grazie alla possibilità di avere la fase di logging su un altro thread già in maniera nativa, senza dover ricorrere a codice proprietario per ottenere questa feature.

4 pagine in totale: <<Indietro 1 2 3 [4]

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.
simone_b scrive:
lunedì 28 gennaio 2008 | 1 risposta

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.



TUTORIALS


IN EVIDENZA
MISC