2012-03-19 7 views
8

Ho bisogno di eseguire alcuni metodi prima della prima chiamata di un servizio wcf, dove metto questi metodi? Dov'è il metodo di avvio di un servizio WCF?Dove si trova il metodo di avvio di un servizio WCF?

Obs1: il mio servizio WCF verrà eseguito su un IIS6. Obs2: sto usando .net framework 4.0.

+2

Il comportamento predefinito di un servizio WCF è ** per chiamata **, ad es. ogni richiesta riceve la propria istanza della classe di servizio e il metodo che hai chiamato viene eseguito. C'è solo una nota in memoria - e quindi non c'è niente come "metodi di avvio" in un servizio WCF - hai la tua classe di servizio, tutto ciò che devi fare - esegui il metodo di servizio –

risposta

4

Un modo per farlo è ospitare automaticamente i servizi WCF (come non in IIS). In questo modo puoi eseguire qualunque codice tu voglia prima di far girare i servizi.

Un altro modo è aggiungere una chiamata al metodo statico nel costruttore di ciascuna implementazione del comportamento del servizio. Quella chiamata al metodo statico farebbe un controllo per assicurarsi che l'inizializzazione fosse stata eseguita. Assicurati di gestire la concorrenza multi-thread durante questa chiamata.

3

A seconda della configurazione di durata del servizio, WCF crea un'istanza della classe di servizio su ogni chiamata (singlecall), per ogni client (sessione) o solo una volta per ogni chiamata di ogni client (singleton).

È possibile implementare l'interfaccia IInstanceProvide e prendere il controllo del processo di creazione dell'istanza. In questo modo è possibile avere la possibilità di chiamare i metodi sulla classe prima che venga effettuata la chiamata effettiva wcf.

+0

+1 per IInstanceProvider - Non l'ho fatto conosci questo. – RQDQ

Problemi correlati