Condividi tramite


Panoramica di MWA e MWM per IIS 7.0

di Janani Ravi

Contenuto

L'estensione dello strumento gestione IIS per gestire la configurazione personalizzata (nei file di configurazione distribuiti) nel server IIS 7.0 e versioni successive prevede l'uso di API da due assembly diversi, il Microsoft.Web.Administration.dll e il Microsoft.Web.Management.dll. Queste API devono essere usate per azioni molto diverse e hanno scopi fondamentalmente diversi. Questo documento offre una rapida panoramica delle funzionalità fornite da queste API e della relazione tra di esse.

Introduzione

Se si prevede di aggiungere l'interfaccia utente a Gestione IIS (InetMgr) per gestire le impostazioni personalizzate nei file di configurazione del server, si useranno le API di Microsoft.Web.Administration.dll e Microsoft.Web.Management.dll. La funzionalità fornita dalle API da questi assembly è fondamentalmente diversa e potrebbe generare confusione per uno sviluppatore che lo usa per la prima volta. Questo articolo fornisce una breve panoramica delle offerte di ognuno di questi assembly.

Che cosa sono Microsoft.Web.Administration e Microsoft.Web.Management?

In questa sezione viene fornita una breve introduzione a ognuna di queste.

Microsoft.web.administration

Le API Microsoft.Web.Administration (MWA) vengono compilate come wrapper di codice gestito sull'API Di amministrazione host applicazione (AHADMIN) che è una libreria di interfaccia di codice nativa. Fornisce un modo programmatico per accedere e aggiornare le informazioni di configurazione e amministrazione del server Web.

Il Microsoft.Web.Administration.dll è un modo semplice per consentire agli utenti di modificare le impostazioni nel server. Non supporta l'aggiunta di alcuna estendibilità o funzionalità dell'interfaccia utente. In realtà, diverse funzionalità dell'interfaccia utente in Gestione IIS usano questa API per gestire le impostazioni di configurazione nel back-end.

L'API MWA viene usata quando uno sviluppatore vuole scrivere un programma in codice gestito (C#, VB e così via) per configurare il server in ordine specifico. Questa API viene usata dalle applicazioni console autonome o dall'interno di una funzionalità dell'interfaccia utente in Gestione IIS.

Queste API dispongono anche del supporto per accedere alla configurazione in fase di esecuzione, ad esempio da un modulo gestito nella pipeline IIS.

Microsoft.Web.Management

Il Microsoft.Web.Management.dll ha il framework per aggiungere nuove funzionalità dell'interfaccia utente allo strumento gestione IIS. Il framework ha l'estendibilità per sviluppare nuove funzionalità e fornisce le classi di base e altre funzionalità. In questo modo le estensioni definite dall'utente possono essere cittadini di prima classe nell'interfaccia utente e hanno un aspetto identico alle funzionalità predefinite di IIS e ASP.Net.

Gestione IIS dispone di un'infrastruttura modulare in cui ogni funzionalità dell'interfaccia utente è la propria entità e deve essere registrata singolarmente con lo strumento. L'architettura client-server di Gestione IIS separa la logica, che modifica le impostazioni del server dal codice. In questo modo queste impostazioni vengono visualizzate in modo intuitivo. Ogni funzionalità nello strumento segue questo paradigma client-server. Questo viene applicato fornendo classi di base ben definite per il codice dell'interfaccia utente lato server e client nella gestione IIS.

Questa API fornisce anche il meccanismo di estendibilità per sviluppare funzionalità dell'interfaccia utente rappresentate come elenchi, griglie delle proprietà, riquadri azioni personalizzati progettati, procedure guidate modali e finestre di dialogo (per citarne alcuni).

Molte delle funzionalità dell'interfaccia utente esistenti fornite con lo strumento usano le API MWA (nel codice lato server) per accedere alla configurazione.

Microsoft.web.administration

Come accennato in precedenza, le API MWA possono essere usate per modificare le impostazioni nel server. Forniscono accesso fortemente tipizzato incorporato a siti, applicazioni e directory virtuali configurate per IIS. Queste API consentono inoltre agli utenti di generare classi fortemente tipizzate che rappresentano sezioni di configurazione specifiche e quindi creare un modo semplice per accedere alle proprietà e ad altre informazioni archiviate in queste sezioni.

Questo non è un elenco completo e questo assembly offre molto di più di quanto descritto qui.

ServerManager e siti, applicazioni e directory virtuali

Il punto di ingresso per amministrare le proprietà del server è la classe ServerManager. ServerManager include un riferimento all'elenco di tutti i siti in tale server IIS e ai singoli siti a cui si accede eseguendo l'indicizzazione nella raccolta siti.

Le applicazioni e le directory virtuali sono accessibili in modo analogo. Queste entità forniscono anche informazioni sullo stato di runtime, ad esempio se un sito viene avviato o arrestato. Aggiornamenti vengono apportate alle impostazioni predefinite per l'intero server o alle proprietà che appartengono a una singola entità ,ad esempio gli aggiornamenti a un determinato sito.

Le impostazioni del server vengono aggiornate quando CommitChanges viene chiamato in ServerManager.

Ecco una panoramica di alcune delle classi fortemente tipizzate offerte da questo assembly:

Diagramma che mostra le connessioni tra la classe ServerManager e altre classi.

Accesso ai singoli file di configurazione

Il modello di file di configurazione distribuito usato da IIS consente a un sito, a un'applicazione, a una directory virtuale o addirittura a una cartella di avere la configurazione in un file di web.config.

È possibile accedere ai singoli file di configurazione per regolare le impostazioni per una determinata entità. Il metodo ServerManager GetApplicationHostConfiguration viene usato per accedere al applicationHost.config, mentre il metodo GetWebConfiguration accetta parametri per ottenere file di configurazione specifici.

Classi di base generiche per l'estendibilità

Il sistema di configurazione IIS consente di creare una sezione in cui si specificano le proprietà rilevanti per l'applicazione. Usando le API MWA, creare classi fortemente tipizzate nel codice gestito per modificare queste impostazioni. Alcune delle classi di base che facilitano queste operazioni sono:

  • Configurazione: rappresenta un singolo file di configurazione (applicationHost.config o i file di web.config per siti e applicazioni)
  • ConfigurationElement: entità generica usata per rappresentare un elemento in un file di configurazione. Si tratta della classe di base per sezioni di configurazione, voci di raccolta, elementi annidati in una sezione e così via.
  • ConfigurationAttribute: rappresenta una proprietà all'interno di un oggetto ConfigurationElement
  • ConfigurationSection: deriva da ConfigurationElement e rappresenta una sezione definita nei file di schema IIS. Usato per accedere alle varie proprietà di una sezione.
  • Configurationelementcollection: Classe di raccolta che comprende ConfigurationElements. Deriva anche da ConfigurationElement.

Di seguito è riportata una semplice panoramica dell'estendibilità della configurazione generica:

Diagramma che mostra le connessioni in una configurazione generica.

Accesso in fase di esecuzione alla configurazione

WebConfigurationManager viene usato per l'accesso in fase di esecuzione alle impostazioni di configurazione del server. Un modulo gestito caricato nella pipeline IIS accede alle impostazioni di configurazione nel contesto specifico ,ad esempio una richiesta a un determinato sito, facendo riferimento a questa classe.

Microsoft.Web.Management

Le API Microsoft.Web.Management (MWM) sono i blocchi predefiniti per lo sviluppo di codice lato server per modificare le impostazioni di amministrazione e le funzionalità dell'interfaccia utente lato client (che consentono agli utenti di visualizzare e modificare queste impostazioni in modo intuitivo).

Di seguito sono riportate brevi descrizioni di alcune delle classi importanti in ogni spazio dei nomi. Anche in questo caso, questo non è un elenco completo e questo assembly offre molto di più che ciò che viene discusso qui.

Una panoramica generale di ciò che offre questo assembly:

Screenshot che mostra gli elenchi di classi negli spazi dei nomi.

Microsoft.Web.Management.Server

Le classi derivate dalla classe di base ModuleProvider formano il punto di ingresso per Gestione IIS per identificare un modulo dell'interfaccia utente. Questa è la classe che deve essere registrata nel administration.config per gestione IIS per visualizzarla come parte del set di funzionalità.

Le classi derivate dalla classe di base ModuleService formano la carne dell'amministrazione lato server. Queste classi eseguono la modifica effettiva delle impostazioni del server. I metodi nella classe che devono essere visibili al client dell'interfaccia utente sono contrassegnati con l'attributo ModuleServiceMethod .

ManagementUnit offre allo sviluppatore il contesto in cui viene amministrato il server. Ad esempio, SiteManagementUnit e ApplicationManagementUnit corrispondono alle connessioni del sito e alle connessioni dell'applicazione nello strumento Gestione IIS. La classe di base ModuleService espone l'oggetto ManagementUnit corrente che può essere usato per accedere alle informazioni sul contesto corrente.

ManagementConfigurationPath è una classe che rappresenta un percorso (per il server, il sito, l'applicazione o la cartella correnti). Se si amministra un sito, questo contiene il nome del sito e altre informazioni pertinenti sul sito. ManagementUnit espone l'oggetto ManagementConfigurationPath corrente.

ManagementConfiguration è una classe helper per accedere e modificare le impostazioni di configurazione nel server. Si tratta di un'astrazione molto potente per la classe Configuration nell'API MWA definita in precedenza e consente di eseguire query per sezioni senza doversi preoccupare se queste sezioni sono definite in applicationHost.config o nella radice web.config.

PropertyBag è un tipo di contenitore usato per contenere informazioni che vengono trasferite tra il client e il server. Questa operazione viene implementata come dizionario generico. Il dizionario viene serializzato in una stringa durante il trasferimento dei dati in scenari in cui il server viene amministrato in remoto.

Microsoft.Web.Management.Client

Le classi derivate dalla classe di base Module formano il punto di ingresso per una funzionalità per registrare i relativi componenti dell'interfaccia utente. Indica se l'interfaccia utente di questo modulo è una pagina (visualizzata nel riquadro centrale di Gestione IIS), un nodo nell'albero o semplicemente un'attività nel riquadro Azioni (per elencare alcuni esempi).

ModuleServiceProxy è la classe base per gli stub del metodo usati per accedere ai metodi di servizio effettivi specificati in ModuleService nel server.

HierarchyInfo rappresenta un nodo nella visualizzazione albero e supporta diverse azioni sul nodo.

La classe Connection contiene tutte le informazioni di contesto per la sessione di gestione corrente (una sessione di gestione che definisce una connessione a un server, a un sito o a un'applicazione). Fornisce helper per accedere ai servizi, creare proxy e così via.

TaskItem è la classe di base per le attività aggiunte al riquadro Azioni in Gestione IIS. Classi come MethodTaskItem, TextTaskItem e così via. derivare da questa classe di base e visualizzare collegamenti, etichette, avvisi e altre informazioni nel riquadro Azioni. Lo sviluppatore non deve scrivere codice aggiuntivo dell'interfaccia utente per visualizzare queste azioni.

Microsoft.Web.Management.Client.Win32

ModulePage è la classe di base per tutte le funzionalità che visualizzano una "pagina" nel riquadro centrale dello strumento Gestione IIS. Le classi come ModuleListPage, ModuleDialogPage e ModulePropertiesPage derivano tutti da ModulePage. Si tratta di classi di base che offrono un modo semplice per sviluppare pagine che visualizzano elenchi, finestre di dialogo e griglie delle proprietà.

La classe di base TaskForm consente agli sviluppatori di creare moduli visualizzati come finestra di dialogo modale.

WizardForm costituisce le classi di base di tutti i dialoghi. Gli sviluppatori possono specificare diverse classi derivate di WizardPage da collegare alla procedura guidata.

Microsoft.Web.Management.Client.Extensions

Le classi in questo spazio dei nomi forniscono l'estendibilità lato client usando IExtensibilityManager. Ad esempio, AuthenticationFeature ha le attività per ogni voce della funzionalità Autenticazione nello strumento InetMgr.

Questa è una breve panoramica delle funzionalità offerte dalle API Microsoft.Web.Administration e Microsoft.Web.Management a uno sviluppatore che desidera estendere la configurazione e l'interfaccia utente per aggiungere le proprie funzionalità. Per descrizioni più approfondite del funzionamento dell'estendibilità della configurazione e dell'estendibilità dell'interfaccia utente, vedere i singoli articoli che trattano questi argomenti.