Processo di configurazione in AppFabric

Le estensioni di Gestione IIS per AppFabric e i cmdlet di Windows PowerShell per AppFabric offrono metodi diretti per consentire ai proprietari delle applicazioni o ai professionisti IT di configurare le applicazioni basate sui servizi WCF o WF. In questo argomento vengono descritte le modifiche applicate al file Web.config quando si configura un servizio o un'applicazione nelle estensioni di Gestione IIS o mediante i cmdlet di configurazione di AppFabric. Nel primo argomento vengono descritti i file Web.config utilizzati nella configurazione di un servizio. Viene poi illustrato come configurare un servizio direttamente e infine viene descritta la configurazione dei valori predefiniti per un servizio da ereditare.

Per ulteriori informazioni sull'utilizzo dei file Web.config in ASP.NET, vedere ASP.NET Configuration.

Gerarchi dei file Web.config

Ciascun elemento della gerarchia di configurazione IIS può avere il proprio file Web.config e un servizio può ereditare le impostazioni di configurazione predefinite dei file Web.config associati al server, al sito, all'applicazione e alla sottodirectory a cui appartiene il servizio. Di conseguenza, la configurazione di un servizio viene definita da una gerarchia di file Web.config. In questa sezione vengono descritte le regole che determinano i file Web.config della gerarchia che definiscono la configurazione di un servizio e gli elementi all'interno di tali file che hanno la precedenza.

Quando viene installato in un server, AppFabric crea un file Web.config del server (se non esiste già) nella stessa directory del file Machine.config (<unità>:\Windows\Microsoft.NET\Framework\v4.0.xxxxx\Config). La configurazione nel file Web.config del server consente il rilevamento dei servizi, il salvataggio permanente del flusso di lavoro e la gestione delle istanze del flusso di lavoro. È inoltre possibile disporre di un file Web.config per un sito Web, ubicato nella directory del sito Web (<unità>:\inetpub\wwwroot); per un'applicazione nella directory radice dell'applicazione; e per una sottodirectory di un'applicazione. I file Web.config del sito, dell'applicazione e della sottodirectory non vengono installati mediante l'installazione di AppFabric. Ogni volta che si tenta di utilizzare le estensioni di Gestione IIS per AppFabric per modificare la configurazione per un ambito e in tale ambito non è presente un file Web.config, tale file viene creato automaticamente.

Il file Web.config a qualsiasi livello è in grado di contenere le impostazioni di configurazione che si applicano direttamente a un servizio, ma se si desidera definire il servizio direttamente nell'IU di Gestione IIS, sarà necessario tenere in considerazione la definizione del servizio nel file Web.config dell'applicazione. Oltre a queste impostazioni, i file Web.config ai livelli di server, sito, applicazione e sottodirectory possono contenere impostazioni di configurazione predefinite che possono essere ereditate da un servizio. La configurazione dell'applicazione impostata mediante le estensioni dell'interfaccia utente Gestione IIS per AppFabric e i cmdlet di configurazione influisce solo sui file Web.config, non sui file machine.config o su altri file che definiscono la configurazione dell'ambiente. Un'eccezione a questa regola è rappresentata dall'avvio automatico, che viene definito per un'applicazione nel file applicationHost.config a livello di server.

I file Web.config contengono una gerarchia nidificata di tag e di tag secondari XML con attributi che specificano le impostazioni di configurazione. Alcune impostazioni di configurazione per un servizio basato su WCF e su WF vengono definite all'interno del comportamento di un servizio. In AppFabric la maggior parte degli strumenti di configurazione consentono di modificare i comportamenti. Tuttavia, alcune impostazioni di configurazione vengono definite all'esterno del comportamento di un servizio. Ad esempio, il monitoraggio, gli indirizzi degli endpoint e le quote di trasporto del binding per un servizio vengono configurati nel file Web.config, ma all'esterno di un comportamento. La configurazione della Raccolta eventi e della diagnostica del sistema, entrambe nell'ambito dell'applicazione oppure a livello superiore, non sono definite nei comportamenti.

Nota

AppFabric utilizza Microsoft Web Administration (MWA) per gestire la configurazione. MWA richiede che tutti gli elementi di configurazione siano schematizzati. Per informazioni sulla creazione di uno schema per i comportamenti personalizzati, vedere l'argomento relativo all'Extending IIS 7.0 Schema and Accessing the Custom Sections Using MWA.

Configurazione diretta di un servizio

È possibile configurare un servizio utilizzando un comportamento del servizio denominato in un file Web.config. A tal fine, immettere nel file Web.config un tag <service> con un attributo behaviorConfiguration che punta a un tag di comportamento del servizio. È possibile definire un comportamento denominato per un servizio in un file Web.config a livello di applicazione oppure a livello superiore. Di seguito viene riportato l'esempio di un servizio denominato TestService la cui configurazione è definita in un comportamento di servizio denominato TestGetMetaData:

<system.serviceModel>
   <services>
      <service name="TestService" behaviorConfiguration="TestGetMetaData" >
         <endpoint address="/TestService" binding="wsHttpBinding" contract="ITestService"/>
         <endpoint address="mex"  binding="mexHttpBinding"  contract="IMetadataExchange"/>
      </service>
   </services>

   <behaviors>
      <serviceBehaviors>
         <behavior name="TestGetMetaData"> <serviceMetadata httpGetEnabled="true" httpGetUrl=""/> </behavior>
      </serviceBehaviors>
   </behaviors>
</system.serviceModel>

In .NET Framework 3.5, i metodi più semplici per configurare molti aspetti di un servizio consistevano nell'utilizzare un comportamento di servizio denominato nel file Web.config dell'applicazione del servizio (o nella sottodirectory). In .NET Framework 4.0, i nuovi modelli promuovono l'utilizzo di comportamenti senza nome tramite i quali un servizio eredita una configurazione predefinita. Per ulteriori informazioni, vedere "Configurazione delle impostazioni predefinite per un servizio da ereditare" più avanti nella sezione.

Gli strumenti di configurazione di AppFabric consentono di modificare i seguenti comportamenti dei servizi:

  • sqlWorkflowInstanceStore (salvataggio permanente)

  • etwTracking (monitoraggio)

  • serviceThrottling (prestazioni)

  • serviceCredentials/serviceCertificate (protezione)

  • workflowIdle

  • workflowUnhandledException

  • workflowInstanceManagement

Configurazione delle impostazioni predefinite per un servizio da ereditare

L'utilizzo di un comportamento di servizio denominato nel file Web.config dell'applicazione non è l'unico modo per configurare un servizio. Un servizio può anche ereditare le impostazioni di configurazione predefinite dai file per il server, il sito, l'applicazione e la sottodirectory di appartenenza di tale servizio. Alcune impostazioni di configurazione predefinite per i servizi basati su WCF e su WF vengono definite all'interno di un comportamento di servizio senza nome.

Utilizzo di comportamenti senza nome

Se è presente un comportamento di servizio denominato e l'attributo behaviorConfiguration del servizio punta a tale comportamento, il servizio utilizzerà le impostazioni del comportamento denominato. Inoltre erediterà le impostazioni da tutti gli altri comportamenti denominati con lo stesso nome nei livelli superiori. Non utilizzerà le impostazioni del comportamento di servizio predefinite definite nei file Web.config della sottodirectory, dell'applicazione, del sito e del server che si applicano al servizio. È possibile, tuttavia, modificare il tag <service> nel file Web.config dell'applicazione in modo che il servizio erediti le impostazioni predefinite. Tale operazione viene eseguita definendo un comportamento di servizio senza nome nel file Web.config per uno o più livelli e specificando che il servizio utilizza tale comportamento senza nome. Il servizio utilizzerà il comportamento senza nome quando il nome dell'attributo behaviorConfiguration dell'elemento del servizio è impostato su una stringa vuota, come mostrato nel codice seguente:

<services>
   <service name=”TutorialService” behaviorConfiguration=””
      <endpoint address=”” binding=”wsHttpBinding” contract=”IService” />
   </service>
</services>

Se si lascia fuori l'attributo behaviorConfiguration, come mostrato nel codice seguente, si ottiene lo stesso effetto. In precedenza, il comportamento senza nome viene utilizzato in modo esplicito, mentre di seguito il comportamento viene utilizzato in modo implicito.

<services>
   <service name=”TutorialService”
      <endpoint address=”” binding=”wsHttpBinding” contract=”IService” />
   </service>
</services>

L'effetto dell'elemento behaviorConfiguration consiste nel fatto che il servizio erediterà la relativa configurazione da uno o più comportamenti senza nome definiti nell'elemento serviceBehavior. Di seguito viene riportato l'elemento serviceBehavior senza nome definito per impostazione predefinita a livello di server. Questa configurazione predefinita per il server (creata mediante l'installazione di AppFabric) consente il rilevamento dei servizi, il salvataggio permanente del flusso di lavoro e la gestione delle istanze del flusso di lavoro.

<behaviors>
   <serviceBehaviors>
      <behavior name=””>
         <workflowIdle timeToUnload="00:01:00" timeToPersist="infinite" />
         <workflowInstanceManagement authorizedWindowsGroup=”AS_Administrators" />
         <etwTracking profileName="HealthMonitoring Tracking Profile" />
      </behavior>
   </serviceBehaviors>
</behaviors>

È possibile definire un comportamento senza nome in un file Web.config a qualsiasi livello della gerarchia. Se vengono definiti comportamenti senza nome a più livelli che contengono il servizio, la configurazione per il servizio consisterà nelle impostazioni unite di ciascun comportamento senza nome definito nella relativa gerarchia. Se due o più comportamenti senza nome della gerarchia di un servizio contengono impostazioni in conflitto, verrà utilizzata l'impostazione a livello più basso o minimo. Il processo di aggregazione delle impostazioni di configurazione per un servizio da più comportamenti senza nome è noto come unione dei comportamenti.

È inoltre possibile utilizzare tag di rimozione e di cancellazione nelle sezioni relative al comportamento dei file Web.config. I tag di rimozione rimuovono un'impostazione per il comportamento senza nome che li contiene. I tag di cancellazione rimuovono tutti i comportamenti per un servizio.

Tutti i servizi in cui l'attributo behaviorConfiguration è impostato su una stringa vuota erediteranno i valori di configurazione predefiniti dai comportamenti senza nome definiti nella relativa gerarchia. È consentito un solo comportamento senza nome in un file Web.config per un livello.

Un comportamento senza nome viene utilizzato in modo implicito (tralasciando l'attributo behaviorConfiguration) nel caso di servizi impliciti (altrimenti noti come "senza tag"). Un servizio senza tag è un servizio non dichiarato in un file Web.config. Tale servizio non dispone di un nodo di servizi associato in un file Web.config. Per impostazione predefinita, i nuovi tipi di progetto di Visual Studio 10 creano servizi senza tag. Quando il runtime rileva un servizio senza tag, applica automaticamente al servizio le impostazioni predefinite unite dai comportamenti senza nome applicabili. Non è possibile modificare gli endpoint di un servizio senza tag nelle estensioni di Gestione IIS. A tal fine, è necessario aggiungere un elemento servizio denominato al file Web.config.

Mentre alcune impostazioni di configurazione predefinite per i servizi basati su WCF e WF vengono definite all'interno di un comportamento di servizio senza nome, altre vengono definite all'esterno di un comportamento di servizio senza nome. Ad esempio, per le stringhe di connessione o per le raccolte, un servizio erediterà i valori di configurazione da tutti i file di configurazione della gerarchia.

Configurazione delle impostazioni predefinite in Gestione IIS

È possibile configurare un'applicazione direttamente nelle estensioni dell'interfaccia utente Gestione IIS per AppFabric. Quando si esegue questa operazione, AppFabric imposta il comportamento del servizio denominato nei file Web.config applicabili (in genere a livello di applicazione). È inoltre possibile utilizzare Gestione IIS per modificare la configurazione del servizio in modo che utilizzi le impostazioni predefinite dei livelli sottodirectory, applicazione, sito e server invece di configurare direttamente il servizio. Quando si esegue questa operazione, i comportamenti senza nome del file Web.config vengono modificati. AppFabric esegue l'unione dei comportamenti in modo da creare il set completo dei parametri di configurazione dell'applicazione.

Se la stessa proprietà di configurazione è impostata su un valore diverso in due o più file Web.config, AppFabric utilizzerà il valore del livello inferiore o di quello più basso. I campi della finestra di dialogo Configura servizio per il servizio vengono popolati dai comportamenti senza nome nei file Web.config applicabili. È possibile modificare tali valori nell'IU di configurazione a livello di servizio. In tal caso il comportamento senza nome per l'applicazione appropriata verrà modificato. In alternativa, è possibile modificare i valori predefiniti a livello di sottodirectory, di sito e di server. Se si modifica un'impostazione predefinita nel comportamento senza nome a un livello superiore dopo che il comportamento senza nome dell'applicazione è stato creato, la modifica al comportamento senza nome del livello superiore verrà propagata a livello del servizio a meno che non venga ignorata al livello inferiore.

Per definire le impostazioni predefinite per il livello applicazione, sottodirectory, sito o server in Gestione IIS, selezionare il livello nel riquadro Connessioni e fare clic su Configura nel riquadro Azioni in Gestisci servizi WCF e WF. È inoltre possibile fare clic con il pulsante destro del mouse sul livello nel riquadro Connessione, scegliere Gestisci servizi WCF e WF e fare clic su Configura. In tal modo viene visualizzata la finestra di dialogo Configurazione per il livello. Se non è presente alcun file Web.config per un livello quando si modificano le impostazioni predefinite per il livello dell'interfaccia utente, AppFabric ne creerà uno.

Nelle estensioni di Gestione IIS per AppFabric , quando si configura un servizio non viene selezionata la configurazione del comportamento denominato che verrà utilizzata. Vengono immessi i valori o effettuate le selezioni nella finestra di dialogo Configura servizio per il servizio. AppFabric modifica il file Web.config. È inoltre possibile utilizzare i cmdlet di Windows PowerShell per AppFabric per definire molte impostazioni di configurazione del comportamento.

Utilizzo dei tag di percorso

AppFabric supporta operazioni di lettura sui tag di percorso nei file Web.config. Un tag di percorso è un altro modo per definire la configurazione di un servizio oltre all'utilizzo di un comportamento di servizio denominato o alla definizione di comportamenti predefiniti tramite un comportamento di servizio senza nome o un servizio senza tag. Un tag di percorso è un elemento incorporato in un file Web.config che applica le impostazioni di configurazione a un'entità identificata in modo specifico. Un tag di percorso contiene una o più impostazioni di configurazione. Contiene inoltre un percorso che specifica l'entità alla quale verranno applicate le proprietà di configurazione. A differenza di un comportamento di servizio denominato (che deve trovarsi nel nodo <services> del file Web.config dell'applicazione applicabile), un tag di percorso può essere immesso in un file Web.config qualsiasi. A differenza di un comportamento senza nome, il tag di percorso non richiede un elemento behaviorConfiguration senza nome nel nodo <service> del file Web.config dell'applicazione per essere applicabile.

Di seguito viene riportato un esempio di tag di percorso nel file Web.config di un sito che applica un'impostazione di configurazione a un servizio s1 in un'applicazione app1:

<location path=”app1/s1.svc” overrideMode=”Allow”>
   <defaultDocument enabled=”true”>
      <files>
         <add value=”Developer.htm” />
      </files>
   </defaultDocument>
</location>

Se non viene dichiarato un percorso, il percorso parte dal livello in cui viene definito il tag di percorso fino a tutti i percorsi figlio (l'equivalente della specifica di un puntino (.)). Se si esegue tale operazione in applicationHost.config, la configurazione viene specificata a livello globale. Se l'elemento overrideMode nel tag di percorso è impostato su “Allow”, la configurazione impostata nel tag di percorso può essere modificata e ignorata ai livelli inferiori della gerarchia. Se l'elemento overrideMode non è impostato ed esistono più tag di percorsi che specificano valori diversi per la stessa impostazione di configurazione nello stesso servizio, verrà applicata una serie di regole di definizione della priorità per stabilire l'impostazione da utilizzare.

Un'impostazione di configurazione applicata a un servizio da un tag di percorso non può essere modificata nelle estensioni dell'interfaccia utente Gestione IIS per AppFabric né tramite il cmdlet di configurazione di AppFabric. Il contenuto di un tag di percorso è di sola lettura per l'IU e per un cmdlet. Se si tenta di modificare il tag di percorso tramite Gestione IIS oppure un cmdlet, l'azione restituirà un errore. Per modificare un'impostazione applicata da un tag di percorso, è necessario modificare manualmente il tag di percorso nel file Web.config.

Riciclo

Ogni volta che si fa clic su Applica o su OK nella finestra di dialogo Configura servizio in Gestione IIS, e si modifica un file Web.config, il sistema riciclerà il dominio applicazione associato. Ogni volta che si fa clic su Applica o su OK per definire le impostazioni predefinite a livello di sottodirectory, di applicazione, di sito o di server, modificando il file Web.config corrispondente, i domini applicazione per tutti i servizi al di sotto di tale ambito verranno riciclati. Si consiglia di ridurre al minimo il numero di processi di riconfigurazione, specialmente ai livelli più alti, al fine di ridurre i costi del riciclo. Quando si configurano le impostazioni predefinite, è necessario procedere nel modo descritto di seguito: configurare le impostazioni predefinite del server e del sito (in qualsiasi origine), quindi importare le applicazioni e configurare le applicazioni e i servizi in esse contenuti. La ragione di questo ordine consiste nel fatto che la configurazione delle impostazioni potrebbe causare il riciclo del sito, dell'applicazione e dei servizi. Se possibile, eseguire la procedura di configurazione prima dell'esecuzione di qualsiasi applicazione, in modo da evitare il costo del riciclo delle applicazioni.

  2012-03-05