Hosting del servizio dati (WCF Data Services)

Grazie a WCF Data Services è possibile creare un servizio che esponga i dati come feed OData (Open Data Protocol). Questo servizio dati è definito come una classe che eredita da DataService<T>. Questa classe fornisce la funzionalità necessaria per elaborare messaggi di richiesta, eseguire aggiornamenti sull'origine dati e generare messaggi di risposta, come richiesto da OData. Un servizio dati non può tuttavia essere associato a un socket di rete delle richieste HTTP in ingresso ed essere in attesa su di esso. Per questa funzionalità obbligatoria, il servizio dati si basa su un componente di hosting.

L'host del servizio dati esegue le attività seguenti per conto del servizio dati:

  • È in attesa delle richieste e le indirizza al servizio dati.

  • Crea un'istanza del servizio dati per ogni richiesta.

  • Richiede che il servizio dati elabori la richiesta in ingresso.

  • Invia la risposta per conto del servizio dati.

Per semplificare l'hosting di un servizio dati, WCF Data Services viene progettato per l'integrazione con Windows Communication Foundation (WCF). Il servizio dati fornisce un'implementazione WCF predefinita che funge da host del servizio dati in un'applicazione ASP.NET. È pertanto possibile ospitare un servizio dati in uno dei modi seguenti:

  • In un'applicazione ASP.NET.

  • In un'applicazione gestita che supporta servizi WCF indipendenti.

  • In un altro host del servizio dati personalizzato.

Hosting di un servizio dati in un'applicazione ASP.NET

Quando si utilizza la finestra di dialogo Aggiungi nuovo elemento in Visual Studio per definire un servizio dati in un'applicazione ASP.NET, lo strumento genera due nuovi file nel progetto. Il primo file presenta un'estensione .svc e indica al runtime WCF come creare un'istanza del servizio dati. Di seguito viene riportato un esempio di questo file per il servizio dati di esempio di Northwind creato al completamento della guida rapida:

<%@ ServiceHost Language="C#" 
    Factory="System.Data.Services.DataServiceHostFactory, 
            System.Data.Services, Version=4.0.0.0, 
            Culture=neutral, PublicKeyToken=b77a5c561934e089" 
    Service="NorthwindService.Northwind" %> 

Questa direttiva richiede all'applicazione la creazione dell'host del servizio per la classe di servizi dati denominata tramite la classe DataServiceHostFactory.

La pagina code-behind per il file .svc contiene la classe che corrisponde all'implementazione del servizio dati stesso, definita come segue per il servizio dati di esempio di Northwind:

Public Class Northwind
    Inherits DataService(Of NorthwindEntities)
public class Northwind : DataService<NorthwindEntities>

Poiché un servizio dati si comporta come un servizio WCF, si integra con ASP.NET e segue il modello di programmazione Web di WCF. Per ulteriori informazioni, vedere WCF Services and ASP.NET e Web Programming Model.

Servizi WCF indipendenti

Poiché incorpora un'implementazione WCF, WCF Data Services supporta il self-hosting di un servizio dati come servizio WCF. Un servizio può essere indipendente in tutte le applicazioni .NET Framework, quale un'applicazione console. La classe DataServiceHost, che eredita da WebServiceHost, viene utilizzata per creare un'istanza del servizio dati in un indirizzo specifico.

Il self-hosting può essere utilizzato per lo sviluppo e il test in quanto semplifica la distribuzione del servizio e la risoluzione dei relativi problemi. Questo tipo di hosting non fornisce tuttavia le funzionalità avanzate di gestione e hosting offerte da ASP.NET o da Internet Information Services (IIS). Per ulteriori informazioni, vedere Hosting in a Managed Application.

Definizione di un host del servizio dati personalizzato

Per i casi in cui l'implementazione dell'host WCF è troppo restrittiva, è anche possibile definire un host personalizzato per un servizio dati. Qualsiasi classe che implementi l'interfaccia IDataServiceHost può essere utilizzata come host di rete per un servizio dati. Un host personalizzato deve implementare l'interfaccia IDataServiceHost e deve essere in grado di gestire le responsabilità di base seguenti dell'host del servizio dati:

  • Fornire al servizio dati il percorso radice del servizio.

  • Elaborare le informazioni delle intestazioni di richieste e risposte per l'implementazione del membro IDataServiceHost appropriato.

  • Gestire le eccezioni generate dal servizio dati.

  • Convalidare i parametri contenuti nella stringa di query.

Vedere anche

Concetti

Esposizione dei dati come servizio OData (WCF Data Services)

Configurazione del servizio dati (WCF Data Services)

Altre risorse

Servizio dati (WCF Data Services)