Couche intermédiaire

Cette section fournit des informations et des conseils sur l'utilisation des services de domaine, du code partagé et des entités de données dans la couche intermédiaire d'une application Services RIA WCF. Dans une application à 3 couches, la couche intermédiaire contient la logique de gestion de l'interaction entre la couche de présentation et la couche de données. Vous appliquez des règles d'entreprise et des contrôles de validation dans la couche intermédiaire pour vous assurer que les données sont dans un état acceptable. Par exemple, dans une application de ressources humaines, vous pouvez fournir une interface utilisateur qui permet aux employés de soumettre une demande de congé, mais vous devez veiller à ce que le décompte des congés d'un employé ne soit jamais inférieur à zéro. Par conséquent, vous ajoutez une logique dans la couche intermédiaire pour vérifier le décompte des congés de l'employé avant la soumission d'une demande de congé.

Pour créer les meilleures conditions d'utilisation dans un client Services RIA , tel qu'une application Silverlight, vous voulez souvent imposer les mêmes règles métier sur le client que sur le serveur. Cela exige de synchroniser le code de couche intermédiaire sur le client et le serveur. Les Services RIA vous permettent d'utiliser le .NET Framework pour écrire la logique d'application dans la couche intermédiaire. Les Services RIA génèrent automatiquement le code de la couche de présentation à partir du code de couche intermédiaire, donc ces couches sont toujours synchronisées. Cette rubrique et ses rubriques auxiliaires indiquent comment utiliser des services de domaine, du code partagé et des entités de données pour générer la couche intermédiaire.

Couche d'accès aux données

Vous pouvez travailler avec tout type de couche d'accès aux données lorsque vous développez la couche intermédiaire à l'aide des Services RIA . Par exemple, vous pouvez vous connecter aux couches d'accès aux données suivantes :

  • Entity Data Model.

  • modèle d'objet LINQ to SQL (cette option est valable uniquement si vous avez installé le Kit de ressources des RIA Services).

  • Objet Common Language Runtime (CLR).

  • Service Web qui expose les données de sa source.

Vous pouvez appliquer des contrôles de validation à votre modèle de données pour imposer des restrictions sur les valeurs de données soumises à partir de la couche de présentation.

Dans certains cas, vous devez interagir avec les données existant dans plusieurs tables. Les Services RIA fournissent une infrastructure de programmation qui prend en charge la modification des modèles de données hiérarchiques (par ex. une relation entre Order et OrderDetails), des modèles de données d'héritage (comme une relation Parent-Enfant) et des modèles de projection des données (tel que la dénormalisation de données en extrayant des valeurs des tables Client et Address sous la forme d'un seul modèle de données). Pour plus d'informations, consultez Données.

Dans votre application, vous aurez peut être besoin d'afficher des données provenant de diverses sources de données ou d'exposer une entité unique à plusieurs services de domaine. Les Services RIA WCF rendent ce scénario possible en prenant en charge des références entre des entités de types DomainContext différents. Pour plus d'informations, consultez Procédure pas à pas : Partage d'entités entre plusieurs services de domaine.

Par défaut, les Services RIA ne transmettent pas l'intégralité de l'entité d'origine avec les valeurs modifiées à la couche d'accès aux données où vérifier l'accès concurrentiel aux données. Au lieu de cela, les Services RIA stockent et retransmettent uniquement les membres marqués avec l'attribut RoundtripOriginalAttribute, l'attribut ConcurrencyCheck ou l'attribut TimeStamp. Pour plus d'informations, consultez Données.

Services de domaine

Un service de domaine est l'abstraction publique de la logique métier d'un domaine. Il inclut les entités et les opérations qui constituent la logique métier du domaine. Les Services RIA fournissent la classe DomainService comme classe de base pour toutes les classes qui servent d'interface à la logique métier dans la couche de données. Lorsque vous implémentez un service de domaine, vous spécifiez les classes d'entité que vous voulez exposer pour l'accès à partir du client. Vous spécifiez également les opérations de données autorisées via le service de domaine et vous pouvez ajouter une logique d'application au service de domaine. Pour chaque service de domaine que vous activez pour l'accès client, les Services RIA génèrent une classe DomainContext pour l'application cliente. Pour plus d'informations, consultez Services de domaine.

Pour plus d'informations sur la sécurisation de votre service de domaine, consultez Sécurité des Services RIA WCF.

Code partagé

Dans certains scénarios, vous devez ajouter du code partagé entre le projet de couche intermédiaire et le projet de couche de présentation, mais vous ne voulez pas mettre ce code dans le service de domaine ou dans une classe d'entité. Par exemple, vous aurez peut-être besoin de référencer une bibliothèque qui contient une logique d'application, utilisée dans de nombreux autres projets. Sinon, vous aurez peut-être à créer des propriétés personnalisées qui associent ou modifient des valeurs de la classe d'entité, telles qu'un nom complet au format « nom, première lettre ou prénom ». Les Services RIA vous permettent d'inclure dans la couche intermédiaire des classes ou des assemblys accessibles sans nécessiter de modification du projet client. Pour plus d'informations, consultez la rubrique Code partagé.

Génération de code client

Lorsque vous liez un projet de couche intermédiaire et un projet de couche de présentation à l'aide des Services RIA , l'infrastructure Services RIA génère automatiquement le code pour le client à partir de la couche intermédiaire. Le code client est généré pour le code de couche intermédiaire suivant :

  • chaque service de domaine qui est annoté à l'aide de l'attribut EnableClientAccessAttribute ;

  • chaque classe d'entité référencée par un service de domaine.

  • Les fichiers de code nommés selon la convention d'affectation de noms partagée (*.shared.cs ou *.shared.vb) sont copiés sans modification vers le projet client.

Ce code de couche intermédiaire est disponible pour le client via des classes de proxy client. Lorsque le code de la couche intermédiaire est modifié, les classes de proxy client sont automatiquement régénérées afin que la couche de présentation soit toujours synchronisée avec la couche intermédiaire.

Pour plus d'informations, consultez Génération de code client.