Questo articolo si basa su una versione beta della tecnologia. I concetti esposti sono ancora validi, ma potrebbero esserci differenze nel codice. Originariamente chiamato .NET RIA Services, ora il nome definitivo è invece WCF RIA Services.
Con l'introduzione di Silverlight, Microsoft ha fornito un nuovo modo di realizzare applicazioni, non solo per le funzionalità avanzate e innovative di grafica per la definizione del layout, ma anche per la facile propensione alla creazione di Rich Internet Application (RIA) fortemente orientate alla visualizzazione e gestione dei dati.
Con i frequenti aggiornamenti che Microsoft ha intenzione di rilasciare e ormai giunti alla versione Silverlight 3.0 (attualmente in beta), è stato rilasciata un'anteprima dei .NET RIA Services che si affiancano sia lato client a Silverlight, sia lato server alle web application del .NET Framework.
Lo scopo è quello di semplificare la Line of Business (LoB) e cioè di rendere lo sviluppatore più produttivo negli attuali strati che si devono implementare. Infatti qualsiasi sia il componente di accesso ai dati (ADO.NET, LINQ to SQL, LINQ to Entities, ecc) che si sceglie di usare, occorre sempre implementare delle logiche di business che variano dal chi e come può accedere alle informazioni alla validazione dei dati che vengono inseriti o modificati. A tutto questo poi vanno aggiunti la definizione dei servizi e dei relativi contratti che un client Silverlight, ma anche WPF, AJAX ecc, può interrogare.
Lato client Silverlight poi va creato il proxy per l'interrogazione dei servizi e vanno inoltre replicate le logiche di validazione per dare da subito un responso visivo tramite view all'utente, senza dover aspettare di inviare il tutto al servizio.
Tutto questo purtroppo è una linea di produzione molto lunga ed inoltre difficile da mantenere nel tempo. I .NET RIA Services vengono in aiuto coprendo l'area che comprende la logica di business server/client e la definizione e il consumo dei servizi.
Per beneficiarne occorre innanzitutto avere i Silverlight 3.0 Tools disponibili per Visual Studio 2008 SP1. Ad essi poi vanno aggiunti i .NET RIA Services, attualmente in preview di maggio. Probabilmente questa procedura non sarà necessaria con Visual Studio 2010 che da una parte includerà già Silverlight 3.0 e dall'altra avrà già incluso le parti server nel .NET Framework 4.0.
Definizione di un DomainService
Per una visione completa di quello che si vuole illustrare in questo articolo, si anticipa che lo scopo è realizzare un'applicazione Silverlight che permetta di leggere e di scrivere semplici messaggi, come i vecchi Guestbook. Partendo dal presupposto di avere l'accesso ai dati implementato con LINQ to Entities, si definiscono una o più classi che si vogliono esporre con il servizio all'interno di un progetto web application. In questo caso una classe Message il cui unico requisito è porre l'attributo Key sulle proprietà che identificano in modo univoco l'entità:
public partial class Message { [Key()] public int ID { get; set; } public string Text { get; set; } public string AuthorEmail { get; set; } public DateTime PostDate { get; set; } }
L'attributo Key è presente nell'assembly System.ComponentModel.DataAnnotations introdotto con il Service Pack 1 del .NET Framework 3.5. Quest'ultimo però non contiene quest'attributo perciò il setup dei NET RIA Services installa nella cartella %ProgramFiles%\Microsoft SDKs\RIA Services\v1.0\Libraries\Server una speciale versione che va referenziata. Si tratta di un temporaneo rimedio che verrà risolto con il .NET Framework 4.0.
A questo punto è possibile aggiungere un nuovo item al progetto web, incluso con il template di progetto che installa il setup, di nome "Domain Service Class".
Si presenta poi una finestra di dialogo intermedia per creare automaticamente alcuni aspetti del Domain Service. Oltre al nome è possibile indicare se abilitare l'accesso client, le funzionalità automatiche dei .NET RIA Services e se creare i classici metodi Create, Read, Update, Delete (CRUD) partendo da un ObjectContext di LINQ to Entities o un DataContext di LINQ to SQL.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.