Google CDN für die Web App?

Na gut, also spiele ich diesen Hotfix ein. Es sollen eine Reihe von Problemen mit der Web-Anwendung behoben werden, außerdem besteht Hoffnung, dass die Anwendung im Browser auf den Clients flotter laufen wird. Nach dem Austausch der aktualisierten Dateien erscheint im Browser ein weißes Fenster. Was lief schief? Könnte es eine Rolle spielen, dass ich zunächst in einer virtuellen Maschine ohne Internetanbindung getestet habe? In der Tat möchte der Browser diesmal Daten von Google abrufen.
Als ich die ausgetauschte Web-Konfigurationsdatei mit der vorherigen Version vergleiche, kann ich eine kleine Änderung entdecken. In der neuen Fassung wird der Zugriff auf ein externes CDN vorgesehen.
Hm, Content Distribution Network, kennt doch jeder (zumindest die praktischen Auswirkungen). Typisches Beispiel: Akamai sorgt mit seinem CDN dafür, dass der Live-Stream oder das Update überall reibungslos ankommen. Millionen von Rechnern in aller Welt stürzen sich nicht über weite Wege auf einen überlasteten Update Server, sondern werden DNS-basiert auf den gewünschten Inhalt auf einem gut erreichbaren Server in ihrer Nähe geleitet.
Aber welchen Content soll das externe Google CDN unserer Anwendung bereitstellen? Unsere eigenen Individualdaten nicht, die sind nirgendwo gespiegelt; die Bildchen, die für die grafische Benutzeroberfläche benötigt werden sind zu klein, was denn sonst? Die Anwendung basiert auf HTLM5 und AJAX. Tatsächlich liefert das CDN Google Hosted Libraries in der Anwendung benötigte JavaScript Bibliotheken aus. (So etwas hätte es etwa auch von Microsoft gegeben.)
Die typischerweise benötigte jQuery Library hat eine Größe von etwa 250 KB. Das ist zwar in heutigen Netzwerken keine gewaltige Datenmenge, aber die Daten müssen eben auf jeden Client geladen werden, bevor für den Nutzer überhaupt etwas passiert. (Bei t3n gibt es sogar Tipps, wie man das Laden von jQuery durch Nutzung von nativem JavaScript vermeidet.)
Wie bei Google Public DNS fragt sich der besonders kritische Nutzer in Europa natürlich, aus welchem Grund das Unternehmen denn diese Dienstleistung unentgeltlich bereit stellt. Was passiert tatsächlich mit all Daten über Seitenaufrufe? Es ist müßig, darüber zu spekulieren.

Ebenso spannend ist wohl die Frage, ob oder wann es bei einer Anwendung sinnvoll sein kann, externe CDN-Dienste zu nutzen. Wenn regelmäßig von weit verteilten Orten auf einen Server zugegriffen werden soll, ist der Nutzen sicherlich schnell erkennbar (zum weiteren Vorteilen in dieser Konstellation siehe M. Kleine). Für eine Intranet-Anwendung erscheint diese Lösung eher ungeeignet. Oder? Man könnte vielleicht einen kleinen überlasteten Internet Information Server davor bewahren, sich zu bemühen Daten auszuliefern, die eh da draußen zu finden sind. Es ist auch nicht völlig ausgeschlossen, dass durch ungünstige Verkabelung von einem Client aus Google schneller zu erreichen ist, als der Server im Keller. Wer weiß.

Auf jeden Fall sollen man bei Rückgriff auf ein CDN nicht vergessen, dass von Zeit zu Zeit kein Internet greifbar ist (Offline Fallback beschrieben bei Scott Hanselman). In meinem praktischen Ausgangspunkt fehlte leider ein solcher Rückgriff auf die lokalen Ressourcen.

Externe JavaScript Bibliotheken

Externe JavaScript Bibliotheken

Windows 8 installiert ungern .NET3

Ich bin ja hin und wieder in Microsoft-Systemen unterwegs. Wie wohl jeder weiß, reicht es für Windows-Anwendungen auf Basis von .NET-Framework 3 und 2 nicht aus, die aktuelle .NET4-Version installiert zu haben. Legacy-Anwendungen – wie traditionelle Microsoft Office Pakete – die für die Versionen 2.0, 3.0 und 3.5 erstellt wurden, können unter Version 3.5 ausgeführt werden, aber nicht unter Version 4 oder höher (siehe Microsoft: .NET Framework-Versionen und -Abhängigkeiten).

Fenster

Nun könnte man ja auf den wirren Gedanken kommen, dieses Feature unter Windows 8 durch Aktivieren in der Systemsteuerung (Windows-Funktionen) installieren zu wollen. Das ist auch die vom Anbieter empfohlene Vorgehensweise (Microsoft: Installieren von .NET Framework 3.5 unter Windows 8). Ein Full-Download der älteren dotnet-Frameworks wird – soweit ich sehe – derzeit nicht bei Microsoft bereitgestellt. (Über die Tücken der Framework-Installation und Error 0x800F0906 wird bereits hier und da berichtet, S. Karsubke will im April auch ein komplettes Setup bei Microsoft entdeckt haben.)

Da wohl einige Nutzer von Windows 8 gleichzeitig den Einfall haben, dieses Feature über die entsprechende Funktion in der Systemsteuerung herunterzuladen, kann man in der Woche gefühlte 100 Mal auf den Download klicken, ohne dass der Schritt „Erforderliche Dateien werden heruntergeladen“ 65,8 % überschreitet.

Nun, dann wollte ich es halt über das Deployment Image Servicing and Management, kurz DISM (hier lohnt ein Blick auf einen Beitrag in Ingos Blog). Doch auch DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:d:\sources\sxs endete vorzeitig.

Dass der folgende Versuch, die Dateien aus dem Installationsdatensatz zu holen, nicht erfolgreich war, soll offenbar daran liegen, dass die Windows 8 Version bereits deutschsprachig war (hierzu ein Beitrag bei SCCMFAQ). Wenn man .NET Framework 3.5 vor dem Language Pack installiert, müsste es wohl funktionieren.

Mein Erfolgsrezept war am Ende, den Download an an einem Sonntagabend durchzuführen. Als wenn man sonst nichts vorhätte.