LightSwitch als Datenquelle

Mit LightSwitch können Sie nicht nur Anwendungen erstellen, sondern die Software auch als mittlere Ebene für die Bereitstellung von Daten für andere Anwendungen verwenden.Wenn Sie über LightSwitch Anwendungsdaten auf einem Webserver oder unter Windows Azure veröffentlichen, werden diese Daten als Open Data Protocol (OData)-Dienst verfügbar gemacht.OData ist ein Standard für die Kommunikation mit Datendiensten über das Internet.Viele Unternehmen nutzen OData nicht nur für die Bereitstellung des Zugangs zum Datenspeicher, sondern auch für den Datenaustausch zwischen Systemen und Partnern.Da OData ein Standardprotokoll ist, können andere Clientanwendungen auf nahezu allen Plattformen oder Geräten auf die Daten zugreifen, die Sie mithilfe von LightSwitch erstellen oder verfügbar machen.

Erstellen von OData-Diensten

Ein OData-Dienst wird automatisch für jede Datenquelle in der Anwendung erstellt, wobei für jede Datenquelle ein separater Endpunkt verwendet wird.Diese Funktion gilt nicht nur für Tabellen, die Sie in der systeminternen Datenbank definieren, sondern auch für alle angefügten Datenquellen, z. B. eine SQL Server-Datenbank, eine SharePoint-Liste oder auch einen anderen OData-Dienst.

LightSwitch stellt mehrere OData-Endpunkte bereit

Die Geschäftslogik und Benutzerberechtigungen, die Sie für die Entitäten definiert haben, werden ausgeführt, wenn auf den Endpunkt zugegriffen wird. Dabei spielt es keine Rolle, welcher Client auf die Dienste zugreift.Anstatt für jede Clientanwendung Geschäftslogik schreiben und Benutzerberechtigungen definieren zu müssen, können Sie die mittlere Ebene von LightSwitch als Ort für die Zentralisierung Ihres Codes verwenden.

Zugreifen auf LightSwitch-OData-Dienste

Wenn Sie eine LightSwitch-Anwendung als Konfiguration mit drei Ebenen bereitstellen (wobei die mittlere Ebene entweder unter Internetinformationsdienste oder Windows Azure gehostet wird), werden die Dienstendpunkte verfügbar gemacht.Die Namen der Dienste entsprechen den Namen der Datenquellen.Für die Beispielanwendung unter Exemplarische Vorgehensweise: Erstellen der Vision Clinic-Anwendung werden z. B. zwei Dienstendpunkte verfügbar gemacht, da sie über zwei Datenquellen verfügt: die systeminterne ApplicationData-Datenbank und die angefügte PrescriptionContoso-SQL-Datenbank.Falls die Anwendung beispielsweise auf einer Website mit dem Namen "www.contoso.com" bereitgestellt wird, lauten die Dienstendpunkte https://www.contoso.com/ApplicationData.svc und https://www.contoso.com/PrescriptionContoso.svc.

Innerhalb jedes Diensts können Sie zu allen Entitätsmengen navigieren, die im Daten-Designer modelliert sind.Mithilfe von OData wird eine Gruppe von Abfragevorgängen definiert, die Sie unter Verwendung von URI-Konventionen für Daten ausführen können.Sie können einen Dienst mit einer HTTP-GET-Anforderung abfragen. Der Dienst gibt als Antwort dann einen Feed mit den Ergebnissen zurück.Beispielsweise können Sie den PrescriptionContoso-Dienst der Augenklinik mit dem URI https://www.contoso.com/PrescriptionContoso.svc/Products abfragen, um ein Resultset zurückzugeben, in dem alle Datensätze der Products-Entität enthalten sind.

HinweisHinweis

Um die unformatierten Feeddaten in Internet Explorer anzuzeigen, müssen Sie das Kontrollkästchen Feedleseanzeige einschalten deaktivieren.

Bei OData-Abfragen wird die Groß-/Kleinschreibung beachtet. Wenn Sie products anstelle von Products angeben, werden für die Abfrage keine Ergebnisse zurückgegeben.Sie können OData-Abfragen auf verschiedene Arten verfeinern.Sie können beispielsweise die Abfrage https://www.contoso.com/PrescriptionContoso.svc/Products(1) verwenden, um nur das Produkt mit der ProductID "1" zurückzugeben.Um alle Produkte in der Kategorie "Lens Care" zurückzugeben, können Sie die Abfrage https://www.contoso.com/PrescriptionContoso.svc/Products?Category='Lens Care' verwenden.Es gelten weiterhin alle Geschäftsregeln bzw. Berechtigungen, die Sie in LightSwitch definiert haben.Deshalb benötigen Benutzer, die die vorherigen Abfragen ausführen möchten, die Berechtigung zum Anzeigen von "Products".

Das OData-Protokoll bietet außerdem ein Standardverfahren für die Beziehungsnavigation mithilfe von Navigationseigenschaften.Sie können beispielsweise die Abfrage https://www.contoso.com/PrescriptionContoso/Products(1)/ProductRebates verwenden, um nach Rabatten für ein Produkt zu suchen, das in der entsprechenden ProductRebates-Tabelle über die ProductID "1" verfügt.OData unterstützt auch viele andere Abfragevorgänge, wie OrderBy, Top, Skip und Sort.Weitere Informationen finden Sie unter OData: URI-Konventionen(möglicherweise in englischer Sprache).

Schützen von LightSwitch-OData-Diensten

In den meisten Fällen möchten Sie steuern, wer auf die Daten im OData-Dienst zugreifen und diese aktualisieren kann.Sie können den Zugriff für eine LightSwitch-Anwendung steuern, indem Sie die vorhandenen Einstellungen verwenden.LightSwitch unterstützt drei Authentifizierungseinstellungen: "Keine", "Formulare" und "Windows".

Wenn Sie die Formularauthentifizierung auswählen, werden in LightSwitch zwei Authentifizierungsmodi aktiviert.Ein Modus ist ein benutzerdefiniertes Protokoll, das vom Anmeldedialogfeld verwendet wird. Dabei wird eine benutzerdefinierte API für einen Webdienst genutzt, um Anmeldeinformationen zu übergeben und ein Formularauthentifizierungscookie abzurufen.Falls eine Datenanforderung kein gültiges Formularauthentifizierungscookie aufweist, antwortet LightSwitch mit einer HTTP Basic-Herausforderung.Mithilfe dieser Antwort können Clients, die nicht in LightSwitch entwickelt wurden, Anmeldeinformationen über ein HTTP-Standardprotokoll übergeben.Wenn Sie die Windows-Authentifizierung auswählen, erfordert LightSwitch die Angabe der Anmeldeinformationen eines authentifizierten Windows-Benutzers.Weitere Informationen finden Sie unter LightSwitch-Authentifizierung und Autorisierung.

Die Nutzung der Sicherheit auf Transportebene über HTTPS, um Anmeldeinformationen, Token und Daten zu schützen, ist unabhängig vom verwendeten Authentifizierungsmechanismus immer ratsam.Ohne HTTPS werden Formulare, grundlegende Anmeldeinformationen und Formularauthentifizierungstoken als reiner Text übermittelt.Die Windows-Authentifizierung ist sicherer. Ohne HTTPS werden jedoch auch hierbei alle Daten, die zwischen Client und Server übergeben werden, als reiner Text gesendet.Um dies zu verhindern, verfügt LightSwitch im Webpublishing-Assistenten über eine HTTPS-Einstellung, damit die Anwendung eine sichere Verbindung erfordert.Wenn diese Einstellung aktiviert ist, werden die Anforderungen von HTTP an HTTPS umgeleitet. Sie müssen auf Ihrer Website jedoch trotzdem ein HTTPS-Zertifikat abrufen und konfigurieren.Weitere Informationen finden Sie unter Sicherheitsüberlegungen für LightSwitch.

Zusätzlich zum Zugriffsschutz für die Anwendung können Sie die rollenbasierte Sicherheit in LightSwitch verwenden, um den Zugriff auf bestimmte Entitäten einzuschränken.Beispielsweise können Sie zulassen, dass alle authentifizierten Benutzer Bestelldaten anzeigen können, während Gehaltsabrechnungsdaten nur für Vorgesetzte zugänglich sind.Weitere Informationen finden Sie unter LightSwitch-Authentifizierung und Autorisierung.

LightSwitch enthält keinen direkten Mechanismus, mit dem Entitätsmengen oder Entitätseigenschaften für den OData-Endpunkt ausgeblendet oder ausgeschlossen werden können.Alle Daten, mit denen Sie auf der Datenebene eine Verbindung herstellen, sind auf dem Endpunkt des Diensts sichtbar.Sie können den Zugriff auf diese Ressourcen steuern, indem Sie die integrierten Zugriffssteuerungsmethoden im Datendienstcode verwenden.Weitere Informationen finden Sie unter Ausführen datenbezogener Aufgaben mithilfe von Code.

Das folgende Beispiel enthält Code, mit dem verhindert wird, das ein Benutzer Daten in einer Products-Entität aktualisiert oder löscht:

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 bietet mit der EntitySet_Filter-Methode außerdem die Filterung auf Zeilenebene.Mit dieser Methode können Sie für eine Entität eine kleinere Gruppe von Datensätzen zurückgeben.Im folgenden Beispiel werden nur Kundendatensätze zurückgegeben, die für TerritoryID den Wert "5" aufweisen:

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;
}

Verarbeiten von LightSwitch-OData-Diensten

Jede Anwendung, die OData auf einer beliebigen Plattform unterstützt, kann OData-Feeds von LightSwitch verarbeiten.Die Methoden für die Herstellung einer Verbindung mit einem OData-Feed unterscheiden sich je nach Anwendung, aber in der Regel geben Sie nur den LightSwitch-Dienstendpunkt an.

Die LightSwitch-Dokumentation enthält einige Beispiele für Anwendungen mit OData-Verarbeitung.

Siehe auch

Aufgaben

LightSwitch-Authentifizierung und Autorisierung

Exemplarische Vorgehensweise: Verfügbarmachen und Verwenden eines OData-Diensts in LightSwitch

Exemplarische Vorgehensweise: Verwenden von LightSwitch-Daten in einer Windows Store-App

Exemplarische Vorgehensweise: Verwenden von LightSwitch-Diensten in Excel mithilfe von PowerPivot

Konzepte

Verfügbarmachen von LightSwitch-Anwendungsdaten

Sicherheitsüberlegungen für LightSwitch

Ausführen datenbezogener Aufgaben mithilfe von Code