Inside ModelVirtualCasting #5: i servizi

di Cristian Civera, in .NET 4.0,

Quarto post della serie sugli internals dell'applicazione che abbiamo mostrato nel corso della Real Code Conference 4.0 lo scorso 25 Maggio 2010 i cui sorgenti sono disponibili su Codeplex:

  1. Introduzione ai repository
  2. Architettura interna dei repository
  3. La cache
  4. Come funziona CacheThis
  5. I servizi

I servizi sono uno strato presente sin dalla prima versione di MVC e svolgono un ruolo cruciale nel nostro progetto: rappresentano il punto di accesso alle informazioni e sono l'intermediario verso il repository. Durante il RCC ho voluto quindi mostrare come, una volta preparato l'accesso al database tramite Entity Framework e modellato l'object model, sia semplice con Windows Communication Foundation esporre in molteplici modi le informazioni verso il web o verso applicativi di nostra realizzazione.

Il nostro progetto prevede infatti:

  • un'applicazione Silverlight per la consultazione delle modelle;
  • un'applicazione WPF per la gestione delle modelle e nello specifico delle foto/video;
  • alcune pagine AJAX per la consultazione delle modelle tramite REST;
  • l'esposizione delle informazioni anche mediante Open Data Protocol (OData);
  • la generazione di un feed RSS per le notizie.

Nei progetti ASPItalia.ModelVirtualCasting.WCF.Services e ASPItalia.ModelVirtualCasting.WCF.Contracts possiamo quindi trovare la definizione dei servizi e la loro implementazione. I contratti sono dei DTO, cioè un sottoinsieme delle informazioni relative alle modelle e supportano il versioning. In questo modo durante le fasi di preparazione, abbiamo potuto lavorare in modo separato, senza dover aspettare che l'OO e il repository fossero pronti ed inoltre evitiamo di rompere la compatibilità con consumer che utilizzano contratti vecchi.

I servizi sono esposti con binding basicHttpBinding (per SOAP, utilizzato dai due applicativi) e webHttpBinding (per le pagine AJAX). Il servizio è raggiungibile tramite il file ModelsManager.svc o tramite gli alias /webAPI, /feed e /odata che ho definito nel global.asax. Il servizio principale è addobbato di attribute per sfruttare REST o sfruttare anche le nuove caratteristiche di WCF 4.0. Nel web.config è infatti abilitato l'auto help page (raggiungibile all'indirizzo /webAPI/help).

L'uri odata espone un servizio WCF Data Service che si appoggia ad una sorgente personalizzata che, sempre tramite DTO, permette di accedere alle informazioni secondo lo standard. Di fatto ho messo in pratica lo script #173. Sull'uri feed risponde invece il SyndicationService, il quale restituire le news delle modelle.

Insomma, ho incluso WCF in tutte le salse (almeno quelle web) per dimostrare poi quanto in realtà è semplice. Seguirà un altro post per mostrare come con Javascript, le ASP.NET AJAX e/o jQuery possiamo interrogare questi servizi.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese