Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

LightSwitch comme source de données

Vous pouvez utiliser LightSwitch non seulement pour créer des applications, mais aussi en tant que niveau intermédiaire pour fournir des données à d'autres applications. Quand vous publiez des données d'application depuis LightSwitch sur un serveur web ou sur Microsoft Azure, ces données sont exposées en tant que service OData (Open Data Protocol). OData est une norme de communication avec les services de données sur le web. De nos jours, de nombreuses entreprises utilisent OData pour échanger des données entre des systèmes et des partenaires, en plus de fournir l'accès à leurs magasins de données. Étant donné qu'OData est un protocole standard, d'autres applications clientes sur presque toutes les plateformes et tous les appareils peuvent accéder aux données que vous créez ou exposez via LightSwitch.

Un service OData est automatiquement créé pour chaque source de données dans votre application, avec un point de terminaison distinct pour chaque source de données. Cette fonctionnalité s'applique non seulement aux tables que vous définissez dans la base de données intrinsèque, mais aussi à toutes les sources de données attachées, telles qu'une base de données SQL Server, une liste SharePoint ou même un autre service OData.

LightSwitch expose plusieurs points de terminaison OData

Toute logique métier et toutes les autorisations utilisateur que vous avez définies pour vos entités s'exécutent au moment de l'accès au point de terminaison, quel que soit le client qui accède aux services. Au lieu d'écrire la logique métier et de définir des autorisations utilisateur pour chaque application cliente, vous pouvez utiliser le niveau intermédiaire de LightSwitch comme emplacement pour centraliser votre code.

Quand vous déployez une application LightSwitch dans une configuration à trois niveaux (en hébergeant le niveau intermédiaire dans Internet Information Services ou Azure), les points de terminaison de service sont exposés. Les noms des services correspondent aux noms de vos sources de données. Par exemple, l'application utilisée dans la Procédure pas à pas : création d'une application Vision Clinic dans LightSwitch expose deux points de terminaison de service car elle comporte deux sources de données : la base de données ApplicationData, qui est intrinsèque et la base de données SQL PrescriptionContoso, qui est attachée. Si l'application était déployée sur un site web nommé « www.contoso.com », les points de terminaison de service seraient http://www.contoso.com/ApplicationData.svc et http://www.contoso.com/PrescriptionContoso.svc.

Au sein de chaque service, vous pouvez accéder aux jeux d'entités qui sont modélisés dans le concepteur de données. OData définit un ensemble d'opérations de requête que vous pouvez exécuter sur les données à l'aide d'un ensemble de conventions d'URI. Vous pouvez interroger un service avec une demande HTTP-GET et le service renvoie un flux avec les résultats dans la réponse. Par exemple, vous pouvez interroger le service PrescriptionContoso de Vision Clinic avec l'URI http://www.contoso.com/PrescriptionContoso.svc/Products pour renvoyer un jeu de résultats qui contient tous les enregistrements de l'entité Products.

Remarque Remarque

Pour afficher les données du flux brut dans Internet Explorer, vous devez décocher la case Activer le mode Lecture du flux.

Les requêtes OData respectent la casse ; si vous spécifiez products au lieu de Products, la requête ne renvoie aucun résultat. Vous pouvez affiner davantage vos requêtes OData de plusieurs manières. Par exemple, vous pouvez utiliser la requête http://www.contoso.com/PrescriptionContoso.svc/Products(1) pour renvoyer uniquement le produit dont la valeur ProductID est 1. Pour renvoyer tous les produits de la catégorie Lens Care, vous pouvez utilisez la requête http://www.contoso.com/PrescriptionContoso.svc/Products?Category='Lens Care’. Toutes les règles ou autorisations métier que vous avez définies dans LightSwitch continuent de s'appliquer. Par conséquent, les utilisateurs qui veulent exécuter les requêtes précédentes ont besoin d'une autorisation d'afficher les produits.

De même, le protocole OData définit une manière standard de parcourir les relations via des propriétés de navigation. Par exemple, vous pouvez utiliser la requête http://www.contoso.com/PrescriptionContoso/Products(1)/ProductRebates pour trouver des promotions pour un produit dont la valeur ProductID est 1 dans la table ProductRebates associée. OData prend en charge de nombreuses autres opérations de requête telles que OrderBy, Top, Skip et Sort.

Dans la plupart des cas, vous aurez besoin de contrôler quelles personnes peuvent accéder et mettre à jour les données dans votre service OData. Vous pouvez contrôler l'accès à une application LightSwitch en utilisant ses paramètres. LightSwitch prend en charge trois paramètres d'authentification : aucune, par formulaire et Windows.

Si vous choisissez l'authentification par formulaire, LightSwitch permet deux modes d'authentification. Le premier est un protocole personnalisé que la boîte de dialogue de connexion utilise et qui utilise une API personnalisée pour qu'un service web transmette des informations d'identification et obtienne un cookie d'authentification par formulaire. Si une demande de données ne comporte pas de cookie d'authentification par formulaire valide, LightSwitch répond par une demande HTTP de base. Cette réponse permet aux clients qui n'ont pas été développés dans LightSwitch de transmettre des informations d'identification via un protocole HTTP standard. Si vous choisissez l'authentification Windows, LightSwitch requiert qu'un utilisateur Windows authentifié fournisse des informations d'identification. Pour plus d'informations, consultez Comment : activer l'authentification dans une application cliente Silverlight.

Quel que soit le mécanisme d'authentification que vous utilisez, vous devez envisager d'utiliser une sécurité au niveau du transport sur HTTPS pour sécuriser les informations d'identification, les jetons et les données. Sans HTTPS, les formulaires, les informations d'identification de base et les jetons d'authentification par formulaire sont transportés sous forme de texte brut. L'authentification Windows est plus sécurisée, mais, sans HTTPS, toutes les données transmises entre le client et le serveur sont encore du texte brut. Pour atténuer les risques, LightSwitch possède un paramètre HTTPS dans l'Assistant Publication qui amène l'application à exiger une connexion sécurisée. Avec ce paramètre activé, les demandes sont redirigées depuis HTTP vers HTTPS, mais vous devez toujours obtenir et configurer un certificat HTTPS sur votre site web. Pour plus d'informations, consultez Considérations sur la sécurité pour LightSwitch.

En plus de sécuriser l'accès à l'application, vous pouvez également utiliser la sécurité basée sur les rôles dans LightSwitch pour restreindre l'accès à des entités spécifiques. Par exemple, vous pouvez autoriser tous les utilisateurs authentifiés à afficher les données sur les commandes, mais seuls les superviseurs peuvent afficher les données sur les salaires. Pour plus d'informations, consultez Comment : activer l'authentification dans une application cliente Silverlight.

LightSwitch ne propose pas de mécanisme direct pour masquer ou exclure des jeux d'entités ou des propriétés d'entité dans le point de terminaison OData. Quel que soit ce à quoi vous vous connectez sur la couche Données, cela sera visible sur le point de terminaison de votre service. Vous pouvez contrôler l'accès à ces ressources à l'aide des méthodes de contrôle d'accès intégrées dans le code de votre service de données. Pour plus d'informations, consultez Réalisation de tâches liées aux données à l'aide du code.

L'exemple suivant montre du code qui empêche un utilisateur de mettre à jour ou supprimer des données dans une entité Products :

namespace LightSwitchApplication
{
   public partial class PrescriptionContosoService
   {
      partial void Product_CanUpdate(ref bool result)
      {
         result = false;
      }
      partial void Product_CanDelete(ref bool result)
      {
         result = false;
      }
      partial void Product_CanInsert(ref bool result)
      {
         result = false;
      }
   }
}

LightSwitch offre également un filtrage au niveau des lignes avec la méthode EntitySet_Filter. Cette méthode vous permet de renvoyer un ensemble plus restreint d'enregistrements d'une entité. L'exemple suivant renvoie uniquement les enregistrements Customer dont la valeur TerritoryID est 5 :

private void Customers_Filter(ref Expression<Func<Customer, bool>> filter)
{
filter = e => e.TerritoryId == 5;
}

Toute application qui prend en charge OData sur n'importe quelle plateforme peut consommer des flux OData à partir de LightSwitch. Les méthodes de connexion à un flux OData varient selon l'application, mais vous fournissez en général uniquement le point de terminaison du service LightSwitch.

La documentation de LightSwitch contient plusieurs exemples d'applications qui consomment OData.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft