Excel Export verursacht Performance Probleme

Wer viele Daten ohne Paging mit Lightswitch anzeigen möchte, wird unter gewissen Umständen einen deutlichen Performance Einbruch bemerken:

… And the result was huge performance hit. Screen with 2600 records opened in 30 seconds. At first we thought that slowest part is SQL data retrieval, but when we looked in SQL Profiler, it showed that SQL request took only 1-2 seconds. During window opening there is network activity for approx. 3 seconds, then CPU usage goes up to 50 percent and stays there until screen fully loads. So, we think that the problem is with data serialization/deserialization or rendering.

OK, you could say: If you request so many records, of course, you have to wait a little longer. Okay, I agree. But waiting for screen to load is just one problem, even fully loaded screen with more than 50 records is laggy and scrolling is really slow. …

Im Microsoft eigenen Lightswitch Forum wird das in diesem Thread detailliert diskutiert: Unacceptable performance for more than 50 records.

Kurz zusammen gefasst ist die Ursache das Export to Excel Feature! Diese Funktion steht nur Desktop Anwendungen zur Verfügung. Daher ist auch nur dort der Performance Einbruch zu beobachten. Also einfach mal abschalten wenn es langsam wird!

Visual Studio Lightswitch zeigt meine DB Views nicht an?!

Das einbinden von Datenquellen (z.b. eine bestehende Datenbank) ist in Visual Studio sehr einfach möglich. Umso verwunderter ist man, wenn im nächsten Schritt nur einige oder keine Datenbank Views zu Auswahl angezeigt werden.

image

Was ist die Ursache?

VS Lightswitch 2011 zeigt nur Datenbank Views an, wenn diese einen Primary Key- oder mindestens eine Not Nullable Spalte enthalten (welche LS dann intern als Key nutzen kann). Alle anderen Views werden ohne weitere Meldung ausgeblendet.

Praxistauglicher fände ich den View als Readonly zu Kennzeichen, damit stände dem Einsatz nichts mehr im Wege. Leider hat Microsoft das anders gesehen Zwinkerndes Smiley

Welche Möglichkeiten hat man trotzdem an den VIEW zu kommen? Oft ist an eine Änderung des Views nicht zu denken, wenn z.b. eine Lightswitch Applikation auf einer bestehenden Datenbank basiert und der DB Admin nur ein müdes lächeln für den Änderungswunsch übrig hat…

Hier heißt die Lösung WCF RIA Services! Ein Beispiel folgt das nächste mal.

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.

Joomla Ugrade, jetzt endlich ganz einfach möglich?

Ich nutze gerne Joomla um kleinere Webprojekte umzusetzen. image

Auch für die ein oder andere eigene Webseite kommt Joomla zum Einsatz. Leider habe ich bisher neidisch auf die WordPress User schielen müssen wenn ein Joomla Update anstand. Das soll jetzt anders werden! Denn mit Joomla 1.7 verspricht die Entwicklergemeinde

“One-click updates are here”

also genau das richtige für mich! Und Zeit auf Joomla .17 umzusteigen. Los geht’s!

Joomla Ugrade, jetzt endlich ganz einfach möglich? weiterlesen

Happy Computer

Gestern sind mir alte Computer Zeitschriften in die Hände gefallen. Einige Seiten werde ich in den nächsten Tagen einscannen um sie der Nachwelt zu hinterlassen. Wer weiß, eines Tages kann ich meinen Enkel davon erzählen?! Angefangen habe ich mit einer meiner Lieblingslektüren von damals:

 

Wer ist noch so alt wie ich und kennt die? Zwinkerndes Smiley