Procédure pas à pas : Création d'une bibliothèque de classes Services RIA
Dans cette procédure pas à pas, vous allez apprendre comment créer une application Silverlight qui inclut des composants réutilisables dans une bibliothèque de classes Services RIA WCF.
La bibliothèque de classes Services RIA WCF vous permet de créer une logique de couche intermédiaire et de couche de présentation réutilisable. Cependant, utiliser la bibliothèque de classes Services RIA est plus complexe que de créer une solution Services RIA .
Pour simplifier l'exemple, cette procédure pas à pas montre la bibliothèque de classes dans la même solution que l'application Silverlight. La bibliothèque de classes peut exister dans une solution distincte.
Pour en savoir plus sur les bibliothèques de classes Services RIA , consultez les sections concernées de la rubrique Création de solutions de Services RIA.
Remarque : |
---|
Si vous n'avez pas besoin de créer de composants réutilisables ou si vous voulez voir une procédure pas à pas plus générale sur la création d'une solution Services RIA , consultez Procédure pas à pas : Création d'une solution de Services RIA. |
Configuration requise
Cette procédure pas à pas, ainsi que les autres procédures du même type présentées dans la documentation des Services RIA WCF, nécessite au préalable l'installation et la configuration correctes de plusieurs programmes, tels que Visual Studio 2010 et le Runtime et SDK Silverlight, en plus des Services RIA WCF et du kit de ressources des Services RIA WCF. Ces procédures nécessitent également l'installation et la configuration de SQL Server 2008 R2 Express with Advanced Services et l'installation de la base de données AdventureWorks OLTP et LT.
Vous trouverez des instructions détaillées pour satisfaire chacune de ces conditions préalables dans les rubriques du nœud Conditions préalables pour les Services RIA WCF. Suivez ces instructions avant de poursuivre, pour être sûr de rencontrer le moins de problèmes possibles en effectuant ces procédures pas à pas des Services RIA .
Pour créer une solution Silverlight qui contient une bibliothèque de classes de WCF RIA Services
Créez un projet Services RIA dans Visual Studio 2010 en sélectionnant Fichier, Nouveau, puis Projet.
La boîte de dialogue Nouveau projet s'affiche.
Sélectionnez le modèle Application Silverlight dans le groupe Silverlight des Modèles installés et nommez le nouveau projet ExampleSilverlightApp.
Dans la boîte de dialogue Nouvelle application Silverlight, n'activez pas la case à cocher Activer les services RIA WCF pour l'application.
L'application Silverlight ne nécessite pas de lien des Services RIA entre le projet Silverlight et le projet serveur, car le lien des Services RIA existera entre les projets dans la bibliothèque de classes.
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur la solution, sélectionnez Ajouter, puis Nouveau projet.
La boîte de dialogue Ajouter un nouveau projet s'affiche.
Dans la catégorie Silverlight des Modèles installés, sélectionnez le modèle Bibliothèque de classes WCF RIA Services et nommez-le AdventureWorksClassLibrary.
Cliquez sur OK.
Votre solution contient maintenant quatre projets, comme indiqué dans l'illustration suivante.
Cliquez avec le bouton droit sur le projet ExampleSilverlightApp.Web, puis sélectionnez Ajouter une référence.
La boîte de dialogue Ajouter une référence s'affiche.
Sous l'onglet Projets, sélectionnez le projet AdventureWorksClassLibrary.Web et cliquez sur OK.
Cliquez avec le bouton droit sur le projet ExampleSilverlightApp, puis sélectionnez Ajouter une référence.
Sous l'onglet Projets, sélectionnez le projet AdventureWorksClassLibrary et cliquez sur OK.
Pour créer la bibliothèque de couche intermédiaire
Dans le projet AdventureWorksClassLibrary.Web, ajoutez un ADO.NET Entity Data Model nommé AdventureWorksModel.edmx. Pour savoir comment procéder, consultez Procédure pas à pas : Création d'une solution de Services RIA.
Dans l'Assistant EDM, incluez la table Product dans le modèle d'entité.
Générez (Ctrl+Shift+B) la solution.
Cliquez avec le bouton droit sur le projet AdventureWorksClassLibrary.Web, sélectionnez Ajouter, puis Nouvel élément.
Sélectionnez le modèle Classe DomainService et nommez-le ProductsDomainService.
Cliquez sur Ajouter.
La boîte de dialogue Ajouter une nouvelle classe de service de domaine s'ouvre.
Sélectionnez Produit parmi les modèles de données disponibles à exposer via le service de domaine et cliquez sur OK.
Générez (Ctrl+Shift+B) la solution.
Dans l'Explorateur de solutions, sélectionnez Afficher tous les fichiers dans chaque projet.
Remarquez le dossier Generated_Code existe uniquement dans le projet AdventureWorksClassLibrary. Bien qu'aucun code n'ait été généré pour le projet ExampleSilverlightApp, vous pouvez continuer à utiliser le code généré du projet AdventureWorksClassLibrary, parce qu'une référence de projet existe entre les projets AdventureWorksClassLibrary et ExampleSilverlightApp.
Pour utiliser le code généré dans le projet Silverlight
Cliquez avec le bouton droit sur le projet ExampleSilverlightApp, puis sélectionnez Ajouter une référence.
Ajoutez une référence à l'assembly System.ServiceModel.DomainServices.Client.
Pour trouver l'assembly, sélectionnez l'onglet .NET.
Dans le projet ExampleSilverlightApp, ouvrez MainPage.xaml.
Depuis la Boîte à outils, faites glisser un contrôle DataGrid dans l'élément Grid.
Un espace de noms XML et des références aux assemblys de données sont ajoutés.
Nommez le DataGrid
ProductsGrid
, comme indiqué dans le XAML suivant.<UserControl xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" x:Class="ExampleSilverlightApp.MainPage" xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="https://schemas.microsoft.com/expression/blend/2008" xmlns:mc="https://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> <Grid x:Name="LayoutRoot" Background="White"> <data:DataGrid Name="ProductsGrid"></data:DataGrid> </Grid> </UserControl>
Ouvrez le code-behind de MainPage.xaml.
Ajoutez le code suivant pour récupérer les produits.
Imports System.ServiceModel.DomainServices.Client Imports AdventureWorksClassLibrary.Web Partial Public Class MainPage Inherits UserControl Private _productContext As New ProductsDomainContext Public Sub New() InitializeComponent() Dim loadOp = Me._productContext.Load(Me._productContext.GetProductsQuery()) ProductsGrid.ItemsSource = loadOp.Entities End Sub End Class
using System.ServiceModel.DomainServices.Client; using AdventureWorksClassLibrary.Web; namespace ExampleSilverlightApp { public partial class MainPage : UserControl { private ProductsDomainContext _productContext = new ProductsDomainContext(); public MainPage() { InitializeComponent(); LoadOperation<Product> loadOp = this._productContext.Load(this._productContext.GetProductsQuery()); ProductsGrid.ItemsSource = loadOp.Entities; } } }
Ouvrez le fichier App.Config dans le projet AdventureWorksClassLibrary.Web et copiez individuellement les éléments
<connectionStrings>
,<system.serviceModel>
et<httpModules>
, ainsi que les éléments qu'ils contiennent. Collez individuellement chaque élément dans le fichier Web.config du projet ExampleSilverlightApp.Web. Le fichier Web.config doit ressembler à l'exemple suivant, mais votre fichier doit fournir des informations de connexion pertinentes pour votre environnement.<configuration> <connectionStrings> <add name="AdventureWorksLT2008Entities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="Data Source=example;Initial Catalog=AdventureWorksLT2008;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" /> </connectionStrings> <system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> </system.serviceModel> <system.web> <compilation debug="true" targetFramework="4.0" /> <httpModules> <add name="DomainServiceModule" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> </httpModules> </system.web> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer> </configuration>
Exécutez l'application (F5).