Role Worker Role 2 Worker Role 1 Web Role Web Role Windows Azure Storage (Table, Blob, Queue) SQL Azure Internet Services Verteilung der Anwendungslogik Optimierung der Instanzenzahl Koppelung der Rollen Traffic über RZ- Grenzen hinweg Persistenz Hoch-Verfügbarkeit
Laufzeit wechseln und lokale Daten können vernichtet werden, z.B. bei > Hardware-Ausfall / Host Update > Guest OS-Upgrade > Lösung: > Korrekte Persistenzoptionen verwenden > Architekturmuster verwenden (s.u.) > Lose Koppelung z.B. über ein Bus System (AppFabric Service Bus) > Vermeidung von „Shutdown“-Code > Einsatz von Queues für asynchrone Kommunikation (Azure Queues)
WA Blobs WA Drives Lokales FS Tabellen mit Schema Key-Value Nachrichten Blobs flexibel flexibel Informationstyp Ja, 3-fach Ja, 3-fach Ja, 3-fach Ja, 3-fach Ja, 3-fach Nein Redundanz Ja Ja Ja Ja Ja Nein Toleranz gegen Instanzausfall Sehr gut, flexible Keys Gut, ein Key Nein Nein Nein Nein Zugriffs- optimierung Hoch Hoch Hoch Hoch Hoch Sehr hoch Datendurchsatz TDS REST REST REST NTFS NTFS Schnittstelle Datenbank- Maximalgröße Tatsächlicher Speicher Tatsächlicher Speicher Tatsächlicher Speicher Tatsächlicher Speicher Keine Speicherkosten Keine Pro Transaktion Pro Transaktion Pro Transaktion Pro Transaktion Keine Zugriffskosten Relationale Datenbank • Session- Persistenz • Massendaten mit einem Schlüssel Asynchrone Kommunikatio n (z.B. zwischen Rollen) Ablage von großen Binärdaten (z.B. Dokumente, Multimedia) Einsatz von Frameworks, die ein Dateisystem benötigen Caching von Daten Typisches Einsatz- szenarien Alternativen für die Datenspeicherung
an ein Lagersystem. Aktualisierungen durch Kassensoftware in den Filialen • Technisch: • ASP.NET MVC 2 • Entity Framework 4 • Workflow Foundation 4 • IIS 7 Slide 7
= 'passwort' CREATE USER pos FOR LOGIN posuser WITH DEFAULT_SCHEMA = dbo; EXEC sp_addrolemember N'db_owner', N'pos'; In der Master-Datenbank In der Ziel-Datenbank
Security=True; Pooling=False; MultipleActiveResultSets=True Bisher Data Source=sxz382mwst.database.windows.net; Initial Catalog=POSCentral; User Id=posuser; Password=pass@word1; Pooling=False; MultipleActiveResultSets=False Neu
in Admin Mode starten • Hinzufügen der Azure Assembly Referenzen • Microsoft.WindowsAzure.Diagnostics • Microsoft.WindowsAzure.ServiceRuntime • Microsoft.WindowsAzure.StorageClient • Hinzufügen einer WebRole Klasse • Einstiegspunkt für Windows Azure • Konfiguration der Einstellungen • z.B. Wieviele Instanzen, Welches Betriebssystem, etc... • Starten der Anwendung in der Emulation Slide 21
ein Management Zertifikat • Für die Remote Desktop Verbindung benötigt die Rolle den Private Key des Management Zertifikat Verschlüsselung von Credentials Slide 39
{ Trace.WriteLine("WarehouseRole entry point called", "Information"); var queue = queueStorage.GetQueueReference("bills"); while (true) { var message = queue.GetMessage(); if (message != null) { // WF4 hier aufrufen } queue.DeleteMessage(message); } Thread.Sleep(10000); Trace.WriteLine("Working", "Information"); } Worker wartet auf Arbeit
{ ... var queue = queueStorage.GetQueueReference("bills"); var message = new CloudQueueMessage(builder.ToString()); queue.AddMessage(message); ... } Web Role verschickt Rechnung über die Queue