LightSwitch–Visual Studio 2013–ein paar Hightlights (Teil1)

Vor kurzem habe ich das Upgrade eines LightSwitch Projektes auf Visual Studio 2013 gewagt. Eins vorweg: Es hat sich gelohnt!  Bei diesem Projekt handelt es sich um einen Silverlight Client der eine externe SQL Server Datenbank anbindet. Das LightSwitch Projekt dient hier der GUI Gestaltung und verwendet keine “_intrinsic-Database”. Zu den Verbesserungen die lt. Doku im Bereich HTML Client hinzugekommen sein sollen, kann ich daher nichts sagen.

Das Highlight für mich ist das nun endlich mehrere Designer gleichzeitig öffen sein können.

In den vorherigen Versionen war immer nur eine Instanz eines Screens- oder Table-Designer möglich. Ein flüssiges arbeiten und schnelles umschalten zwischen mehreren Screens\Tables war nicht möglich. Öffnet man in VS 2013 ein Screen\Table erhält dieser ein eigenes Register und man kann beliebig viele davon gleichzeitig offen halten, das wechseln zwischen den Registern geht entsprechend schnell. Vermutlich auch weil nun für jede Tabelle ein eigenes *.isml File erzeugt wird. Weiter so!

Leider leider funktioniert immer noch nicht die mehrfach Selektion zur Änderung einer gemeinsamen Eigenschaft. Also mal schnell die Text Ausrichtung von links auf rechts ändern ist nicht Trauriges Smiley 

SNAGHTML77efe14

VS 2012 LightSwitch: Updating datasource change FK from NOT NULL to NULL

Oft nutze ich Visual Studio LightSwitch 2012 um externe Datasources einzubinden. Also bereits bestehende Datenbanken bekommen mit LightSwitch ein GUI spendiert. Änderungen am Datenmodell sind in solchen Fällen nur eingeschränkt möglich.

Wenn dann nach dem erstmaligen einlesen der Metadaten einer Datenquelle dennoch ein Update erfolgt, also Änderungen in der DB durchgeführt- und diese nun VS LightSwitch bekannt gemacht werden, kann es zu unerwarteten Fehlern kommen.

In einem konkreten Fall konnte ich LightSwitch nicht dazu bewegen die Änderung einer FK-Beziehung zu erkennen.

In meinem Datenbank Modell hatte ich eine 1-n Beziehung in eine 0-n Beziehung geändert. Dazu wurde die foreign key column von “not NULL” auf “allow NULL” gerändert. Danach kam es dann beim speichern zu folgender Meldung:

Multiplicity conflicts with the referential constraint

in Role ‚XXX‘ in relationship ‚FK_Table2_XXX‘.

Because all of the properties in the Dependent Role

are non-nullable, multiplicity of the Principal Role

must be ‚1‘.

Der Fehler ist auch anderen widerfahren und wird in dein einschlägigen Foren diskutiert. Es gibt wohl derzeit nicht allzu viele Lösungswege, einer wäre die Datasource zu löschen und neu hinzuzufügen. Das ist aber ein no go wenn das Projekt viele Screens enthält. Die würden dann in Mitleidenschaft gezogen.

Ein User gab den Tipp die Common.lsml direkt zu verändern. Und das habe ich dann auch gemacht. Wie in diesem Screenshot dargestellt:

image

Microsoft.LightSwitch.SecurityAdmin.exe

Wer nach der Installation einer 3-Tier LightSwitch App noch einen Admin hinzufügen möchte benötigt das Tool Microsoft.LightSwitch.SecurityAdmin.exe, jedenfalls sofern er nicht direkt in der DB fummeln möchte.

Doch wo findet man das Tool?

Auf einem frisch installierten Server der die “LightSwitch für Visual Studio 2012 – Serverkonfiguration ohne lokales SQL Express“ (das ist der offizielle sperrige Name) erhalten hat, konnte ich es nicht finden.

Erst eine Suche auf meiner lokalen Entwicklungsmaschine hatte Erfolg. Und zwar hier: C:\Program Files (x86)\Microsoft Visual Studio 10.0\LightSwitch\1.0\Tools

Es reicht aber nicht aus das exe-File zu kopieren. Am einfachsten den ganzen Tools Order zippen und auf die Zielmaschine kopieren um die Microsoft.LightSwitch.SecurityAdmin.exe nutzen zu können.

Aufgerufen wird Microsoft.LightSwitch.SecurityAdmin.exe mit diesen Parametern:

Administrative utility to perform security operations

for a LightSwitch application. /? Display this help text. /createadmin Creates an administrator user. Options: /user:<username> UserName of the user. /password:<password> Password of the user. Required for

Forms authentication mode. /fullname:<full name> Full name of the person represented by the user.

Required for Forms authentication. /config:<config path> Absolute path to the web.config file

of the LightSwitch application.

Wie ich später feststellte war die gefundene Microsoft.LightSwitch.SecurityAdmin.exe von Visual Studio 2010 (LightSwitch 2011) und funktioniert nicht mit VS 2012 LightSwitch Apps. In Visual Studio 2012 ist dieses Programm nach meinen Recherchen nicht mehr enthalten. Stattdessen wird es laut Doku nun mit der “LightSwitch für Visual Studio 2012 – Serverkonfiguration ohne lokales SQL Express“ auf dem Hosting Server installiert… leider nicht immer. In meinem Fall konnte ich jedenfalls keine AdminSecurity.exe auf dem Server finden. Neu installieren war leider auch nicht möglich (Details dazu hier).

Um nun endlich weiter zu kommen und das deployment abschliessen zu können, habe ich dann den Weg über die StoredProcedure gewählt. Glücklicherweise war in meiner DB bereits ein Admin enthalten. Mit der folgenden SP kann das Passwort in der DB nach eigenem gusto angepasst werden:

declare @cd datetime set @cd=getdate() exec [dbo].[aspnet_Membership_SetPassword]

‚appname‘,‚<domain>\<user>‘,‚<plainpassword>‘,’salt‘,@cd,0

Der letzte Parameter identifiziert das Passwort Format: (0=Plaintext, 1=Hashed, 2=Encrypted). Hier ist insbesondere die Möglichheit 0=Plaintext hilfreich.

Diese spannende Geschichte ;-) soll mir in erster Linie als Gedankenstütze dienen… mal schauen ob es hilft.

Visual Studio 2012

Den Test und das experimentieren mit einer Visual Studio 2012 Beta habe ich mir geschenkt. Umso gespannter war ich nun selbst die ersten Versuche mit dem Final Release zu machen. Und der erste Eindruck? Angenehm überrascht!

Als erstes bemerkte ich die gefühlt wesentlich bessere Startgeschwindigkeit. Zum vergleich startete ich mehrmals VS 2010 und VS 2012 nacheinander. VS 2012 war auf meinem Rechner nach ca. 3 sec. bereit! VS2010 benötigte ca. 4 sec bis die IDE sichtbar war und weitere ca. 4 sec. bis der Waitcursor endlich verschwand. Beachtlich!!

Danach musste ich schnell das Color theme auf Dark umstellen:

image

Danach war die IDE richtig ansehnlich Zwinkerndes Smiley

image

Bei VS LightSwitch 2012 bemerkte ich ebenfalls eine deutlich bessere Reaktionsgeschwindigkeit der IDE. Besonders der Wechsel zwischen dem Table Designer und dem Screen Designer geht nun flugs von statten, was noch in LightSwitch 2011 eine sehr träge Angelegenheit war.

Details folgen…

Zwei Artikel im MSDN Magazine über Visual Studio Lightswitch

In der August Ausgabe 2011 des MSDN Magazins sind zwei Artikel über Microsoft Visual Studio Lightswitch:

Build Business Applications with Visual Studio LightSwitch: In diesem Artikel werden die Basics von Visual Studio Lightswitch vorgestellt.

Advanced Programming Made Easy With Visual Studio LightSwitch: Darin sind keine brandneuen Tipps & Tricks, es ist das bekannte Contoso Construction Application Demo von Beth Massi in einen Artikel verpackt. Wer die Demo nicht kennt sollte rein schnuppern, es lohnt sich. Die komplette Beispiel App steht im Source Code zur Verfügung.

Features der Beispiel App:

  • A “Home screen” with static images and text similar to the Course Manager sample
  • Personalization with My Appointments displayed on log in
  • “Show Map..” links under the addresses in data grids
  • Picture editors
  • Reporting via COM interop to Word
  • Import data from Excel using the Excel Importer Extension
  • Composite LINQ queries to retrieve/aggregate data
  • Custom report filter using the Advanced Filter Control
  • Emailing appointments via SMTP using iCal format in response to events on the save pipeline

Hier gibt es auch ein Video zu diesem Beispiel:

Anbieter “LightswitchApplication” wurde nicht gefunden.

Wenn das deployen eines Lightswitch Packages mit folgendem Fehler abbricht: Anbieter “LightswitchApplication” wurde nicht gefunden

Oder auch: “Could not find the provider ‚LightSwitchApplication‘. Please verify that you’ve entered the name correctly”

lightswitch_app_not_found

Dann kann die Ursache sein das auf dem Ziel Rechner (Windows Server 2008 R2) das Service Pack 1 (SP1) nicht installiert ist. Nach einem Update auf das SP1 konnte ich die Anwendung problemlos deployen.

[UPDATE]

Im MS Lightswitch Forum wurde auch über diesen Fehler diskutiert. Dort hat ein User berichtet das das Problem durch entfernen einer Checkbox gelöst werden konnte.

Beim erzeugen einer 3 Tier Application hat man die Möglichkeit über das Setzen einer Checkbox mitzuteilen ob die Notwendigen Voraussetzung für das Lightswitch Hosting auf dem Server erfüllt sind oder eben nicht. Die Option/Checkbox heißt in der deutschen Version: “Auf dem IIS-Server sind die erforderlichen Komponente für die Bereitstellung von Lightswitch Applikationen installiert” (unten gelb markiert) und ist zu finden wenn man den PUBLISH – Assistent startet:

image

Im beschriebenen Fall hat das entfernen der Checkbox das Problem gelöst.

Visual Studio Lightswitch und die Connetionsstrings

Wenn nach den ersten Schritten mit Visual Studio Lightswitch eine Anwendung entstanden ist, steht man irgendwann ggf. vor Aufgabe diese auf einem IIS zu deployen. Doch das klingt leichter als es ist wenn man mit mehreren Datenquellen arbeitet. Ich beschreibe euch die Bedeutung der einzelnen Connectionstrings und wie diese zu konfigurieren sind.

Die folgenden Screenshots sind beim deployen einer Anwendung entstanden die im 3 Tier betrieb läuft, also auf dem IIS gehostet wird. Die Anwendung nutzt zwei (SQL Server) Datenquellen und wird mit Windows-Authentifizierung betrieben.

Im weiteren Verlauf beschreibe ich wie eine Lightswitch App als Package in den IIS importiert wird. Doch wie erzeugt man ein solches Packages?

Dazu wählt man beim “Assistent zum Veröffentlichen von Lightswitch-Anwendungen” auf dem Screen “Ausgabe veröffentlichen” die Option “Paket auf Datenträger erstellen”

image

Möchte man nun ein solches Paket im IIS einlesen wird man zwangsläufig mit folgendem Dialog konfrontiert:

connection_dialog_small

Im folgenden nochmal der gleiche Dialog, lediglich auf den inneren Bereich beschränkt und alle Eingabe mit einer Nummer versehen:

connection_dialog

1) Connection Datenbankverbindung die zur Erzeugung der “Application Database” verwendet wird. Wird nur zum deploy Zeitpunkt verwendet! Die Application Database ist jene Datenbank in der Lightswitch die Authentifizierung verwaltet. Es kann keine Integrierte Sicherheit verwenden werden!

Mit den folgenden Daten wird die Verbindung zur Application Database zur Laufzeit aufgebaut (2-5):

2) DatabaseServer Server für die Application Database (muss zwingend der gleiche sein wie aus 1)! Logisch sonst wird die Verdingung zur Laufzeit zu einem anderen Server aufgebaut als zu jenem der die Installation abbekommen hat Zwinkerndes Smiley

3) DatabaseName der Application Database (muss zwingend der gleiche sein wie aus 1)!

4) DatabaseUserName UserName der sich zur Application Database zur Laufzeit verbindet.

5) DatabaseUserPassword Passwort zu UserName

Je nach Anzahl genutzter Datenquellen im Lightswitch Projekt, werden entsprechende Connectionsstrings gelistet (die Anwendung die für den Screenshot herhalten musste nutzt zwei Datenquellen 6a & 6b)

6a) ConnectionString Hinter dieser Datenverbindung sind die echten Daten zu finden. Alles anderen bis hierher diente nur Lightswitch selbst, das hier sind Deine Daten. Wenn die Anwendung nach der Installation z.b die Anmeldung erlaubt, aber keine Applikationsdaten anzeigt (Red X Symptom), ist es hilfreich diese Datenverbindung(gen) mit dem SQL Server Manager zu überprüfen.

6b) ConnectionString – wie oben

7) Anwendungspfad Unter diesem Pfad ist die Anwendung zu erreichen, z.b. http://<your default website>/<Anwendungspfad>

8) Application Administrator User Name Dieser User darf nach der Installation als EINZIGER die Anwendung ausführen. Er die Möglichkeit weitere Anwender über die Applikation zu berechtigen.

Visual Studio Lightswitch Server prerequisites

Wer seine Lightswitch Application deployen möchte benötigt auf den Ziel Server die Visual Studio Lightswitch Server prerequisites. Zur Installation dient der Webplatform-Installer:

clip_image002

Leider zeigt der Weplatform-Installer derzeit (kurz nach Veröffentlichung der Final Release) lediglich die Beta Version an, allerdings deutet das Veröffentlichungsdatum auf eine Aktualisierung und das Final Release hin. Also… fix die Beta2 Version deinstalliert und die “aktuelle” vom 26.07.2011 installiert.

Ich kann berichten: Es läuft, auch konnte ich keine Probleme von Apps feststellen, die noch unter der Beta2 entwickelt wurden. Netterweise laufen auch Anwendungen die mit dem Final Release erstellt wurden Zwinkerndes Smiley

VS Lightswitch 2011 Final Release

Nun ist es da! Seit gestern dem 27.07.2011 kann man das Final Release von Microsoft Lightswitch laden. Das habe ich natürlich gemacht, denn die Veröffentlichung der Beta2 liegt nun schon einige Zeit zurück (Mitte März 2011).

Theoretisch sollte nach der Deinstallation der Beta2 und Installation der V1 alles reibungslos funktionieren. Praktisch kam es bei mir zu ein paar kleinen Problemen. Das nervigste war sicherlich das der Screen Designer keine Icons für die Controls anzeigte.

 

Zur Lösung des Problems folgende Ordner löschen:

%LOCALAPPDATA%\Microsoft\VisualStudio\10.0\ComponentModelCache
%LOCALAPPDATA%\Microsoft\VisualStudio\10.0\ManifestCache

Das löschen kann lt. einem MS Test Team Mitarbeiter gefahrlos erfolgen, da der Cache Inhalt bei bedarf beim nächste Build-Prozess neu erstellt wird.