Partager via


LightSwitch comme source de données

En plus de utiliser LightSwitch pour créer des applications, vous pouvez également l'utiliser en tant que couche intermédiaire pour fournir des données à d'autres applications.Lorsque vous publiez des données d'application d' LightSwitch sur un serveur Web ou à l'azure windows, ces données sont exposées comme un service ouvert de protocole OData (open data).OData fournit une norme pour communiquer avec les services de données sur le Web.De nombreuses d'entreprise utilisent aujourd'hui OData pour échanger des données entre les systèmes et les partenaires, en plus de fournir l'accès dans leurs magasins de données.OData mesure où est un protocole standard, d'autres applications clientes dans presque n'importe quelle plateforme ou périphérique peuvent accéder aux données que vous créez ou exposez à travers LightSwitch.

Créer des services d'OData

Un service d'OData est automatiquement créé pour chaque source de données dans votre application, avec un point de terminaison distinct de 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 également à toute source de données liée, telle qu'une base de données SQL Server, une liste SharePoint, voire un service différent d'OData.

LightSwitch expose plusieurs points de terminaison OData

Toutes les règles métier et autorisations utilisateur que vous avez définies pour les entités exécuteront lorsque le point de terminaison est accessible, quel que soit le client accède aux services.Plutôt que la logique métier d'écriture et les autorisations utilisateur de définir pour chaque application cliente, vous pouvez utiliser la couche intermédiaire d' LightSwitch comme emplacement pour centraliser votre code.

Accès aux services de LightSwitch OData

Lorsque vous déployez une application d' LightSwitch dans une configuration à trois niveaux (hébergement la couche intermédiaire de les services IIS ou l'azure windows), les points de terminaison de service sont exposés.Les noms des services correspondent aux noms des sources de données.Par exemple, l'exemple d'application dans Procédure pas à pas : création d'une application Vision Clinic expose deux points de terminaison de service car il a deux sources de données : la base de données d'ApplicationData, qui est intrinsèque, et la base de données SQL de PrescriptionContoso, attachée.Si l'application ont été déployées sur un site Web nommé « www.contoso.com », les points de terminaison de service seraient https://www.contoso.com/ApplicationData.svc et https://www.contoso.com/PrescriptionContoso.svc.

Au sein de chaque service, vous pouvez accéder à tous les jeux d'entités qui sont modelés dans le concepteur de données.OData définit un ensemble d'opérations de requête que vous pouvez effectuer sur les données à l'aide d'un ensemble de conventions d'URI.Vous pouvez interroger un service avec une demande d' HTTP-GET , et le service retourne une puissance avec les résultats dans la réponse.Par exemple, vous pouvez interroger le service de PrescriptionContoso de la clinique de vision avec l'URI https://www.contoso.com/PrescriptionContoso.svc/Products pour retourner un jeu de résultats qui contient tous les enregistrements de l'entité de produits.

[!REMARQUE]

Pour afficher les données brutes d'alimentation dans Internet Explorer, vous devez désactiver la case à cocher Activer le mode Lecture du flux .

Les requêtes d'OData respectent la casse ; si vous spécifiez produits au lieu de produits, la requête ne retourne pas de résultat.Vous pouvez affiner davantage vos requêtes OData de plusieurs façons.Par exemple, vous pouvez utiliser la requête de https://www.contoso.com/PrescriptionContoso.svc/Products(1) pour retourner uniquement le produit qui a un ID de produit de 1.Pour retourner tous les produits dans la lentille se soucient la catégorie, vous pouvez utiliser la requête de https://www.contoso.com/PrescriptionContoso.svc/Products?Category='Lens Care .Toutes les règles métier ou autorisations que vous définissiez toujours dans LightSwitch s'appliquent.Par conséquent, les utilisateurs qui souhaitent exécuter des requêtes précédentes ont besoin d'autorisation d'afficher les produits.

De même, le protocole OData de définit une méthode standard pour parcourir les relations dans les propriétés de navigation.Par exemple, vous pouvez utiliser la requête de https://www.contoso.com/PrescriptionContoso/Products(1)/ProductRebates pour rechercher se réinitialise pour un produit qui a un ID de produit de 1 dans la table connexe de ProductRebates.OData prend beaucoup d'autres opérations de requête comme OrderBy, Top, Skip, et Sort.Pour plus d'informations, consultez OData : conventions d'URI.

Services de LightSwitch OData de la sécurisation

Dans la plupart des cas, vous souhaitez contrôler qui peut accéder et mettre à jour des données à votre service d'OData.Vous pouvez contrôler l'accès à une application d' LightSwitch à l'aide de ses paramètres.LightSwitch prend trois paramètres d'authentification : Aucun, formulaires, et fenêtres.

Si vous choisissez l'authentification par formulaire, LightSwitch active deux modes d'authentification.Un état est un fournisseur personnalisé qui utilise de boîte de dialogue de connexion et qui utilise une API personnalisée pour un service Web passe les informations d'identification et pour obtenir un cookie d'authentification par formulaire.Si une demande des données n'a pas un cookie valide d'authentification par formulaire, LightSwitch répond à un défi de base HTTP.Cette réponse permet aux clients qui n'ont pas été développés dans LightSwitch pour passer des informations d'authentification sur un protocole HTTP standard.Si vous choisissez l'authentification Windows, LightSwitch requiert un contrôle utilisateur authentifié de fournir des informations d'identification.Pour plus d’informations, consultez Authentification et autorisation LightSwitch.

C'est-à-dire que mécanisme d'authentification que vous utilisez, vous devez envisager d'utiliser la sécurité de niveau de transport via HTTPS pour définir les informations d'identification, les jetons, et les données.Sans S-HTTP, les formulaires, les informations d'authentification de base, et les jetons d'authentification par formulaire sont transportées en texte brut.L'authentification Windows est plus sûr, mais, sans S-HTTP, toutes les données passées entre le client et le serveur sont toujours texte brut.Pour atténuer ce problème, LightSwitch a S-HTTP plaçant dans l'Assistant Publication qui provoque l'application pour demander une connexion sécurisée.Ce paramètre est activé, les demandes sont redirigées HTTP à S-HTTP, mais vous devez obtenir et encore configurer un certificat HTTPS sur votre site Web.Pour plus d’informations, consultez Considérations sur la sécurité pour LightSwitch.

En plus de l'accès à la sécurisation de l'application, vous pouvez également utiliser la sécurité basée sur les rôles dans LightSwitch pour restreindre l'accès aux entités spécifiques.Par exemple, vous pouvez autoriser tous les utilisateurs authentifiés aux données de commande d'affichage, mais uniquement les superviseurs peuvent afficher des données de salaires.Pour plus d’informations, consultez Authentification et autorisation LightSwitch.

LightSwitch ne fournit pas de mécanisme direct pour masquer ou d'exclure des jeux d'entités ou des propriétés d'entité du point de terminaison OData d'.Celui que vous connecter à sur la couche Données soit visible sur le point de terminaison de votre service.Vous pouvez contrôler l'accès à ces ressources à l'aide de les méthodes intégrées de contrôle d'accès dans votre code de 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 affiche le code qui empêché un utilisateur de mettre à jour ou de supprimer des données à une entité de produits :

Namespace LightSwitchApplication
   Public Class PrescriptionContosoService
      Private Sub Product_CanUpdate(ByRef result As Boolean)
         result = False
      End Sub
      Private Sub Product_CanDelete(ByRef result As Boolean)
         result = False
      End Sub
      Private Sub Product_CanInsert(ByRef result As Boolean)
         result = False
      End Sub
   End Class
End Namespace
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 fournit également à filtrer au niveau de la ligne de la méthode d' EntitySet_Filter .En utilisant cette méthode, vous pouvez retourner un plus petit ensemble d'enregistrements d'une entité.L'exemple suivant retourne uniquement les enregistrements de client qui ont un TerritoryID de 5 :

Private Sub Customers_Filter(ByRef filter As Expression(Of Func(Of Customer, Boolean)))
    filter = Function(e) e.TerritoryId = 5
End Sub
private void Customers_Filter(ref Expression<Func<Customer, bool>> filter)
{
filter = e => e.TerritoryId == 5;
}

Consommer des services de LightSwitch OData

Toute application qui prend en charge OData sur n'importe quelle plateforme peut consommer des puissances de OData d' LightSwitch.Les méthodes pour se connecter à une puissance de OData varient selon l'application, mais vous fournissez généralement uniquement le point de terminaison de service d' LightSwitch .

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

Voir aussi

Tâches

Authentification et autorisation LightSwitch

Procédure pas à pas : exposition et utilisation d'un service OData dans LightSwitch

Procédure pas à pas : utilisation de données LightSwitch dans une application Windows Store

Procédure pas à pas : utilisation des services LightSwitch dans Excel avec PowerPivot

Concepts

Exposition des données d'application LightSwitch

Considérations sur la sécurité pour LightSwitch

Réalisation de tâches liées aux données à l'aide du code