Compatibilità della metabase con IIS 7 e versioni successive

di Saad Ladki

Introduzione

Il sistema di configurazione in IIS 7 e versioni successive è compatibile con le interfacce di configurazione legacy a livello di API. Supporta l'interfaccia ABO (Amministrazione Base Objects), nota anche come IMSAdminBase, nonché i provider ADSI e WMI basati su ABO in IIS 6.0. Le applicazioni e gli script esistenti possono comunque chiamare le interfacce a livello di codice in IIS 7.0 e versioni successive e continuare a funzionare, purché sia installato il componente Di compatibilità metabase di IIS

Nota

Per impostazione predefinita, questo componente non è installato.

Installazione del supporto per la compatibilità della metabase

È possibile trovare questo componente nella configurazione in Internet Information Services-Web> Management Tools -> Funzionalità di gestione IIS 6.0.

Questo componente non è installato per impostazione predefinita perché IIS non è inizialmente configurato per usarlo. Le interfacce legacy presentano alcune limitazioni e non sono ideali per l'uso dei file di configurazione distribuiti (vedere la sezione Limitazioni di seguito); è quindi consigliabile che nel tempo, e soprattutto quando si apre il sistema di configurazione per una delega sempre maggiore (ad esempio, sempre più file web.config con le impostazioni IIS in essi presenti nel sistema), i clienti considereranno la conversione di script e applicazioni legacy nel nuovo sistema e nelle relative interfacce.

È inoltre consigliabile sviluppare nuovi script e applicazioni usando le nuove interfacce, in modo che funzionino idealmente con il nuovo sistema e possano accedere alle nuove proprietà, concetti e struttura del sistema di configurazione.

Quando tutti gli script e le applicazioni legacy vengono trasferiti alle nuove interfacce, è consigliabile disinstallare la funzionalità compatibilità metabase.

Funzionamento della compatibilità tra metabase

La funzionalità di compatibilità metabase viene eseguita all'interno del servizio Metabase (IISADMIN). Intercetta tutte le chiamate di metodo a ABO. Se le informazioni nella chiamata al metodo sono correlate alla configurazione del server Web, viene eseguito il mapping al nuovo sistema. Se è correlato alla configurazione FTP, SMTP o NNTP, segue la logica regolare del sistema Metabase e termina nel file Metabase.

Si noti che anche le proprietà personalizzate incluse nella configurazione del server Web vengono mappate al nuovo sistema e salvate in modo permanente.

La decisione di mapping si basa sul nodo Metabase in questione. La configurazione del server Web è in genere in LM/W3SVC, incluse le proprietà personalizzate, con alcune aggiunte, ad esempio Mime Maps.

Il mapping viene eseguito per la conversione tra la visualizzazione ABO e la nuova visualizzazione di sistema. Ad esempio, il nuovo sistema ha un concetto di applicazioni, in ogni sito e soprattutto in tutte le directory virtuali. Il sistema legacy gestisce le applicazioni in modo diverso: si tratta semplicemente di directory virtuali con una proprietà speciale per contrassegnarle come applicazioni (AppIsolated o AppRoot).

Quando si chiama ABO per scrivere la configurazione del server Web, il componente Compatibilità metabase rende persistenti i dati in applicationHost.config. Questa operazione viene definita "write-through", perché le informazioni non vengono mantenute in memoria. Quando si chiama ABO per leggere la configurazione del server Web, il componente Compatibilità metabase lo leggerà da applicationHost.config. Questa operazione viene definita "read-through", perché le informazioni non vengono recuperate di nuovo dalla memoria.

I dati incompleti non pronti per l'utilizzo da parte del runtime del server vengono salvati in modo permanente in una sezione speciale in applicationHost.config, denominata customMetadata. Questa sezione viene usata come archivio permanente per la funzionalità compatibilità metabase e i clienti non devono mai modificare il contenuto. Un esempio di dati incompleti è quando lo script legacy imposta l'ID sito ma non le associazioni del sito. In IIS 6.0, tale chiamata avrebbe creato un oggetto sito non valido nella configurazione. In IIS 7.0 e versioni successive viene mantenuto nella sezione , che non viene utilizzata dal server. Se viene effettuata una chiamata successiva per impostare le associazioni del sito, l'oggetto sito viene considerato completo e salvato in modo permanente nell'intera sezione, in cui verrà prelevato dal runtime del server. I dati temporanei verranno rimossi da questo punto, quindi l'utente non dovrà pulire i dati rimanenti dal sistema. Se tale chiamata successiva non viene eseguita, il runtime del server non visualizzerà mai questo sito non valido, ma gli script legacy lo avranno nella visualizzazione ABO, proprio come in IIS 6.0. Dal punto di vista dello script legacy, il sistema è completamente compatibile con IIS 6.0.

Le proprietà personalizzate del server Web impostate tramite script e applicazioni legacy vengono sempre rese persistenti nella sezione . Possono essere recuperati tramite l'interfaccia legacy proprio come in IIS 6.0, quindi il sistema è completamente compatibile. Ovviamente, questo è molto diverso dal modo consigliato per estendere il sistema di configurazione IIS, quindi un altro motivo per prendere in considerazione la conversione di tali applicazioni, nel corso del tempo, per usare nuove interfacce e nuove funzionalità offerte dal sistema di configurazione IIS 7.0 e versioni successive.

Altri dati di configurazione metabase

Si noti che la configurazione FTP, SMTP e NNTP è ancora persistente nel sistema Metabase e non è stata confermata nei nuovi sistemi di configurazione IIS. Le impostazioni di configurazione per tali file possono comunque essere gestite tramite interfacce a livello di codice legacy e la modifica diretta del file di metabase.xml.

Panoramica

La maggior parte delle operazioni sulle chiavi e le proprietà metabase funziona perfettamente e l'utente viene presentato con questi concetti e nomi legacy e non con i nuovi concetti di IIS, come le sezioni di configurazione e le proprietà denominate (ABO continua a funzionare con gli ID proprietà; ADSI continua a funzionare con i nomi delle proprietà legacy.

Gli utenti legacy possono comunque usare lo schema ADSI ed estenderlo come in IIS 6.0.

Compatibilità dei file XML

La configurazione del server Web, inclusa la configurazione personalizzata che estende il server Web, viene mantenuta in system32\inetsrv\applicationHost.config e non metabase.xml. Pertanto, il supporto legacy è a livello di API e non a livello di formato di file (ed è anche per questo motivo che alcune funzionalità legacy non sono supportate). Il chiamante dell'interfaccia legacy otterrà la "visualizzazione ABO" della configurazione esattamente come in IIS 6.0 e non il nuovo formato di file o denominazione o concetti.

Un'implicazione è che i concetti come gli ACL metabase non sono supportati. Ciò è dovuto al fatto che sono strettamente correlati al formato di file Metabase. Il sistema di configurazione IIS sfrutta gli ACL di file standard nei file di configurazione. Il sistema non fornisce il mapping tra gli ACL metabase e gli ACL di file standard.

Funzionalità come i file di cronologia, il backup/ripristino e l'importazione/esportazione funzionano in modo diverso perché si basano sul nuovo sistema di configurazione. Le chiamate ABO alla configurazione di backup verranno quindi ignorate.

Funzionalità metabase legacy

Il controllo della configurazione è stato aggiunto a IIS 6.0 in Windows Server® 2003 Service Pack 1. Non è attualmente supportato da IIS 7.0 o versione successiva, perché il nuovo sistema di configurazione è progettato in modo molto diverso (ad esempio IIS 7.0 e versioni successive usano il sistema di configurazione in-proc, IIS 6.0 usa un servizio NT dedicato incapsulato dal codice utente in altri processi).

Proprietà metabase legacy

Sono supportate solo le proprietà legacy. Le proprietà di configurazione di IIS 7.0 e successive non vengono restituite all'utente legacy e nessuna delle proprietà di configurazione di .NET Framework.

Limitazioni del mapping

L'algoritmo di mapping deve occuparsi delle differenze tra i sistemi di configurazione IIS 6.0 e IIS 7.0 e versioni successive. Ad esempio, IIS 6.0 non richiedeva che i siti abbiano nomi ("commenti server"); e se sono stati assegnati nomi, non è necessario che questi nomi siano univoci. In IIS 7.0 e versioni successive ogni sito deve avere un nome univoco. Pertanto, il mapping della proprietà ServerComment precedente alla nuova proprietà Name non è semplice. L'algoritmo di mapping forza l'univocità dei nomi per ogni sito perché si tratta di un requisito del sistema di configurazione IIS 7.0 e versioni successive; a tale scopo, aggiungendo numeri ai commenti del server per creare un'univocità. Il risultato finale è che il valore effettivamente impostato per il commento del server è diverso da quello specificato dallo script.

Configurazione distribuita

Solo applicationHost.config è supportato dalla funzionalità compatibilità metabase. La configurazione nei file web.config non viene restituita all'utente legacy. I tag di posizione vengono usati in applicationHost.config per supportare la configurazione per URL.