Visual Studio LightSwitch

Erstellen von Geschäftsanwendungen mit Visual Studio LightSwitch

Robert Green

Beispielcode herunterladen.

Betrachten Sie diese Geschichte, die von zwei überarbeiteten Personen handelt. Andreas ist leitender Entwickler der IT-Abteilung einer großen Bank mit Hunderten von Zweigstellen. Doris ist die Leiterin einer dieser Zweigstellen. Sie möchte die Computerressourcen besser dokumentieren können. Wer hat welchen Computer, und seit wann? Wann wurden die einzelnen Drucker und Faxgeräte gekauft und gewartet? Wie viel gibt die Zweigstelle jeden Monat für Peripheriegeräte und Materialien aus?

Doris sendet Andreas eine E-Mail und bittet ihn, eine Anwendung zur Dokumentierung der Ressourcen zu erstellen. Andreas stimmt ihr zu, dass diese Anwendung benötigt ist und die Bank so viel Geld sparen könnte. Er ist jedoch bereits voll mit anderen Projekten beschäftigt und kann Doris aus Zeitgründen nicht helfen. Er weiß, dass Doris die Anwendung nun selbst in Excel oder einer anderen Endbenutzeranwendung erstellen wird. Dies bereitet ihm Kopfschmerzen, da sie wahrscheinlich eine isolierte Anwendung mit einer einzigen Schicht erstellen wird, die nicht skaliert werden kann. Was kann er jedoch tun?

Sechs Monate später: Doris gilt als Held. Sie hat die Anwendung entwickelt und konnte so die Ausgaben ihrer Zweigstelle für Computer um 25 Prozent senken. Sie konnte außerdem die Produktivität steigern, da die Ressourcen nun effizienter genutzt werden. Die Leitung der Bank entscheidet, dass alle Zweigstellen der Bank dieses System einführen sollen und die Daten zentral verwaltet werden sollen. Andreas erhält die Anweisung, dies bis Ende des Monats umzusetzen. Nun wird der Alptraum Wirklichkeit. Er muss diese Anwendung in etwas konvertieren, was dem ähnlich ist, was er entwickelt hätte, wenn er die Zeit gehabt hätte. Viel Glück, Andreas!

Einführung in Visual Studio LightSwitch

Visual Studio LightSwitch wurde für dieses allzu häufige Szenario entwickelt. LightSwitch ist ein neues Produkt der Visual Studio-Familie für Entwickler aller Kenntnissstufen, die schnell datenorientierte Geschäftsanwendungen für den Desktop, das Web und die Cloud erstellen möchten. LightSwitch vereinfacht die Entwicklung, da es die meisten Entwicklungsaufgaben für Sie übernimmt. Sie müssen keinen Code für die Interaktion mit Datenbanken schreiben, und Sie müssen die Bildschirme nicht manuell entwerfen. Sie können sich auf die Geschäftslogik konzentrieren.

LightSwitch-Anwendungen basieren auf Silverlight. Sie verwenden bewährte n-schichtige Architekturmuster auf der Basis von Model-View-ViewModel (MVVM) sowie vertraute Microsoft .NET Framework-Technologien wie Entity Framework und WCF-RIA-Dienste. LightSwitch-Anwendungen können als desktopbasierte (nicht browserbasierte) oder als browserbasierte Anwendungen bereitgestellt werden. Desktopanwendungen können die lokalen Hardwareressourcen nutzen und mit Anwendungen wie Microsoft Word und Excel interagieren. Sowohl desktopbasierte als auch browserbasierte LightSwitch-Anwendungen können auf IIS und Windows Azure bereitgestellt werden.

Das primäre Zielpublikum für LightSwitch sind Endbenutzer wie Doris, die Anwendungen entwickeln. Dies sind Information Worker, IT-Experten, Geschäftsanalysten usw., die im Rahmen ihrer Tätigkeit auch kleinere Entwicklungen erstellen. Es sind keine professionellen Entwickler, und sie möchten einen problemlosen Einstieg in die Entwicklung mit integrierten Tools, die häufige Anwendungsanforderungen verarbeiten. Außerdem wünschen sie einfache und flexible Bereitstellungsoptionen. Kurz gesagt, sie möchten schnell datenorientierte Anwendungen erstellen, die gut strukturiert sind und einfach bereitgestellt und skaliert werden können.

Vorhandene Visual Studio-Entwickler werden häufig feststellen, dass LightSwitch eine attraktive Ergänzung für ihren Satz an Tools bietet. LightSwitch wird auf der Basis von Visual Studio 2010 und höheren Versionen installiert. Visual Studio-Entwickler können LightSwitch-Anwendungen von Grund auf neu entwickeln oder eine LightSwitch-Anwendung in Visual Studio öffnen und erweitern. Wenn Doris von Anfang an LightSwitch für ihre Anwendung verwendet hätte, könnte Andreas diese nun öffnen und einfach erweitern. Andreas könnte die Anwendung in LightSwitch in wesentlich kürzerer Zeit entwickeln, als er für eine völlig neue Entwicklung benötigen würde.

In diesem Artikel stelle ich Ihnen eine LightSwitch-Anwendung vor, die von dem Bauunternehmen innerhalb der allgegenwärtigen Contoso Corporation verwendet wird. Das Unternehmen möchte Kunden und deren Projekt verwalten. Sie können die Beispielanwendung, die ich hier behandele, von der folgenden Website herunterladen: code.msdn.microsoft.com/Contoso-Construction-9f944948.

Entitäten

Der erste Schritt bei der Entwicklung einer LightSwitch-Anwendung nach der Entscheidung, ob Sie in Visual Basic oder in Visual C# kodieren, besteht im Definieren der Daten. Sie können neue Tabellen erstellen oder diese aus externen Datenquellen beziehen. Wenn Sie Tabellen von Grund auf neu erstellen, werden diese der Anwendungsdatenbank hinzugefügt. Dabei handelt es sich um eine SQL Server Express-Datenbank. Beachten Sie, dass Sie entscheiden können, auf welcher Edition von SQL Server die Daten gehostet werden, wenn Sie die Anwendung bereitstellen. Um externe Daten zu verwenden, können Sie eine Verbindung mit einer externen Datenbank wie SQL Server, SQL Azure oder jede andere Datenbank herstellen, für die Sie über einen Entity Framework-Anbieter verfügen. Sie können auch eine Verbindung mit SharePoint-Listen oder WCF-RIA-Diensten herstellen.

Die Beispielanwendung enthält die Entität Customer (Kunde), eine Tabelle, wie in Abbildung 1 gezeigt.


The Customer Entity(Zum Vergrößern auf das Bild klicken)

Abbildung 1 Die Entität Customer (Kunde)

Für jede Entitätseigenschaft können Sie nicht nur den Datentyp definieren, sondern auch festlegen, ob die Eigenschaft erforderlich, eindeutig, suchbar und per Voreinstellung in Bildschirmen angezeigt wird. Sie können auch alternative Anzeigebezeichnungen und maximale Längen angeben. Für numerische und Datumseigenschaften können Sie Mindest- und Höchstwerte angeben.

Anstatt bestimmte Eigenschaften als Zeichenketten oder Standardtypen zu belassen, können Sie integrierte Datentypen verwenden, die auch als angepasste Geschäftstypen bezeichnet werden. Die Telefon- und Faxeigenschaften in der Entität Customer (Kunde) verwenden den Datentyp Telefonnummer, und die Eigenschaft E-Mail verwendet den Datentyp E-Mail-Adresse. Die integrierten Datentypen stellten Validierung bereit und generieren benutzerfreundliche Laufzeit-Fehlermeldungen. Sie müssen keinen Code für die Validierung von Telefonnummern oder E-Mail-Adressen schreiben. Außerdem ist in den Datentyp Telefonnummer die Formatierung integriert, wie in Abbildung 2 gezeigt.

The Built-In Phone Number Data Type Provides Validation and Formatting

Abbildung 2 Der integrierte Datentyp Telefonnummer stellt Validierung und Formatierung bereit

Es gibt außerdem die Datentypen Datum, Bild und Geld, die alle über integrierte Editoren, integrierte Formatierung und integrierte Validierung verfügen.

Nachdem Sie der Entität Eigenschaften hinzugefügt haben, sollten Sie die Eigenschaft Summary (Übersicht) der Entität anzeigen. Dort wird die Entität beschrieben. Diese wird in Suchbildschirmen als Hyperlink angezeigt.

Im Bildschirm werden alle Kunden in einem Raster angezeigt. Beachten Sie, dass die Spalte Full Name (Vollständiger Name) Hyperlinks enthält. Wenn der Benutzer auf einen vollständigen Namen klickt, zeigt LightSwitch den Detailbildschirm für diesen Kunden an. Als LightSwitch-Entwickler müssen Sie hierfür keinen Code schreiben. Abbildung 3 zeigt den Bildschirm für die Suche nach Kunden.

An Entity’s Summary Property Is a Hyperlink in Search Screens

Abbildung 3 Die Übersichtseigenschaft einer Entität wird in Suchbildschirmen als Hyperlink dargestellt

Per Voreinstellung verwendet LightSwitch die erste Zeichenketteneigenschaft als Übersichtseigenschaft der Entität. Wenn es keine Zeichenketten gibt, wird die erste Eigenschaft verwendet, die keine Zeichenkette ist. In der Beispielanwendung sind Kunden Personen, und die erste Zeichenkette in der Kundenentität ist LastName (Nachname). Diese wird jedoch nicht als die Übersichtseigenschaft verwendet. Die Kundenentität verfügt über die Eigenschaft FullName (Vollständiger Name). Dies ist eine berechnete Eigenschaft. Um eine berechnete Eigenschaft zu erstellen, markieren Sie das Kontrollkästchen Is Computed (Wird berechnet) im Eigenschaftenfenster oder klicken auf die entsprechende Schaltfläche am oberen Bildschirmrand des Designers, klicken auf „Edit Method“ (Methode bearbeiten) und schreiben anschließend den folgenden Code, um den Wert der Eigenschaft zu berechnen (ich verwende hier Visual Baisc):

Private Sub FullName_Compute(ByRef result As String)
  result = Me.LastName + ", " + Me.FirstName
End Sub

Um FullName als Übersichtseigenschaft festzulegen, wählen Sie die Kundenentität aus und geben FullName als Übersichtseigenschaft an.

Berechnete Eigenschaften werden nicht in einer Datenbank gespeichert. Sie werden zur Laufzeit als Eigenschaften einer Entität berechnet. Sie können berechnete Eigenschaften für die einfache Verkettung von Namen und Adressen sowie für berechnete Werte wie den bisherigen Jahresumsatz oder den Gesamtbetrag der noch nicht bezahlten Rechnungen verwenden.

Um eine Beziehung zwischen Entitäten zu erstellen, klicken Sie im Daten-Designer auf die Schaltfläche für Beziehungen. Wählen Sie im Dialogfeld für das Hinzufügen neuer Beziehungen die beiden Entitäten, den Typ der Beziehung und das Löschverhalten aus. Für die Kundenentität ist eine 1:n-Beziehung mit den Projekt- und Terminentitäten definiert. Daher verfügt die Kundenentität über die Eigenschaften "Projekte“ und „Termine“. Bei diesen beiden Eigenschaften handelt es sich um Auflistungen.

Sie können nicht nur Beziehungen zwischen Entitäten in einer einzelnen Datenquelle erstellen, sondern auch zwischen Entitäten aus unterschiedlichen Datenquellen. LightSwitch verarbeitet den Abruf sämtlicher Daten, deren Darstellung für die Benutzer und das Speichern von Änderungen. Die Erstellung föderierter Beziehungen ist eine einzigartige und überzeugende Funktion von LightSwitch.

Angepasste Validierungsregeln

Zusätzlich zu den Validierungen, die von den integrierten Geschäftsregeln bereitgestellt werden, können Sie auf der Bildschirm- und der Entitätsstufe angepassten Code für die Geschäftslogik hinzufügen. Der Code für die Bildschirmvalidierung wird nur auf dem Client ausgeführt und validiert Bildschirmeigenschaften und -daten. Der Code für die Validierung von Entitätseigenschaften wird zuerst auf dem Client und anschließend in der mittleren Schicht ausgeführt. Die Benutzer erhalten unmittelbar Feedback und können Fehler korrigieren, bevor die Daten an die mittlere Schicht gesendet werden. Die Validierungslogik wird auch auf der mittleren Schicht ausgeführt, um Situationen zu behandeln, in denen Daten durch andere Benutzer geändert wurden. Dies ist ein bewährtes Verfahren im n-Stufen-Design.

Um Validierungscode für eine Entitätseigenschaft zu schreiben, wählen Sie die Eigenschaft im Entitäts-Designer und anschließend die entsprechende Methode aus der Dropdownliste der Schaltfläche für das Erstellen von Code aus: beispielsweise Address1_Validate (wie in Abbildung 4 gezeigt).

Abbildung 4: Die Methode Address1_Validate

Private Sub Address1_Validate(results As EntityValidationResultsBuilder)
  'Warn the user if the Address is empty
  If Me.Address1 = "" Then
    results.AddPropertyResult(
      "Address should not be empty. " & 
      "Construction project cannot begin unless an address is supplied.", 
      ValidationSeverity.Warning)
  End If
End Sub

EntityValidationResultsBuilder ist ein Container für die Validierungsergebnisse. Er kann Validierungsinformationen, -warnungen und -fehler enthalten. Die Validierungsinformationen und die Warnungen sind Informationen für den Benutzer und hindern diesen nicht daran, die Daten zu speichern. Wenn die Auflistung Validierungsfehler enthält, kann der Benutzer die Daten nicht speichern.

In der gleichen Anwendung wird der Benutzer gewarnt, wenn die Adresse leer ist. Der Benutzer kann die Daten dennoch speichern. Der Code für die Validierung der Postleitzahl (wie in Abbildung 5 gezeigt) ist jedoch nicht gleich fehlertolerant.

Abbildung 5: Die Methode ZIP_Validate

Private Sub ZIP_Validate(results As EntityValidationResultsBuilder)
  If Me.ZIP <> "" Then
    'Enter the dash if not supplied and is 9 digits long
    If Me.ZIP.Length = 9 Then
      Me.ZIP = Me.ZIP.Substring(0, 5) + "-" + Me.ZIP.Substring(5)
    End If
    'Make sure valid zip code (5 or 5+4 format)
    If Not System.Text.RegularExpressions.Regex.IsMatch(
      Me.ZIP, "^\d{5}$|^\d{5}-\d{4}$") Then
      results.AddPropertyError(
        "Please enter a valid US ZIP code. (ex. 98052 or 98052-1234)")
    End If
  End If
End Sub

Wenn die Postleitzahl nicht im korrekten Format eingegeben wurde, fügt der Code einen Validierungsfehler hinzu. Der Benutzer kann die ungültigen Daten nicht speichern. Abbildung 6 zeigt die Ergebnisse, wenn die Adresse nicht eingegeben wird und die Postleitzahl ungültig ist. Die leere Adresse generiert eine Warnung, und die ungültige Postleitzahl generiert einen Fehler.

The Empty Address Generates a Warning While the Invalid ZIP Code Generates an Error

Abbildung 6 Die leere Adresse generiert eine Warnung, und die ungültige Postleitzahl generiert einen Fehler

Bildschirme

Nach dem Definieren der Entitäten besteht der nächste Schritt bei der Entwicklung einer LightSwitch-Anwendung im Entwerfen von Bildschirmen. LightSwitch enthält die folgenden vordefinierten Bildschirmvorlagen:

  • Detailsbildschirm In diesem Bildschirm wird eine einzelne Entität angezeigt. Er kann aufeinander bezogene Daten in einem Raster enthalten.
  • Bildschirm für bearbeitbare Raster Dieser Bildschirm ermöglicht die Bearbeitung eines oder mehrerer Elemente in einem Raster.
  • Listen- und Detailbildschirm In diesem Bildschirm wird eine Auflistung von Elementen in einer Liste angezeigt. Durch die Auswahl eines Elements aus der Liste werden die Details für dieses Element angezeigt.
  • Bildschirm für neue Daten In diesem Bildschirm erstellen Sie neue Elemente. Der Bildschirm kann auch ein Raster bereitstellen, um verwandte Daten zur gleichen Zeit hinzufügen zu können.
  • Bildschirm für die Datensuche In diesem Bildschirm werden die Daten angezeigt, die von einer Abfrage zurückgegeben werden. Jedes Element enthält einen Link für die Anzeige des Detailbildschirms der Entität.

Diese Vorlagen stellen einen guten Ausgangspunkt für Ihre Bildschirmlayouts dar. Um einen Bildschirm zu erstellen, können Sie mit der rechten Maustaste auf die Lösung oder den Bilschirmknoten im Solution Explorer klicken und die Option für das Hinzufügen von Bildschirmen auswählen. Sie können auch im Daten-Designer auf die Bildschirmschaltfläche klicken. Wenn Sie einen Bildschirm erstellen, wählen Sie den Bildschirmtyp sowie die primären Bildschirmdaten aus. Sie können eine Entität oder eine Abfrage auf der Basis einer Entität auswählen. Anschließend können Sie verwandte Daten angeben, die im Bildschirm angezeigt werden sollen.

Wenn Sie in Visual Studio einen Silverlight-Bildschirm öffnen, werden Ihnen eine Entwurfsleinwand und XAML angezeigt. Wenn Sie einen Bildschirm in LightSwitch öffnen, wird Ihnen der Bildschirm-Designer angezeigt, wie in Abbildung 7 gezeigt.

The Screen Designer Shows a Hierarchical View of the Controls on a Screen

Abbildung 7 Der Bildschirm-Designer zeigt eine hierarchische Ansicht der Steuerelemente in einem Bildschirm an

Links im Bildschirm wird die Liste der Bildschirmelemente angezeigt. Diese enthält die Elemente, die im Bildschirm verfügbar sind. Sie enthält die Datenelemente, die in den einzelnen Entitäten des Bildschirms enthalten sind. Sie enthält außerdem Methoden wie Close (Schließen), Refresh (Aktualisieren) und Save (Speichern). Rechts befindet sich die Inhaltsstruktur. Dabei handelt es sich um eine hierarchische Ansicht der Steuerelemente des Bildschirms und der mit diesen verbundenen Daten. Sie können dem Bildschirm auch Datenelemente hinzufügen, wenn erforderlich. Sie können die Bildschirmsteuerelemente neu anordnen und das Bildschirmlayout verändern. Möglicherweise möchten Sie nicht, dass die Kundenliste in der oberen Hälfte des Bildschirms und die Bestellungen in der unteren Hälfte angezeigt werden, sondern dass die Kundenliste links und die Bestellungen rechts angezeigt werden. Sie können außerdem verschiedene Eigenschaften von Steuerelementen angeben, wie den Text von Beschriftungen, die Anzeige von Beschriftungen, die horizontale und vertikale Ausrichtung sowie die Höhe und Breite.

Nach der Erstellung mindestens eines Bildschirms können Sie die Taste F5 drücken und die Anwendung ausführen. Der erste Bildschirm, den Sie erstellen, ist der Startbildschirm der Anwendung. Dies können Sie auf der Registerkarte für die Navigation des Anwendungs-Designers ändern. LightSwitch-Anwendungen enthalten automatisch eine Anwendungsshell, ein Navigationsmenü, ein Menüband, einen Bereich mit Registerkarten für Bildschirme und Datenbindung, wie in Abbildung 8 gezeigt.

LightSwitch Applications Automatically Include an Application Shell, Menu and Ribbon

Abbildung 8 LightSwitch-Anwendungen enthalten automatisch eine Anwendungsshell, ein Navigationsmenü und ein Menüband

Die Anwendung verfügt außerdem über integrierte Gültigkeitsprüfungen und Parallelitätsbehandlung. LightSwitch übernimmt die gesamten Routineaufgaben für eine typische datenorientierte Anwendung für Sie, sodass Sie keinen Code dieser Art schreiben müssen.

Die LightSwitch-Bildschirmvorlagen stellen spezifische Funktionen bereit. Beispielsweise enthält ein Bildschirm ein Raster für die Anzeige von Elementen und eine Schaltfläche, um diese Elemente nach Excel zu exportieren. Sie können weitere Elemente hinzufügen, wenn erforderlich. Der Bildschirm für die Suche nach Kunden (wie in Abbildung 8 gezeigt) verfügt über zwei weitere Schaltflächen: die Schaltfläche für das Hinzufügen von Kunden im Menüband und die Schaltfläche „Hinzufügen“ in der Kopfzeile des Rasters.

Um dem Menüband eine Schaltfläche hinzuzufügen, können Sie mit der rechten Maustaste im Bildschirm-Designer auf die Bildschirmbefehlsleiste klicken und die Schaltfläche „Hinzufügen“ auswählen. Alternativ können Sie die Bildschirmbefehlsleiste erweitern und in der Dropdownliste der Schaltfläche „Hinzufügen“ den Eintrag „Neue Schaltfläche“ auswählen (wie in Abbildung 9 gezeigt). Um dem Raster eine Schaltfläche hinzuzufügen, verwenden Sie die Befehlsleiste des Rasters.

The Screen Command Bar Contains the Buttons in the Application’s Ribbon

Abbildung 9 Die Bildschirmbefehlsleiste enthält die Schaltflächen im Menüband der Anwendung

Wenn Sie eine Schaltfläche hinzufügen, fordert LightSwitch Sie auf, den Namen der Methode anzugeben, die ausgeführt wird, wenn der Benutzer auf diese Schaltfläche klickt. Sie können mit der rechten Maustaste auf die Schaltfläche klicken und die Option für das Bearbeiten des Ausführungcodes auswählen. Anschließend können Sie den Code schreiben, der ausgeführt wird. Beide Schaltflächen im Bildschirm für die Suche nach Kunden rufen die Methode gridAddAndEditNew_Execute auf, die die Methode ShowCreateNewCustomer aufruft. Dies ist eine in LightSwitch integrierte Methode, die den Bildchirm für das Erstellen neuer Kunden anzeigt, wie hier gezeigt:

Private Sub gridAddAndEditNew_Execute()
  Me.Application.ShowCreateNewCustomer()
End Sub

Wie die Entitäten, verfügen auch die Bildschirme über eine Reihe von Ereignissen, die Sie verarbeiten können, wie in Abbildung 10 gezeigt.

Access Screen Event Handlers via the Write Code Button

Abbildung 10 Zugriff auf die Bildschirmereignishandler über die Schaltfläche für das Erstellen von Code

Das Ereignis „Run“ (Ausführen) wird aufgerufen, wenn eine Anforderung zum Anzeigen eines Bildschirms empfangen wird. Der Handler für das Ereignis „Run“ enthält ein behandeltes Argument. Wenn Sie dieses als „wahr“ festlegen, können Sie verhindern, dass der Bildschirm fortgesetzt wird. Das Ereignis „InitializeDataWorkspace“ wird ausgelöst, bevor die Bildschirmdaten abgerufen werden. Dies ist eine gute Stelle für den Initialisierungscode des Bildschirms. Die anderen Ereignisse sind selbsterklärend. Sie könnten vielleicht annehmen, dass Ereignisse wie „Run“ oder „Saving“ gute Stellen für Code sind, der überprüft, ob der Benutzer Aktionen wie das Öffnen des Bildschirms oder das Speichern von Daten durchführen kann. Sie sollten diesen Code jedoch in den entsprechenden Zugriffssteuerungsmethoden platzieren, wie z. B. CanRun auf Bildschirmebene oder CanUpdate auf Entitätsebene. Die Zugriffssteuerung ist ein wichtiges Feature von LightSwitch-Anwendungen, das ich später behandeln werde.

Die Entwicklung mit LightSwitch ist absichtlich hoch iterativ. Die Entwickler können die Bildschirme zur Laufzeit im Debugmodus bearbeiten, indem sie auf dem Menüband auf die Schaltfläche für das Entwerfen von Bildschirmen klicken. Dadurch wird in den Anpassungsmodus des Bildschirms gewechselt, wie in Abbildung 11 gezeigt.

Users Can Edit Screens at Run Time and View Their Changes Immediately
(Zum Vergrößern auf das Bild klicken)

Abbildung 11 Benutzer können Bildschirme zur Laufzeit bearbeiten und die Änderungen sofort anzeigen

Die Benutzer können die Steuerelemente neu anordnen und die Eigenschaften festlegen, auf „Speichern“ klicken und die Änderungen sofort anzeigen.

Angesichts der Tatsache, dass eine LightSwitch-Anwendung eine Silverlight-Anwendung ist, fragen Sie sich vielleicht, wo die XAML ist. Es ist ein primäres Ziel von LightSwitch, die Erstellung von Anwendungen zu vereinfachen. Daher wird zur Entwurfszeit keine XAML angezeigt. Stattdessen generiert LightSwitch die XAML auf der Basis des Bildschirmentwurfs zur Laufzeit. Dies vereinfacht die Erstellung von Anwendungen durch Benutzer erheblich. Wenn Sie ein erfahrener Silverlight-Entwickler sind, gehen Sie vielleicht davon aus, dass dies Ihre Fähigkeit zum Entwerfen der gewünschten Bildschirme beeinträchtigt.

Dies ist möglicherweise richtig, wenn Sie lediglich Visual Studio LightSwitch verwenden. Sie sind wesentlich flexibler, wenn Sie LightSwitch auf der Basis von Visual Studio 2010 Professional oder höher verwenden. Sie können eigene Silverlight-Benutzersteuerelemente erstellen und diese den LightSwitch-Bildschirmen hinzufügen sowie Steuerelemente verwenden, die nicht in LightSwitch enthalten sind. Sie können auch zusammengesetzte Steuerelemente oder sogar ganze Bildschirme erstellen, die angepasste Logik enthalten. Zusätzlich können Sie diese Benutzersteuerelemente an Bildschirmentitäten binden.

Eine weitere Möglichkeit zum Hinzufügen von Funktionalität zu LightSwitch-Anwendungen besteht in der Verwendung von Erweiterungen. Es gibt sechs Typen von LightSwitch-Erweiterungen: Steuerelemente, Bildschirmvorlagen, Geschäftstypen, Shells (Aussehen und Gestalt der Anwendung), Themen (Farben und Pinsel für eine Shell) sowie angepasste Datenquellen. Sie benötigen Visual Studio 2010 Professional oder höher sowie das Visual Studio 2010 SDK, um eine LightSwitch-Erweiterung zu erstellen. Jeder kann diese jedoch in den eigenen LightSwitch-Projekten verwenden, unabhängig von der installierten Version.

Erweiterungen werden als VSIX-Pakete verteilt. Wenn Sie eine Erweiterung für eine große Zahl von Benutzern verfügbar machen möchten, können Sie diese zur Visual Studio Gallery hochladen. Anschließend wird sie im Extension Manager innerhalb von LightSwitch angezeigt. Nach der Installation einer Erweiterung können Sie diese auf der Registerkarte Erweiterungen des Anwendungs-Designers aktivieren. Die Beispielanwendung Contoso Construction verwendet eine Erweiterung für Bing-Kartensteuerelemente, um den Standort von Kunden anzuzeigen, wie in Abbildung 12 gezeigt.

You Can Use LightSwitch Extensions, Such as the Bing Map Control Extension, to Provide Additional Functionality in Your Applications

Abbildung 12Sie können LightSwitch-Erweiterungen wie die Erweiterung für Bing-Kartensteuerelemente verwenden, um Ihren Anwendungen zusätzliche Funktionen bereitzustellen

Abfragen

Alle Bildschirme basieren auf Abfragen. Die Abfrage für einen Detailbildschirm gibt eine Zeile zurück. Die Abfrage für den Bildschirm für Listen und Details gibt eine übergeordnete Zeile sowie sämtliche verwandten untergeordneten Zeilen zurück. Die Abfrage für den Bildschirm für die Suche oder das bearbeitbare Raster gibt per Voreinstellung sämtliche Zeilen zurück. Beachten Sie, dass die Rückgabe einer Anzahl von Zeilen nicht die Rückgabe aller Zeilen zur gleichen Zeit bedeutet. Die Abfragen unterstützen Paging per Voreinstellung. Um das Paging zu konfigurieren, wählen Sie die Abfrage im Bildschirm- oder Abfrage-Designer aus und ändern die Pagingeigenschaften.

Sie können die Daten filtern, die von einer Bildschirmabfrage zurückgegeben werden, die eine Auflistung von Entitäten zurückgibt. Hierzu klicken Sie im Bildschirm-Designer auf „Abfrage bearbeiten“. Im Abfrage-Designer können Sie anschließend die Where- und Sort-Klauseln hinzufügen. Sie können auch Abfragen Parameter hinzufügen.

Bildschirmabfragen sind für einen bestimmten Bildschirm spezifisch. Obwohl die Abfrage eines Bildschirms schnell und einfach verändert werden kann, ist es besser, eine wieder verwendbare Abfrage zu erstellen. Beispielsweise möchten Sie im Bildschirm für die Suche nach Kunden die Kunden nach dem Namen des Unternehmens sortieren. Die Kunden werden jedoch möglicherweise auch einer modalen Fensterauswahl im Bildschirm angezeigt, in der Sie neue Termine erstellen können, und in einem Textfeld im Bildschirm, das automatisch vervollständigt wird und in dem die Kunden und ihre Projekte angezeigt werden. Anstatt den drei Abfragen in drei verschiedenen Bildschirmen die gleiche Sortierung hinzuzufügen, können Sie eine einzige Abfrage erstellen und in den drei Bildschirmen verwenden.

Um eine Abfrage zu erstellen, klicken Sie mit der rechten Maustaste in den Solution Designer und wählen „Abfrage hinzufügen“ aus. Sie können die Abfrage benennen und anschließend Filter, Sortierung und Parameter hinzufügen. Die Abfrage für aktuelle Termine, die in Abbildung 13 gezeigt wird, gibt alle Termine nach Startzeit sortiert zurück, für die die Startzeit jetzt oder später ist.

You Can Filter the Results of a Query and Specify the Sort Order

Abbildung 13 Sie können die Ergebnisse einer Abfrage filtern und die Sortierreihenfolge angeben

Wenn Sie eine Abfrage erstellt haben, können Sie sie als Grundlage für Bildschirme verwenden. Sie können Sie auch als Grundlage für zusätzliche Abfragen verwenden. Beispielsweise beginnt in der gleichen Anwendung die Abfrage CurrentAppointmentsByEmployee mit der Abfrage CurrentAppointments. Anschließend werden die Ergebnisse gefiltert und nur die Termine für einen bestimmten Mitarbeiter zurückgegeben.

Zugriffssteuerung

Die Zugriffssteuerung ermöglicht Ihnen die Kontrolle darüber, welche Aktionen die Benutzer in einer Anwendung durchführen können. LightSwitch verwendet die ASP.NET-Standardmitgliedschaft und Rollenanbieter, um sowohl die Windows- als auch die Forms-Authentifizierung zu aktivieren. Sie können Benutzer für die Durchführung von Aktionen autorisieren, indem Sie Genehmigungen erstellen, die Benutzern zuweisen und anschließend im Code angeben, ob der Benutzer über eine bestimmte Berechtigung verfügt.

Per Voreinstellung können in einer LightSwitch-Anwendung alle Benutzer alle Aktionen durchführen. Um dies zu ändern, öffnen Sie den Anwendungs-Designer und wählen die Registerkarte für die Zugriffssteuerung aus, wie in Abbildung 14 gezeigt. Sie können anschließend die Windows- oder die Forms-Authentifizierung auswählen. Die integrierte Berechtigung für die Administration der Sicherheit steuert, ob ein Benutzer die Bildschirme für die Administration der Sicherheit zur Laufzeit anzeigen kann. Sie verwenden diese Bildschirme, um Benutzern Berechtigungen zuzuweisen und Benutzer hinzuzufügen, wenn erforderlich. Sie können zusätzliche Berechtigungen erstellen, wenn gewünscht. Während der Entwicklung können Sie die Berechtigungen deaktivieren, indem Sie die Markierung für das Kontrollkästchen „Granted“ (Gewährt) während des Debuggens entfernen. So können Sie die Anwendung mittels verschiedener Kombinationen von Berechtigungen testen.

Specify Windows or Forms Authentication and Then Specify Additional Permissions

Abbildung 14 Legen Sie die Authentifizierung durch Windows oder Forms fest, und geben Sie anschließend zusätzliche Berechtigungen an

Sie können im Code Berechtigungen für die Entitäts-, die Bildschirm- und die Abfrageebene festlegen. Entitäten stellen die Methoden CanDelete, CanInsert, CanRead und CanUpdate bereit, die alle auf dem Server ausgeführt werden. Sie können auf diese über die Dropdownliste der Schaltfläche für das Erstellen von Code im Daten-Designer zugreifen. Sie können die entsprechende Berechtigung markieren. Wenn der Benutzer nicht für die verknüpfte Aktion berechtigt ist, wird der Wert „false“ zurückgegeben. In der Beispielanwendung können z. B. nur Administratoren die Daten von Mitarbeitern ändern. Dies wird durch den folgenden Code gewährleistet:

Private Sub Employees_CanDelete(ByRef result As Boolean)
  result = Me.Application.User.HasPermission(
    Permissions.SecurityAdministration)
End Sub
Private Sub Employees_CanInsert(ByRef result As Boolean)
  result = Me.Application.User.HasPermission(
    Permissions.SecurityAdministration)
End Sub
Private Sub Employees_CanUpdate(ByRef result As Boolean)
  result = Me.Application.User.HasPermission(
    Permissions.SecurityAdministration)
End Sub

Bildschirme stellen die Methode CanRun bereit, die auf dem Client ausgeführt wird. Sie können diese Methode verwenden, um das Öffnen eines Bildschirms zu verhindern, wenn der Benutzer die Daten des Bildschirms nicht anzeigen oder ändern darf. Der folgende Code stellt sicher, dass nur Administratoren den Bildschirm für die Verwaltung von Mitarbeitern öffnen können:

Private Sub ManageEmployees_CanRun(ByRef result As Boolean)
  result = Me.User.HasPermission(Permissions.SecurityAdministration)
End Sub

Während des Bereitstellungsprozesses geben Sie den Benutzernamen und das Kennwort des Administrators an. Der Anwendungsadministrator erstellt zur Laufzeit Rollen und weist diesen Benutzer zu. Anschließend weist der Administrator den Rollen Berechtigungen zu.

Bereitstellung

LightSwitch stellt drei Modelle für die Bereitstellung von Anwendungen bereit: eine zweischichtige Desktopanwendung, eine dreischichtige Desktopanwendung und eine dreischichtige Webanwendung.

Eine zweischichtige Desktopanwendung wird vollständig auf dem Computer des Endbenutzers als nicht browserbasierte Silverlight-Anwendung ausgeführt. Die Benutzeroberfläche und die Anwendungskomponenten der mittleren Schicht werden lokal ausgeführt. Die Anwendung stellt die Verbindung zur Datenbank direkt in Form einer Client-Server-Beziehung her. Damit wird ein Webserver überflüssig. Die Anwendung kann auf lokale Ressourcen zugreifen, einschließlich COM oder lokalen Dateien. Die Unterstützung für COM ermöglicht das Steuern von Anwendungen wie Word oder Excel. Beachten Sie, dass Desktopanwendungen Windows voraussetzen.

Eine dreischichtige Desktopanwendung wird als nicht browserbasierte Silverlight-Anwendung ausgeführt, die auf IIS oder Windows Azure gehostet wird. Die Benutzeroberfläche wird auf dem Computer des Endbenutzers ausgeführt, die Komponenten der mittleren Schicht werden auf dem Hostserver ausgeführt.

Eine dreischichtige Webanwendung wird als browserbasierte Silverlight-Anwendung ausgeführt, die auf IIS oder Windows Azure gehostet wird. Die Benutzeroberfläche ist browserbasiert, die Komponenten der mittleren Schicht werden auf dem Hostserver ausgeführt. Webanwendungen haben keinen Zugriff auf COM oder lokale Ressourcen. Sie haben jedoch die größte Bandbreite über Macintosh- und Windows-Betriebssysteme sowie mehrere Browser hinweg.

Um eine Anwendung bereitzustellen, müssen Sie sie zunächst veröffentlichen. Um die Anwendung zu veröffentlichen, klicken Sie im Anwendungs-Designer auf der Registerkarte Anwendungstyp auf die Schaltfläche für das Veröffentlichen, wie in Abbildung 15 gezeigt.

Specify Whether the Application Is a Two-Tier Desktop Application, Three-Tier Desktop  Application or Three-Tier Web Application

Abbildung 15 Geben Sie an, ob es sich bei der Anwendung um eine zweischichtige Desktopanwendung, eine dreischichtige Desktopanwendung oder um eine dreischichtige Webanwendung handelt

Der Assistent für die Veröffentlichung von Anwendungen leitet Sie anschließend durch den Veröffentlichungsprozess.

Wenn Sie die Anwendung als zweischichtige Desktopanwendung veröffentlichen, erstellen Sie ein ClickOnce-Paket. Sie erstellen eine SQL Server-Datenbank, die alle von Ihnen erstellten lokalen Tabellen sowie die Systemtabellen enthält. Sie können auch angeben, wo sich diese Datenbank befindet. Wenn die Anwendung von einer einzelnen Person verwendet wird, könnte die Datenbank auf dem Computer dieses Benutzers gespeichert SQL Server Express verwendet werden. Wenn die Anwendung von mehr als einer Person verwendet wird, werden Sie die Datenbank wahrscheinlich auf einem Netzwerkcomputer speichern, auf dem SQL Server ausgeführt wird.

Wenn Sie die Anwendung als dreischichtige Desktop- oder Webanwendung veröffentlichen, die auf IIS gehostet wird, können Sie die Anwendung direkt zu IIS veröffentlichen, wenn auf dem Server der Microsoft Web Deployment Tool-Dienst ausgeführt wird. Alternativ können Sie ein MSDeploy-Paket erstellen und dieses manuell in IIS importieren. Wenn Sie die Anwendung zu Windows Azure veröffentlichen, fordert der Assistent Sie zur Eingabe der Abonnement-ID für das Konto, der von Ihnen verwendeten Dienst- und Speicherkonten sowie des zu verwendenden SSL-Zertifikats auf. Weitere Informationen zur Bereitstellung und Veröffentlichung zu Windows Azure finden Sie im Abschnitt zur Bereitstellung im LightSwitch Developer Center auf MSDN (bit.ly/jiYov5).

Der einfachste Weg

Zusammenfassend lässt sich sagen, dass das primäre Zielpublikum für LightSwitch Endbenutzer sind, die Anwendungen entwickeln. Diese Benutzer entwickeln Anwendungen zur Unterstützung von Geschäftsfunktionen. Es sind keine professionellen Entwickler. Es sind IT-Experten, Information Worker und andere Benutzer, die im Rahmen ihrer Tätigkeit kleinere Anwendungen entwickeln. Sie müssen häufig Anwendungen entwickeln, die bestimmte Bereiche verwalten, wie die Computerressourcen der Abteilung oder Firmenwagen. Möglicherweise benötigen sie auch eine Anwendung zur Verwaltung einer Veranstaltung, wie z. B. einer vierteljährlich stattfindenden Offenen Tür.

LightSwitch stellt diesen Benutzern den reibungslosen Einstieg in die Entwicklung bereit. Es übernimmt automatisch die Routineaufgaben, die für die Durchführung häufiger Anwendungsaufgaben erforderlich sind, wie das Arbeiten mit Daten, das Generieren von Bildschirmen und das Exportieren von Daten nach Excel und mehr. Es stellt außerdem ein einfaches und flexibles Bereitstellungsmodell bereit.

LightSwitch ist die einfachste Art, datenorientierte Anwendungen für den Desktop und die Cloud zu erstellen. Doris kann die Anwendung entwickeln, die sie benötigt, und diese Andreas übergeben, damit dieser sie erweitert und bereitstellt. Weitere Informationen zum Entwickeln von Anwendungen mit LightSwitch finden Sie im LightSwitch Developer Center auf MSDN (msdn.com/lightswitch).

Robert Green ist leitender Technologieexperte in der Developer Platform and Evangelism-Gruppe bei Microsoft. Dies ist seine zweite Tätigkeit für Microsoft. Zwischen 2005 und 2010 war er Senior Consultant bei MCW Technologies, wo sein Schwerpunkt auf Schulungen für Entwickler lag. Er hat eine Reihe von Kursen für Visual Studio und .NET für AppDev verfasst bzw. mitverfasst (appdev.com). Zuvor, während seiner ersten Tätigkeit für Microsoft, arbeitete er im Marketing für Developer Tools und war anschließend Community Lead im Visual Basic-Team.

Unser Dank gilt dem folgenden technischen Experten für die Durchsicht dieses Artikels: Beth Massi