˜SELLER ComponentOne ActiveReports 8 inkl. MwSt

Bing | JavaScript | Azure | Sicherheit | Tools | SharePoint | Windows Phone 8.1 | Games

8.2014

Deutschland 9,80 ?sterreich 10,80 Schweiz 19,50 sFr

windowsdeveloper.de

Ausblick auf vNext

Die neue Runtime: Alles bleibt besser

49

Google Hacking, the Bing Way

Wie man Dinge anders findet

84

Wolkig statt lokal

Entwickeln und testen in der Microsoft-Cloud

67

Die Plattform

Wer suchet, der findet 25

Bing als Plattform der M?glichkeiten

Wo bin ich? 19

Location-based Services mit Bing Maps

Augmented Reality mit Bing Maps 15

Entwicklung von AR-Apps

? S&S Media ? Blackmoon9

azure . Real World Windows Azure

? polygraphus

Aufbereitung von statischen und dynamischen Daten in der Cloud

Von CDN nach CQRS

In dieser f?nfteiligen Artikelserie besch?ftigen wir uns mit der folgenden Frage: Wie k?nnen wir Azure-Dienste sinnvoll und sicher in Nicht-Cloud-Applikationen einsetzen? Ich zeige anhand von Beispielen aus meinem Projektalltag verschiedene Szenarien, in denen CloudDienste eine L?sung f?r g?ngige Probleme lokaler Applikationen bieten. In diesem dritten Artikel der Serie geht es darum, wie wir Inhalte von unseren Applikationen in die Wolke auslagern k?nnen.

von Roland Krummenacher

Ziel dieser Serie ist, dass Sie die M?glichkeiten der Azure-Dienste f?r Ihre eigenen Applikationen erkennen und deren Konzept verstehen. Ich begleite die f?nf Artikel auf meinem Blog, wo Sie weitere Informationen und Links f?r die technische Umsetzung nden [1].

Artikelserie

Teil 1: Azure Storage als Zwischenspeicher f?r den Datenaustausch Teil 2: Fern?berwachung via Cloud Teil 3: Aufbereitung von Daten als JSON-Read Models in der Cloud Teil 4: Taktgeber aus der Cloud Teil 5: Sammeln von Client-Log-Dateien in der Cloud

Das Problem

Ein Kollege sagte mir einmal: ,,Die besten Client-Requests sind diejenigen, die gar nie bis zu unserem Server gelangen". Was er damit meinte, erkl?rte er mir so: Eine Webapplikation liefert statischen und dynamischen Inhalt aus. Zum statischen Inhalt geh?ren Style-SheetDateien, JavaScript-Dateien, Bilder, Videos und andere Mediendateien, aber auch statisches HTML wie Header, Footer und Layout. Dynamischer Inhalt wird zur Laufzeit generiert, typischerweise aus Daten, die in einer Datenbank gespeichert sind. Die Frage ist nun: Wieso muss unser Webserver den statischen Inhalt ausliefern? Ist das nicht eine Verschwendung von Bandbreite und CPU-Zeit unseres Webservers? K?nnen wir diesen statischen Inhalt nicht irgendwo im Internet auslagern, wenn m?glich sogar n?her zum Client, damit diese Daten schneller geladen werden?

34

8.2014

Real World Windows Azure . azure

Die L?sung

F?r Leser, die bereits meinen ersten Artikel gelesen haben, liegt die L?sung auf der Hand: Wir lagern statischen Inhalt in die Cloud aus (Abb. 1). Daf?r verwenden wir den Dienst Azure Storage, der es uns erlaubt, diese statischen Dateien in der Cloud zu speichern und via HTTP direkt in den Browser zu laden. Listing 1 zeigt uns ein einfaches Beispiel anhand einer HTML-Seite, die statischen Inhalt aus der Cloud l?dt. Im Header werden die JavaScript-Datei f?r jQuery und die CSS-Datei des Bootstrap-Frameworks von einem Content Delivery Network geladen (Kasten: ,,Content Delivery Network"). Dann wird ein Bild direkt vom Azure BLOB Storage geladen. Zum Schluss wird noch mittels jQuery-Get-Funktion statisches HTML vom Azure BLOB Storage in die Seite nachgeladen. Hierf?r muss eine entsprechende Cross Origin Resource Sharing Policy auf dem BLOB Storage eingerichtet sein. Weitere Informationen dazu nden Sie auf meinem Blog [1].

Das Auslagern von statischem Inhalt in die Cloud hat neben der Entlastung unseres Webservers noch weitere Vorteile: Mithilfe von Content Delivery Networks kann dieser Inhalt auf der ganzen Welt zwischengespeichert werden und ist damit sehr viel schneller geladen. Kunden in Amerika oder Asien m?ssen nur noch den dynamischen Inhalt von unserem Webserver in Europa laden. Die gro?en Script- und Mediendaten werden hochperformant von einem Content-Delivery-Datencenter in ihrer N?he bereitgestellt. Auch ?ffentliche Daten aus dem Azure BLOB Storage k?nnen mittels Azure CDN weltweit verteilt werden. Ein weiterer Vorteil beim Auslagern von statischem Inhalt in die Cloud zeigt sich beim Verwalten und Streaming von Videodateien. Die Azure Media Services k?nnen Videodateien live oder OnDemand f?r Flash, HTML5, iOS, Android und Xbox streamen ? inklusive Video-Encoding in der Cloud und wahlweise mit Digital Rights Management [3].

Beurteilung

Dass wir statischen Inhalt in die Cloud und auf ein Content Delivery Network auslagern k?nnen, ist nicht neu, und dank den Caching-Funktionalit?ten der Browser und Internet-Service-Provider ist das Sparpotenzial auch nicht riesig. Aber in dieser Artikelserie denken wir immer etwas ?ber den Tellerrand hinaus: Wenn wir statischen Inhalt in die Cloud auslagern k?nnen, wieso nicht auch dynamischen Inhalt? Nehmen wir zum Beispiel den Produktkatalog eines Webshops. Er besteht aus verschiedenen Artikeln. Jeder Artikel besitzt eine Artikelnummer, eine Kurz- und eine Detailbeschreibung sowie mehrere Bilder. Diese Daten sind dynamischer Inhalt, sie werden aus der Artikeldatenbank geladen. Solche Daten k?nnen wir jedoch auch auf den Azure Storage auslagern. Abbildung 2 zeigt uns den Aufbau: Wir speichern nur noch die Artikelnummer in unserer Datenbank. Die gesamten Artikelinformationen stehen im BLOB Storage und werden via JavaScript direkt von dort in den Browser nachgeladen. F?r Textinhalte kann

Abb. 1: Statischen Inhalt aus der Cloud laden

Abb. 2: Dynamischen Inhalt aus der Cloud laden

man wahlweise direkt HTML verwenden, XML oder JSON, wodurch sich diese L?sung auch ideal als Backend f?r Single-Page-Applikationen anbietet. ?ndert sich jetzt die Beschreibung eines Artikels, k?nnen die Informationen direkt im Azure Storage ge?ndert werden.

Listing 1

$(document).ready(function () { $.get('', function (data) { $("#desc").html(data); });

});

8.2014

windowsdeveloper.de

35

azure . Real World Windows Azure

Abb. 3: Read Models in der Cloud

Stammt die Artikelbeschreibung von einem externen Lieferanten, kann der Azure Storage auch in den Enterprise-Application-Integration-Prozess (EAI) aufgenommen werden, zum Beispiel mit Microsoft BizTalk Server (lokal) oder Azure BizTalk Services (Cloud).

Read Models in der Cloud

Gehen wir noch einen Schritt weiter und sagen: Alle Daten werden via Cloud Storage ausgeliefert. Wir unterteilen unsere Applikation dazu nach dem CommandQuery-Separation-Prinzip (CQS): Queries geben ein Resultat f?r eine Abfrage zur?ck, ?ndern aber nichts am Zustand eines Systems. Commands f?hren eine Zustands?nderung aus, besitzen aber keinen R?ckgabewert. In MVC ist diese Unterteilung in der Regel einfach: Wenn Sie ein Formular absenden, f?hren Sie einen Command aus, wenn Sie das Resultat einer Abfrage darstellen, eine Query. Wir k?nnen also Query-Resultate aus der Datenbank laden, als so genannte Read Models f?r die Darstellung im Client aufbereiten und im Azure BLOB Storage zwischenspeichern. Abbildung 3 zeigt das Verfahren. Commands werden vom Client an den Server gesendet. Der Server verarbeitet

das Command und speichert die Zustands?nderung in der Datenbank. Die ge?nderten Daten werden dann in der Cloud gespeichert. F?r eine Abfrage (Query) holt sich der Client das entsprechende JSON Read Model vom Azure Storage und stellt es dar. Der Server wird davon entlastet.

Diese L?sung l?sst sich noch weiter optimieren: Man k?nnte anstelle des Azure BLOB Storage den Azure Table Storage verwenden, der ebenfalls ?ber eine JSON/REST-Schnittstelle verf?gt, aber im Gegensatz zum BLOB Storage die Daten strukturiert ablegt und damit rudiment?re Abfrageoperationen wie Filtern oder Projektionen auf den Daten erm?glicht. Weiter w?re es auch denkbar, die Commands asynchron via Cloud an den Server zu senden, zum Beispiel ?ber den Azure-Service-Bus-Messaging-Dienst. Dies f?hrt letztlich zu einer Architektur, die am Command QueryResponsibility-Segregation-Prinzip (CQRS) angelehnt ist. Informationen zu CQRS nden Sie unter [4] und im Zusammenhang mit Azure auf meinem Blog [1].

Fazit

Dieser dritte Artikel in der Serie ,,Real World Azure" zeigt, wie wir statischen und dynamischen Inhalt in die Cloud auslagern k?nnen, um unsere Applikationen performanter und skalierbarer zu machen. Dazu verwenden wir den Azure Storage und, f?r ?ffentliche Inhalte, Content-Delivery-Netzwerke. Das Prinzip wurde in diesem Artikel anhand von Webapplikationen vorgestellt. Es l?sst sich aber auch auf Desktop-, Service- oder Embedded-Applikationen adaptieren, die Daten von einem Backend beziehen. Im n?chsten Artikel werden wir sehen, wie die Zuverl?ssigkeit und Skalierbarkeit von zeitgesteuerten Prozessen dank dem Azure Scheduler verbessert werden kann.

Roland Krummenacher arbeitet als Softwarearchitekt und Windows-Azure-Experte bei der bbv Software Services AG. Seine Schwerpunkte sind .NET-Architekturen, Cloud Computing und agile Prozesse.

roland.krummenacher@bbv.ch

@rolandkru

Content Delivery Network

Ein Content Delivery Network, abgek?rzt CDN, erlaubt es Softwareentwicklern, ?ffentliche Daten an verschiedenen Orten auf der Welt zu cachen. CDNs bestehen aus verschiedenen Datencentern, so genannten CDN Edges oder Endpoints. Diese Datencenter sind im Internet strategisch zentral gelegen und daf?r optimiert, die Inhalte mit m?glichst wenig Latenzzeit und m?glichst gro?er Bandbreite ausliefern zu k?nnen. Fragt ein Benutzer nach einem bestimmten Inhalt, wird er via DNS-Protokoll an den n?chstgelegenen verf?gbaren CDN Endpoint geroutet. Dabei werden die Latenzzeit und weitere Faktoren, wie die aktuelle Belastung des Internets, ber?cksichtigt. CDNs k?nnen nur f?r ?ffentliche Inhalte genutzt werden, also Daten, die im Internet von allen eingesehen werden d?rfen. Nicht ?ffentliche Daten sollten aus Sicherheitsgr?nden nicht via CDN ?bermittelt werden. Das Microsoft Azure CDN besteht zum Zeitpunkt des Verfassens dieses Artikels aus 29 Endpoints [2].

Links & Literatur

[1] [2] [3] [4]

separation/

36

8.2014

Windows 3 Developer

wJwewt.zwtinadbowosndnevieelorpeenr.!de

Jetzt 3 Top-Vorteile sichern!

Alle Printausgaben frei Haus erhalten

1

Intellibook-ID kostenlos

anfordern (intellibook.de)

2

Abo-Nr. (aus Rechnung oder Auftragsbest?tigung) eingeben

3

Zugriff auf das k omplette PDF-Archiv mit der Intellibook-ID

windowsdeveloper.de

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download