Configurazione dei servizi tramite file di configurazione
La configurazione di un servizio Windows Communication Foundation (WCF) con un file di configurazione assicura la possibilità di fornire dati sul comportamento di endpoint e servizi al momento della distribuzione invece che in fase di progettazione. In questo argomento vengono delineate le principali tecniche disponibili.
Un servizio WCF può essere configurato mediante la tecnologia di configurazione .NET Framework. In genere, gli elementi XML vengono aggiunti al file Web.config per un sito Internet Information Services (IIS) che ospita un servizio WCF. Gli elementi consentono di modificare dettagli, quali gli indirizzi degli endpoint (gli indirizzi effettivi utilizzati per comunicare con il servizio), per i singoli computer. Inoltre, WCF include doversi elementi forniti dal sistema che consentono di selezionare rapidamente le funzionalità di base per un servizio. In pratica, la creazione della configurazione è una parte essenziale della programmazione delle applicazioni WCF.
Per ulteriori informazioni, vedere Configurazione di associazioni per i servizi Windows Communication Foundation. Per un elenco degli elementi più comunemente utilizzati, vedere Associazioni fornite dal sistema.
System.Configuration: Web.config e App.config
WCF utilizza il sistema di configurazione System.Configuration di .NET Framework.
Quando si configura un servizio in Visual Studio, utilizzare un file Web.config o App.config per specificare le impostazioni. La scelta del nome del file di configurazione è determinata dall'ambiente host scelto per il servizio. Se si sta utilizzando IIS per ospitare il servizio, utilizzare un file Web.config. Se si sta utilizzando un altro ambiente host, utilizzare un file App.config.
In Visual Studio, il file denominato App.config viene utilizzato per creare il file di configurazione finale. Il nome finale effettivamente utilizzato per la configurazione dipende dal nome dell'assembly. Ad esempio, un assembly denominato "Cohowinery.exe" ha un file di configurazione finale denominato "Cohowinery.exe.config". Tuttavia, è sufficiente modificare il file App.config. Le modifiche apportate al file vengono automaticamente apportate al file di configurazione finale dell'applicazione in fase di compilazione.
Quando si utilizza un file App.config, il sistema di configurazione unisce il file App.config al contenuto del file Machine.config, al momento dell'avvio dell'applicazione e dell'applicazione della configurazione. Questo meccanismo consente di definire impostazioni a livello di computer nel file Machine.config. Il file App.config può essere utilizzato per eseguire l'override del file Machine.config; è inoltre possibile bloccare le impostazioni nel file Machine.config in modo che vengano utilizzate. Nel caso di Web.config, il sistema di configurazione unisce i file Web.config in tutte le directory che conducono alla directory dell'applicazione nella configurazione che viene applicata. Per ulteriori informazioni sulla configurazione e le priorità delle impostazioni, vedere gli argomenti nello spazio dei nomi System.Configuration.
Principali sezioni del file di configurazione
Le sezioni principali del file di configurazione includono gli elementi seguenti.
<system.ServiceModel>
<services>
<service>
<endpoint/>
</service>
</services>
<bindings>
<!-- Specify one or more of the system-provided binding elements,
for example, <basicHttpBinding> -->
<!-- Alternatively, <customBinding> elements. -->
<binding>
<!-- For example, a <BasicHttpBinding> element. -->
</binding>
</bindings>
<behaviors>
<!-- One or more of the system-provided or custom behavior elements. -->
<behavior>
<!-- For example, a <throttling> element. -->
</behavior>
</behaviors>
</system.ServiceModel>
Nota
Le sezioni di associazioni e comportamenti sono facoltative e vengono incluse solo se necessario.
Elemento <services>
L'elemento services contiene le specifiche per tutti i servizi ospitati dall'applicazione.
Elemento <service>
Ogni servizio ha gli attributi seguenti:
- name. Specifica il tipo che fornisce un'implementazione di un contratto di servizio. Si tratta di un nome completo (spazio dei nomi e nome del tipo).
- behaviorConfiguration. Specifica il nome di uno degli elementi behavior presenti nell'elemento behaviors. Il comportamento specificato regola azioni, stabilendo, ad esempio, se il servizio consente la rappresentazione.
- <service> element reference
Elemento <endpoint>
Ogni endpoint richiede un indirizzo, un'associazione e un contratto, rappresentati dagli attributi seguenti:
- address. Specifica l'URI (Uniform Resource Identifier) del servizio, che può essere un indirizzo assoluto o uno relativo all'indirizzo di base del servizio. Se impostato su una stringa vuota, indica che l'endpoint è disponibile all'indirizzo di base specificato durante la creazione di ServiceHost per il servizio.
- binding. In genere, specifica un'associazione fornita dal sistema come WsHttpBinding, ma può specificare anche un'associazione definita dall'utente. L'associazione specificata determina il tipo di trasporto, protezione e codifica utilizzato e se sono supportati o attivati flussi, sessioni affidabili o transazioni.
- bindingConfiguration. Se i valori predefiniti di un'associazione devono essere modificati, è possibile farlo configurando l'elemento binding appropriato nell'elemento bindings. A questo attributo deve essere assegnato lo stesso valore dell'attributo name dell'elemento binding utilizzato per modificare le impostazioni predefinite.
- contract. Specifica l'interfaccia che definisce il contratto. Si tratta dell'interfaccia implementata nel tipo CLR (Common Language Runtime) specificato dall'attributo name dell'elemento service.
- <endpoint> element reference
Elemento <bindings>
L'elemento bindings contiene le specifiche per tutte le associazioni utilizzabili da qualsiasi endpoint definito in qualsiasi servizio.
Elemento <binding>
L'elemento binding contenuto nell'elemento bindings può corrispondere a una delle associazioni fornite dal sistema (vedere Associazioni fornite dal sistema) o a un'associazione personalizzata (vedere Associazioni personalizzate). L'elemento binding ha un attributo name che mette in correlazione l'associazione e l'endpoint specificato nell'attributo bindingConfiguration dell'elemento endpoint.
Per ulteriori informazioni sulla configurazione di servizi e client, vedere Configurazione di applicazioni Windows Communication Foundation.
Elemento <behaviors>
Si tratta di un elemento contenitore per gli elementi behavior che definiscono i comportamenti di un servizio.
Elemento <behavior>
Ogni elemento behavior è identificato da un attributo name e fornisce un comportamento fornito dal sistema, ad esempio <throttling>, o un comportamento personalizzato.
Come utilizzare configurazioni di associazioni e comportamenti
WCF semplifica la condivisione delle configurazioni tra endpoint utilizzando un sistema di riferimento nella configurazione. Invece di assegnare direttamente valori di configurazione a un endpoint, i valori di configurazione relativi all'associazione vengono raggruppati in elementi bindingConfiguration nella sezione <binding>
. Una configurazione di associazione è un gruppo denominato di impostazioni su un'associazione. Gli endpoint possono quindi fare riferimento a bindingConfiguration in base al nome.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="myBindingConfiguration1" closeTimeout="00:01:00" />
<binding name="myBindingConfiguration2" closeTimeout="00:02:00" />
</basicHttpBinding>
</bindings>
<services>
<service name="myServiceType">
<endpoint
address="myAddress" binding="basicHttpBinding"
bindingConfiguration="myBindingConfiguration1" />
</service>
</services>
</system.serviceModel>
</configuration>
L'attributo name di bindingConfiguration è impostato nell'elemento <binding>
. name deve essere una stringa univoca nell'ambito del tipo di associazione, in questo caso <basicHttpBinding>. L'endpoint collega alla configurazione impostando l'attributo bindingConfiguration su questa stringa.
L'attributo behaviorConfiguration viene implementato nello stesso modo, come illustrato nell'esempio seguente.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="myBehavior">
<callbackDebug includeExceptionDetailInFaults="true" />
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service name="NewServiceType">
<endpoint
address="myAddress" behaviorConfiguration="myBehavior"
binding="basicHttpBinding" />
</service>
</services>
</system.serviceModel>
</configuration>
Questo sistema consente agli endpoint di condividere configurazioni comuni senza ridefinire le impostazioni. Se è necessario un ambito a livello di computer, creare la configurazione di associazione o comportamento in Machine.config. Le impostazioni di configurazione sono disponibili in tutti i file App.config. Configuration Editor Tool (SvcConfigEditor.exe) semplifica la creazione di configurazioni.
Vedere anche
Altre risorse
Configurazione di applicazioni Windows Communication Foundation
<service>
<binding>