WCF RIA Services 1

Qu'est ce que WCF RIA Services ?

Vous souhaitez que votre Client Services RIA soit informé de la logique d'application qui réside sur le serveur, mais vous ne souhaitez pas développer et gérer cette logique à la fois sur la couche de présentation et sur la couche intermédiaire. WCF RIA Services est la solution.

Downloads :
Installation de la plateforme :
WCF RIA Services Toolkit
WCF RIA Services V1.0 SP2
Install pénible, devenv.exe met à genoux la machine pendant au moins un quart d'heure. Ensuite c'est ngen.exe qui prend la relève. Il faut patienter car la barre de progression est au max et fait penser à un problème d'installe. Mais cela finit par se terminer avec succès ...

Samples :
David Rousset
http://code.msdn.microsoft.com/How-to-open-a-WCF-RIA-171139fb

Après avoir récupéré le projet :
DemoKeynoteTechdaysEtape2
Avoir transformé le projet Silverlight 4 en Silverlight 5,
Cela ne fonctionne pas ... Une erreur d'un autre monde "Http client" attendu.

Je décide de refaire les fichiers générés du Domaine Service Class dans la partie Web :
Je supprime le deux fichiers :
FilmsService.cs
FilmsService.metadata.cs
et je recommence :
Add Domaine Service Class
FilmsService Domaine Service Class
L'application se met à tomber en marche :

Utilisation d'un Domaine Service Class en Silverlight
Étonnant non ...

Aller plus loin

C'est quoi le fichier : 
BookShelf.Web\Services\BooksDataService.svc

Dans l'application WPF (WpfBookShelf) bouton droit sur "Service References" clic sur "Add Service Reference ...". Après avoir cliqué sur "Discover" (in solution) on voit appraitre un choix de services présents dans la solution :
http://localhost:62207/Services/BooksDataService.svc

Lorsque l'on cherche à faire "Add New Item" dans BookShelf.Web\Services, pour ajouter ce type de fichier, l'icone de ce fichier ne correspond pas, cette icone correspondrait plutot à Web Service .asmx BooksDataService.svc est en fait un "WCF Data Service" et pour le lier à l'entities de l'Entity Framework, il y   a un peu de code à écrire :

WCF Data Service
Comparons les deux codes, celui généré automatiquement :

namespace BookShelf.Web.Services
{
    public class WcfDataService1 : DataService< /* TODO: put your data source class name here */ >
    {
        // This method is called only once to initialize service-wide policies.
        public static void InitializeService(DataServiceConfiguration config)
        {
            // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
            // Examples:
            // config.SetEntitySetAccessRule("MyEntityset", EntitySetRights.AllRead);
            // config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All);
            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
        }
    }
}

Et celui du projet BookShelf :

namespace BookShelf.Web.Services
{
    public class BooksDataService : DataService<BookShelf.Web.Models.BookClubEntities>
    {
        public static void InitializeService(DataServiceConfiguration config)
        {
            config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
        }
    }
}

Voilà maintenant une vision peut-être un peu plus claire des WCF RIA Services avec les deux types de class principales :
Domain Service Class directement reliée à l'ObjectContext du modèle Entity .edmx
et
WCF Data Service qui permet d'exposer un WCF Service utilisable par d'autres applications comme WPF ou Windows Phone.

Au passage on aura vu chez David Rousset :
Tous les moyens d'exposer un WCF RIA Service.

Aucun commentaire:

Publier un commentaire

Pour plus d'interactivité, n'hésitez pas à laisser votre commentaire.