Condividi tramite


Panoramica dei servizi

di Walter Oliver

Introduzione

L'esempio di servizi di hosting è un set di servizi implementati in C# per aiutare gli sviluppatori in organizzazioni di hosting Web che sviluppano e/o integrano il sistema di provisioning e gestione dell'hosting.

Lo scopo è illustrare tramite codice di esempio e documentazione come sfruttare la piattaforma Windows Server® 2008 per implementare tali funzionalità. Questi servizi sono stati sviluppati come parte del primo programma IIS 7.0 Technology Adopter (TAP), dove Microsoft ha lavorato con oltre 20 hoster e li ha aiutati a creare un'offerta in Windows Server 2008 e SQL 2005. Gli host hanno sfruttato questi servizi di esempio perché hanno aiutato a ridurre la curva di apprendimento.

Componenti

Nell'esempio sono presenti tre componenti principali. Ogni oggetto ha un progetto visual Studio 2008 corrispondente:

  1. Host basato sul servizio Windows. Include contratti per la gestione del provisioning e la gestione di siti Web e FTP, archiviazione contenuto, Active Directory e risorse di SQL Server. I servizi sono ospitati in un servizio Windows. Ciò è utile per la gestione delle configurazioni in cui IIS 7.0 non è installato o quando si eseguono i servizi di hosting sul Web non è desiderato.
  2. Host basato sul servizio Web. Include la stessa funzionalità della versione basata sul servizio Windows dell'host. L'unica differenza è che i servizi sono ospitati in un servizio Web Windows anziché in un'applicazione basata sul servizio Windows.
  3. Client di esempio. È un'applicazione Web semplice che chiama i contratti per ogni servizio. Lo scopo è illustrare l'uso dei servizi.

Nota

Si tratta di un'applicazione di esempio e non deve essere usata in un ambiente di produzione. Viene fornito solo a scopo di apprendimento.

Introduzione con i servizi

L'esempio di codice di Servizi di hosting è stato distribuito in due scenari diversi. Uno è tramite IIS 7.0 e l'altro è tramite un servizio Windows.

IIS 7.0

In Windows Server® 2008 e IIS 7.0, i servizi Windows Communication Foundation (WCF) vengono distribuiti come sito Web ospitato. Ciò consente di sfruttare le funzionalità, ad esempio:

  • Riciclo dei processi
  • Arresto inattiva
  • Monitoraggio dell'integrità dei processi
  • Attivazione basata su messaggi

Poiché le estensioni di hosting richiedono autorizzazioni elevate per eseguire operazioni come la creazione di directory nel file system, la creazione di database, l'aggiunta di nuovi utenti e così via, il pool di applicazioni per questo sito richiede un'identità con autorizzazioni di amministratore. Un pacchetto di installazione (HostServiceInstaller.msi) ha automatizzato questa distribuzione.

Servizio Windows

Il secondo scenario distribuisce i servizi da eseguire come servizio Windows. Questa distribuzione consente ai servizi di essere ospitati in un server che non esegue IIS. È inoltre necessario scrivere codice aggiuntivo in modo che i servizi WCF ereditano dalla classe ServiceBase e implementi OnStart (per creare e aprire un'istanza di ServiceHost) e OnStop (per chiudere l'istanza di ServiceHost). Un pacchetto di installazione (HostingWindowsService.msi) ha automatizzato questa distribuzione.

Convalida dell'installazione

Convalidare l'installazione usando la procedura seguente.

  1. Passare all'URL seguente: http://< hostheader>/webmanagementservice.svc . La pagina seguente viene visualizzata se l'installazione è riuscita, che indica che il servizio è ora ospitato.

    Screenshot che mostra la pagina Servizio gestione Web in Internet Explorer.

    Nota

    È necessario configurare un account con diritti di amministratore per l'esecuzione del servizio Windows o di un pool di applicazioni per il sito Web ospitato in IIS, poiché i servizi richiedono autorizzazioni a livello di amministratore per gestire le configurazioni IIS, nonché altre funzioni.

  2. Scaricare e installare la soluzione con il pacchetto di installazioneSolutionSetup.msi . Aprire la soluzione (IIS7GoLive.sln) in Visual Studio e trovare la struttura seguente in Esplora soluzioni.

Ambiente host

Un ambiente di hosting tipico è un ambiente eterogeneo (come illustrato nella figura seguente). La maggior parte degli host utilizza servizi Web per gestire il set diverso di server e i diversi ruoli che ogni server svolge.

Diagramma che mostra più server in un ambiente eterogeno.

Figura 1: Ambiente di hosting eterogeneo

Server diversi

L'ambiente di hosting include più versioni dei server Windows e Linux, ognuno dei quali fornisce un servizio o un ruolo specifico. Gli host riuniscono o integrano questi servizi per offrire un'offerta coerente ai propri clienti. È piuttosto comune vedere il sito Web servito dai server IIS 7.0, mentre gli account di posta elettronica possono essere serviti da un server Linux (e viceversa). Le operazioni di provisioning possono essere gestite da un server Linux, ma il sito Web viene effettuato il provisioning in Windows. Indipendentemente dal servizio offerto, le esigenze e i vincoli degli host nella gestione di questi server sono uguali.

Gli host tendono anche ad avere un'infrastruttura molto pesantemente firewalled. Alcune DELLE API disponibili nello stack Microsoft sfruttano DCOM o .NET Remoting, che richiede agli host di aprire porte aggiuntive nei firewall, questa non è una soluzione ideale.

Per risolvere i vincoli creati dagli ambienti eterogenei e dai problemi di firewall/sicurezza, la maggior parte degli host ha ora standardizzato l'uso di Servizi Web per effettuare il provisioning e gestire i server e i diversi ruoli del server.

La piattaforma Windows non invia servizi Web in modo nativo e pertanto ogni hoster deve implementare il proprio. Per risolvere questa carenza e le esigenze degli host, Microsoft ha creato un set di servizi. Questo set di servizi è Management Services for Hosters e viene considerato come "Estensioni di hosting" alle API gestite.

Servizi di gestione per host

L'esempio è costituito da un set di servizi di basso livello che forniscono funzionalità per alcuni dei ruoli server più comuni usati nello spazio di hosting. I sottosistemi del servizio sono:

  • Web
  • FTP
  • Archiviazione contenuto
  • SQL Server 2005 (& 2008)
  • Active Directory

Oltre a questi, l'esempio può essere esteso per supportare DNS, WSS e Email (Exchange o SMTP/PoP3).

Interfacce e operazioni

Tutte le operazioni su ogni sottosistema vengono raggruppate in tre interfacce:

  • Provisioning
  • Gestione
  • Query

Queste operazioni eseguono le attività che devono eseguire sia gli strumenti operativi che l'applicazione del pannello di controllo utilizzata dagli utenti finali.

Le operazioni di provisioning gestiscono principalmente la creazione di un sito, un utente, un database e così via. Queste sono operazioni che l'hoster può eseguire inizialmente per creare un ambiente per l'utente finale. Ogni creazione ha un'eliminazione corrispondente.

Dopo aver creato l'oggetto, le operazioni di gestione forniscono la possibilità di mantenere l'oggetto: ad esempio, un sito Web può essere arrestato o riavviato; i documenti predefiniti e le associazioni aggiuntive possono essere applicati al sito; e l'autenticazione del sito può essere aggiunta o modificata. Gli utenti di queste operazioni possono essere l'utente finale che gestisce il proprio sito o il reparto di supporto di un hoster applicando determinate proprietà.

Le operazioni di query visualizzano informazioni specifiche per ogni sottosistema. Il reparto di supporto di un host potrebbe chiamare i servizi in queste operazioni per monitorare l'attività del server o raccogliere informazioni sullo stato corrente dei siti.

Architettura di servizi di esempio

L'esempio viene implementato come servizi WCF (Windows Communication Framework), che vengono quindi esposti ai clienti come servizi Web usando WSHttpBinding. Di seguito è riportato un diagramma architettonico:

Diagramma che mostra le implementazioni dei contratti di servizio e del servizio, tra hosting di contratti di errore e componente di gestione hosting.

Figura 1: Architettura di esempio di Servizi di hosting

Nel diagramma si noti la coerenza del framework. Tutti i sottosistemi vengono sviluppati con lo stesso modello di contratti e operazioni. Questo framework può essere seguito da sottosistemi futuri.

Sottosistemi di hosting

Nell'esempio vengono forniti i sottosistemi seguenti:

  1. Servizio Web : questo sottosistema è per il provisioning, la gestione e la query del sito Web IIS 7.0. Oltre alla creazione del sito di base, le funzionalità aggiunte riguardano la gestione e l'esecuzione di query su siti, pool di applicazioni, documenti predefiniti, associazioni, autenticazione e altri. L'obiettivo di questo sottosistema è creare servizi Web per tutte le funzionalità esistenti in Gestione IIS. Il contratto dati per questo sottosistema si basa sullo schema xml IIS 7.0 trovato in c:\windows\system32\inetsrv\config. I servizi vengono scritti usando le API Microsoft.Web.Administration.
  2. Servizio FTP : questo sottosistema viene compilato per il nuovo server FTP7 che viene eseguito solo in Windows Server® 2008 e IIS 7.0. Il componente aggiuntivo FTP7 Server è disponibile come download gratuito. Il nuovo FTP contiene miglioramenti delle funzionalità per lo scenario di hosting condiviso. Ad esempio, un'associazione FTP può essere aggiunta a un sito Web in modo che lo stesso contenuto possa essere ospitato in entrambi i siti. Analogamente al sottosistema per il Web, i contratti dati del sottosistema sono basati anche sullo schema Dei file di configurazione.
  3. Servizio archiviazione contenuto: questo sottosistema è destinato al provisioning, alla gestione e alla query dell'archiviazione necessaria da un utente finale. Questa operazione viene usata in combinazione con la creazione del sito e la gestione dell'archiviazione di un utente per un sito. Le quote possono essere impostate e le autorizzazioni e la sicurezza applicate sia a livello di directory che di file.
  4. Servizio Active Directory : questo sottosistema è per il provisioning, la gestione e l'esecuzione di query degli archivi di appartenenza ad Active Directory. Ciò verrà usato in situazioni in cui un cliente potrebbe voler creare un'unità organizzativa, gruppi all'interno di tale unità organizzativa e gli utenti da aggiungere ai gruppi.
  5. Servizio SQL: questo sottosistema è per SQL Server provisioning, gestione e query del database. Questo viene usato in situazioni in cui un cliente sviluppa un'applicazione che richiede un database. Devono creare il database, eseguire script per creare stored procedure, creare tabelle e popolare tabelle con dati.