Condividi tramite


Procedura: ospitare un servizio WCF in WAS

In questo argomento vengono delineati i passaggi di base necessari per creare un servizio Windows Communication Foundation (WCF) ospitato nel servizio di attivazione dei processi di Windows, noto anche come WAS. WAS è il nuovo servizio di attivazione dei processi che rappresenta una generalizzazione delle funzionalità di Internet Information Services (IIS) utilizzabili con protocolli di trasporto non HTTP. WCF utilizza l'interfaccia dell'adattatore listener per comunicare richieste di attivazione ricevute tramite i protocolli non HTTP supportati da WCF, ad esempio TCP, named pipe e Accodamento messaggi.

Questa opzione host richiede che i componenti di attivazione WAS vengano installati e configurati correttamente, ma non richiede la scrittura di codice di hosting come parte dell'applicazione. Per ulteriori informazioni sull'installazione e la configurazione di WAS, vedere Procedura: installare e configurare componenti di attivazione WCF.

Quando un servizio WCF viene ospitato in WAS, vengono utilizzate le associazioni standard come di consueto. Tuttavia, quando si utilizzano NetTcpBinding e NetNamedPipeBinding per configurare un servizio ospitato in WAS, è necessario che sia rispettato un vincolo. Quando endpoint diversi utilizzano lo stesso trasporto, le impostazioni dell'associazione devono corrispondere sulle sette proprietà seguenti:

  • ConnectionBufferSize
  • ChannelInitializationTimeout
  • MaxPendingConnections
  • MaxOutputDelay
  • MaxPendingAccepts
  • ConnectionPoolSettings.IdleTimeout
  • ConnectionPoolSettings.MaxOutboundConnectionsPerEndpoint

In caso contrario, l'endpoint che viene inizializzato per primo determina sempre i valori di queste proprietà e gli endpoint aggiunti in seguito generano un'eccezione ServiceActivationException, se non corrispondono alle impostazioni in questione.

Per l'originale di questo esempio, vedere TCP Activation.

Per creare un servizio di base ospitato in WAS

  1. Definire un contratto di servizio per il tipo di servizio.

  2. Implementare il contratto di servizio in una classe del servizio. Si noti che le informazioni sull'indirizzo o sull'associazione non sono specificate nell'implementazione del servizio. Non è necessario, inoltre, scrivere codice per recuperarle dal file di configurazione.

  3. Creare un file Web.config per configurare un endpoint per l'elemento CalculatorService che utilizza la classe NetTcpBinding.

  4. Creare un file Service.svc che contenga la riga:

    <%@ServiceHost language=c# Service="CalculatorService" %> 
    
  5. Posizionare il file Service.svc nella directory virtuale di IIS.

Per creare un client che utilizzi il servizio

  1. Utilizzare lo strumento ServiceModel Metadata Utility Tool (Svcutil.exe) dalla riga di comando per generare codice dai metadati del servizio.

    Svcutil.exe <service's Metadata Exchange (MEX) address or HTTP GET address> 
    
  2. Il client generato contiene l'interfaccia ICalculator che definisce il contratto di servizio che l'implementazione del client deve soddisfare.

  3. L'applicazione client generata contiene inoltre l'implementazione di ClientCalculator. Si noti che le informazioni sull'indirizzo e sull'associazione non sono specificate nell'implementazione del servizio. Non è necessario, inoltre, scrivere codice per recuperarle dal file di configurazione.

  4. Anche la configurazione del client che utilizza la classe NetTcpBinding viene generata da Svcutil.exe. Quando si utilizza Visual Studio, questo file deve essere denominato App.config.

  5. Creare un'istanza di ClientCalculator in un'applicazione, quindi chiamare le operazioni del servizio.

  6. Compilare ed eseguire il client.

Vedere anche

Altre risorse

TCP Activation