Servizi dati WCF - WCF Data Services

Servizi dati WCF
Autori originali Microsoft
Versione iniziale 11 agosto 2008 ; 12 anni fa ( 2008-08-11 )
Rilascio stabile
5.6.0
Sistema operativo Microsoft Windows , Linux , macOS
Sito web docs .microsoft .com /en-us /versioni precedenti /dotnet /wcf-data-services /hh487257(v=vs .103)

WCF Data Services (precedentemente ADO.NET Data Services , nome in codice "Astoria" ) è una piattaforma per ciò che Microsoft chiama Data Services . In realtà è una combinazione del runtime e di un servizio Web attraverso il quale vengono esposti i servizi. Include anche il Data Services Toolkit che consente di creare Astoria Data Services dall'interno di ASP.NET stesso. Il progetto Astoria è stato annunciato al MIX 2007 e la prima anteprima per sviluppatori è stata resa disponibile il 30 aprile 2007. Il primo CTP è stato reso disponibile come partedell'anteprima delle estensioni ASP.NET 3.5. La versione finale è stata rilasciata come parte del Service Pack 1 di .NET Framework 3.5 l'11 agosto 2008. Il cambio di nome da ADO.NET Data Services a WCF data Services è stato annunciato al 2009 PDC .

Panoramica

WCF Data Services espone i dati, rappresentati come oggetti Entity Data Model (EDM), tramite servizi Web a cui si accede tramite HTTP . I dati possono essere indirizzati utilizzando un URI simile a REST . Il servizio dati, quando si accede tramite il metodo HTTP GET con tale URI, restituirà i dati. Il servizio Web può essere configurato per restituire i dati in formato XML semplice , JSON o RDF+XML . Nella versione iniziale, formati come RSS e ATOM non sono supportati, anche se potrebbero esserlo in futuro. Inoltre, utilizzando altri metodi HTTP come PUT, POST o DELETE, anche i dati possono essere aggiornati. POST può essere utilizzato per creare nuove entità, PUT per aggiornare un'entità e DELETE per eliminare un'entità.

Descrizione

Windows Communication Foundation (WCF) ci viene in soccorso quando ci troviamo non in grado di ottenere ciò che vogliamo ottenere utilizzando i servizi web, ovvero il supporto di altri protocolli e persino la comunicazione duplex. Con WCF, possiamo definire il nostro servizio una volta e quindi configurarlo in modo tale che possa essere utilizzato tramite HTTP, TCP, IPC e persino Code di messaggi. Possiamo consumare servizi Web utilizzando script lato server (ASP.NET), JavaScript Object Notations (JSON) e persino REST (Representational State Transfer).

Capire le basi

Quando diciamo che un servizio WCF può essere utilizzato per comunicare utilizzando protocolli diversi e da diversi tipi di applicazioni, dovremo capire come possiamo raggiungere questo obiettivo. Se vogliamo utilizzare un servizio WCF da un'applicazione, abbiamo tre domande principali:

1. Dove si trova il servizio WCF dal punto di vista di un cliente? 2. In che modo un client può accedere al servizio, ovvero ai protocolli e ai formati dei messaggi? 3. Qual è la funzionalità che un servizio fornisce ai clienti?

Una volta che avremo la risposta a queste tre domande, la creazione e l'utilizzo del servizio WCF sarà molto più semplice per noi. Il servizio WCF ha il concetto di endpoint. Un servizio WCF fornisce endpoint che le applicazioni client possono usare per comunicare con il servizio WCF. La risposta a queste domande precedenti è ciò che è noto come ABC dei servizi WCF e di fatto sono i componenti principali di un servizio WCF. Quindi affrontiamo ogni domanda una per una.

Indirizzo: come un servizio Web, anche un servizio WCF fornisce un URI che può essere utilizzato dai client per accedere al servizio WCF. Questo URI viene chiamato come indirizzo del servizio WCF. Questo risolverà il primo problema di "dove individuare il servizio WCF?" per noi.

Binding: una volta che siamo in grado di individuare il servizio WCF, si dovrebbe pensare a come comunicare con il servizio (a livello di protocollo). L'associazione è ciò che definisce il modo in cui il servizio WCF gestisce la comunicazione. Potrebbe anche definire altri parametri di comunicazione come la codifica dei messaggi, ecc. Questo risolverà il secondo problema di "come comunicare con il servizio WCF?" per noi.

Contratto: ora l'unica domanda che rimane riguarda le funzionalità fornite da un servizio WCF. Il contratto è ciò che definisce i dati pubblici e le interfacce che il servizio WCF fornisce ai client.

Gli URI che rappresentano i dati conterranno la posizione fisica del servizio, nonché il nome del servizio. Sarà inoltre necessario specificare un EDM Entity-Set o un'istanza di entità specifica, come in rispettivamente

http://dataserver/service.svc/MusicCollection

o

http://dataserver/service.svc/MusicCollection[SomeArtist]

Il primo elencherà tutte le entità nella raccolta, mentre il secondo elencherà solo l'entità indicizzata da SomeArtist .

Gli URI possono anche specificare un attraversamento di una relazione nell'Entity Data Model. Per esempio,

http://dataserver/service.svc/MusicCollection[SomeSong]/Genre

attraversa la relazione Genre (in gergo SQL, si unisce alla tabella Genre ) e recupera tutte le istanze di Genre associate all'entità SomeSong . Nell'URI possono essere specificati anche predicati semplici, come

http://dataserver/service.svc/MusicCollection[SomeArtist]/ReleaseDate[Year eq 2006]

recupererà gli elementi indicizzati da SomeArtist e pubblicati nel 2006 . Le informazioni sui filtri e sulle partizioni possono anche essere codificate nell'URL come

http://dataserver/service.svc/MusicCollection?$orderby=ReleaseDate&$skip=100&$top=50

Sebbene la presenza di parole chiave skip e top indichi il supporto per il paging, in Data Services versione 1 non esiste alcun metodo per determinare il numero di record disponibili e quindi impossibile determinare quante pagine possono essere. La specifica OData 2.0 aggiunge il supporto per il segmento di percorso $count (per restituire solo un conteggio di entità) e $inlineCount (per recuperare un valore di pagina di entità e un conteggio totale senza un round trip separato...).

Riferimenti

link esterno