What is Visual Studio LightSwitch?

Wer sich eigentlich gefragt hat an welchem mysteriösen Produkt ich mitgearbeitet habe, als ich letztes Jahr meinen Sommer in Redmond verbracht habe, der bekommt jetzt eine ordentliche Antwort darauf. Und nachdem ich das Produkt nun gesehen habe, hege ich keinen Zweifel mehr daran, dass diese Zeit wirklich sinnvoll investiert war. Seit heute ist das Produkt offiziell angekündigt und ich kann hier schon mal einige Details zum Produkt verraten, bevor es dann zum 23. August die erste englische Beta geben wird!

Zuerst mal die wichtigsten Links:

 

Ich versuche mal knapp zusammen zu fassen, worum es bei LightSwitch eigentlich geht, weil diverse Kollegen schon böse Vergleiche zu anderen Produkten gezogen haben. Um es gleich zu Anfang zu sagen: Es ist kein Access, wobei es durchaus Parallelen zur Grundidee gibt und nein, es hat auch nichts mit WebMatrix zu tun.

Zielgruppe

LightSwitch soll dem Entwickler (Zielgruppe hier vorwiegend die armen Jungs, die in Firmen oft die Doppelrolle des IT-Pros/Devs/Lageristen/Hausmeister haben) das Leben etwas einfacher machen, wenn es darum geht Standard-Software zu erstellen. Ich denke da zurück an meine Freelancer-Zeit und kann sagen, dass ich knapp 90% meine Applikationen, die ich da entwickelt habe, mit LightSwitch erschlagen hätte. Also auch interessant für die Selbständigen, die sich mit diesen Alltagstools in internen Netzwerken auseinander setzen. Halten wir mal fest, dass man mit LightSwitch Software erstellt, für die praktisch kein Budget / Zeitfenster da ist und deren Funktionalität im Vordergrund steht. Und das ist auch schon die einzige Gemeinsamkeit zu Access.

Parallel zu den LightSwitch-Endusern (also den Entwicklern der Application für den EndEnd-User – Puh! Das wird jetzt ganz schön kompliziert) gibt es noch großes Potential für Drittanbieter und Tools. LightSwitch wird aus der Box heraus schon recht gute Dienste leisten und mit wenig Aufwand gute Tools ausspucken. Wer dennoch mehr selbst implementieren möchte, kann an den unmöglichsten Stellen Custom Code einfügen oder direkt Drittkomponenten zur Verfügung stellen. Die Erweiterungsmöglichkeiten bieten sich an den verschiedensten Stellen.

Integration in Visual Studio

LightSwitch wird ein AddOn für Visual Studio 2010 sein. Was es kosten wird hat mir noch keiner verraten, aber da das Release noch etwas auf sich warten lässt, ist das sicher auch noch nicht Mittelpunkt der Diskussion. Sobald das Tool installiert ist, erhält man in VS ein paar neue Projekttypen und kann dann direkt einsteigen.

1 projects 2 Editor

Entwicklungsprozess

Wie schaut jetzt so ein Entwicklungsprozess aus? Jason hat in seinem Blog bereits ein gutes Beispiel durchgespielt. Man beginnt prinzipiell zuerst mit der Modellierung der Daten. Dass es bei den Intranet-Tools dieser Welt immer nur um die Manipulation irgendwelcher Listen-Daten geht ist offensichtlich – daher auch der extrem datengetrieben Entwicklungsansatz. Und das setzt sich auch gleich bei der Entwicklung des Frontends fort.

Eigenes Datenmodell

Der Designer für das Datenmodell erinnert sehr an klassische Datenbank-Tools – kleiner Unterschied hier jedoch: Komplexe Datentypen. Neben Int und String gibts dann noch Sachen wie “PhoneNumber” oder “Email Address”. Spezielle Datentypen, die die charakteristischen Eigenschaften von anderen Datenstrukturen abzubilden. Dabei geht’s nicht nur um die Darstellung oder Datenhaltung, sondern auch um die Validierung von Eingaben und andere Business-Logik.

3 datatypes 4 dataeditor

Das Datenmodell wird im Standardfall später auf einen SQL-Server (Express) verteilt und kann von der verteilten Anwendung prima angesprochen werden. Übrigens sei hier erwähnt, dass nachträgliche Änderungen – vielleicht für ein Update der Anwendung – keinen Drop der vorhandenen Datenbank erfordert. Konflikte werden smart aufgelöst und Daten bleiben vorhanden. Klassisches Beispiel: Feld nachträglich einfügen das nicht nullable ist. Für LightSwitch kein Problem. Neue Felder in vorhandenen Datensätzen werden dann einfach mit dem Default-Wert aufgefüllt. Dahinter befindet sich zur Zeit keine Data Tier Application. Funktioniert also auch mit “älteren” Datenbanken als SQL Server 2008 R2.

Externe Datenquellen

Man ist hier aber nicht darauf angewiesen eine eigene Datenstruktur zu erstellen. Man kann gerne auf vorhandene Daten zurück greifen die im SQL Server liegen. Aber gerne auch SharePoint Daten. Und wem das noch nicht genug ist, der kann gerne einen eigenen WCF Service schreiben, der den Zugriff auf die kohlegetriebene AS400 Cobol-Schnittstelle aus dem vorherigen Jahrhundert erlaubt. Awesome, right? Das tollste kommt noch: Eine Kombination aus allem ist erlaubt. Die Daten aus Fremdsystemen werden im Dateneditor als ganz normale, eigene Tabellen behandelt. Freilich kann man die Struktur nicht verändern, aber durchaus um Calculated Columns erweitern und virtuelle Referenzen zu anderen Tabellen herstellen. Die Produkt-Tabelle liegt also im SharePoint, die Rechnungen werden aber in der LightSwitch-Anwendung gehostet. Kein Problem. Referenzieren wir doch gleich noch die Dokumente aus dem SharePoint hinzu. geht! SQL Azure ist übrigens in diesem Zusammenhang auch nur eine ganz normale SQL Datenbank ;)

Screens

Hat man das Modell fertig (und nein, man kann nachträglich gerne alles nochmal ändern die dann auch wieder auf die Screens repliziert werden), erstellt man die Screens. Screens sind verschiedene Ansichten auf die Daten. Ein Assistent gibt einem da schon eine reiche Auswahl an Standard-Ansichten (Auflistung mit Suche, Detailansicht, Liste mit Details,…). Auch hier besteht die Möglichkeit der Erweiterung: Alternative Templates.

5 screenassistent

Bei den Screens handelt es sich um Standard-Vorlagen für Silverlight-Forms die die ausgewählten Daten, auf Basis der Datentypen, strukturiert anzeigen. Im einfachsten Fall ist die Anwendung dann auch schon fertig. Wenn es also nur darum geht die Produktliste mal eben aufzulisten, neue Datensätze einzufügen, alte zu verändern oder zu löschen. Und darum geht’s doch meistens, richtig? Die Screens beinhalten dabei schon alles was man sich so erwartet. Die Auflistungen geben einem die Chance nach Datensätzen zu suchen oder zu blättern. Ja, sogar ein “Export to Excel” hat es. Wem das schon wieder zu viel ist, dem sei gesagt, dass das alles optional abschaltbar ist. Man bemerke bei der Detailansicht den Telefonnummern-Assistenten, der bei Focus des Feldes aufklappt. Das ist Teil der komplexen Datentypen.

7 listing 6 running screen

Screens müssen natürlich nicht so bleiben wie das Template es vor sieht. Einmal erstellte Screens können nachträglich im Screen-Designer beliebig umstrukturiert, erweitert oder optimiert werden. Das XAML im Hintergrund wird über diesen Editor als Baumstruktur angezeigt und kann hier verändert werden. Da es sich bei der Anzeigetechnologie um Silverlight handelt, können hier auch gerne eigene Silverlight-Controls eingefügt werden. Hier kommt ein weiterer Ansatz für Drittanbieter ins Spiel.

Sicherheitskonzept

Natürlich braucht eine Mehrbenutzeranwendung auch ein Sicherheitsmodell. Auch bei LightSwitch kein Problem. Ähnlich wie beispielsweise SharePoint oder klassische ASP.NET-Seiten verlässt sich die Anwendung auf altbekannte Kollegen der Authentifizierung. Da die Basis des Deployments der IIS ist, werden auch hier die üblichen Mechanismen zum Zug kommen. Das kann hier entweder Windows Auth sein oder Forms Auth mit beliebigem Membership-Provider. User werden in der Anwendung Privilegien zugeordnet die dann in den einzelnen Screens oder Prüfungen gecheckt werden können.

Erweiterbarkeit

Ein Hauptkritikpunkt bei dieser Art vereinfachter Softwareentwicklung ist immer die Frage nach der Flexibilität und der Erweiterbarkeit. Erweiterbarkeit gibt es an allen Ecken und Enden. Praktisch jede Vorlage, Template innerhalb des Entwicklungsprozesses lässt sich anpassen oder erweitern (wie weiter oben an vielen Stellen erwähnt), aber auch der Entwickler selbst bekommt viele, viele Hooks an die Hand, an denen eingegriffen werden kann – per Code. Mit der vollen Power des Frameworks. Beispielsweise können eigene Validierungen mit einem Eventhandler eingefügt werden.

Technologien

Die Technologien hinter LightSwitch halten sich vollständig an gängige Best Practices für diese Anwendungstypen. Als Datenbank kommt der SQL Server ins Rennen. Externe Datenquellen können SQL Server, Share Point 2010 (angebunden über REST, soweit ich weiß) und WCF Services. Darauf aufgesetzt kommt das Entity Framework für das Mapping der Daten. Client-Server-Kommunikation wird per RIA Services realisiert, die auf einem IIS gehostet werden. Auf dem Client läuft Silverlight 4.0. Wahlweise kann das eine Browseranwendung sein oder Out of Browser laufen und somit auch Zugriff auf COM-Anwendungen erlauben. Die Integration der Office-Applikationen kommt dabei schon mit (man bemerke die "Export to Excel”-Funktion oder die Druckausgabe über Word-Templates).

Deployment

Alles schön und recht, aber wie wird die Anwendung später verteilt? Auch dafür gibts einen Assistenten. Man kann sich prinzipiell zwischen 3 Modellen entscheiden. Je nachdem, ob man mehrbenutzer haben möchte oder nicht.

  • Die klassische Einplatz-Anwendung die als Out-of-Browser App auf einer lokalen Maschine läuft.
  • Modell Nummer zwei ist schon etwas verteilter. Dabei gibt es wieder die App für den Client, ist aber für den Mehrnutzer-Betrieb ausgelegt. Daten werden wie im ersten Modell auf eine SQL-Datenbank verteilt. Außerdem werden aber ein paar Services für den IIS klar gemacht und dort hin verteilt. Im Hintergrund kommen RIA Services zum Einsatz.
  • Nummer 3 ist auch für den Mehrnutzerbetrieb gedacht. Daten kommen wieder auf einen SQL-Server und auch hier werden die RIA Services auf einem IIS verteilt. Der Unterschied diesmal: Die App ist nun keine klassische Client-Applikation mehr, sondern läuft im Browser.

 

9 deployment assistent

Zusammenfassend…

Joa, taugt! Ist natürlich schwer einen Eindruck zu vermitteln ohne gleich auf die Software verweisen zu können. Aber bald ist es ja soweit. Aber ich hoffe, dass der Unterschied zwischen WeMatrix, SharePoint und Access damit vom Tisch ist?  Wer inzwischen weitere Infos haben will/braucht, der darf mich gerne ansprechen und Fragen stellen oder hier kommentieren. Natürlich interessiert mich auch eure Meinung zum Produkt. Screenshots habe ich übrigens von Jason geklaut.