5
Deutschland 9,80 € Österreich 10,80 € Schweiz 19,50 sFr www.windowsdeveloper.de 7.2014 © S&S Media © iStockfoto.com/aleksandarvelasevic windows.developer 7.2014 SQL Server 2014 | Universal-Apps | WinForms | Azure | Sicherheit | Tools | Windows Phone 8.1 | Games Im Falle eines Ausfalls 12 Hochverfügbarkeit und Notfallwiederherstellung mit AlwaysOn Alles im Speicher 22 Die In-Memory-Revolution in SQL Server 2014 Vom RDBMS zur Datenplattform 9 SQL Server 2014 und die Microsoft Data Platform der Zukunft SQL Server 2014 | Universal-Apps | WinForms | Azure | Sicherheit | Tools | Windows Phone 8.1 | Games Neuheiten in WP 8.1 Überblick über die neuen Features des Updates 81 Universal-Apps für Windows Cross-Device- Entwicklung für alle Geräte 44 MVVM und WinForms Aktuelles Architektur- Pattern für bestehende Anwendungen 32 Server Zukunft für die SQL 2014

Deutschland 9,80 € Österreich 10,80 € Schweiz 19,50 sFr ab 1.289 · 2015-09-21 · 79 Real World Windows Azure . azure 7.2014 grade auf eine direkte Verbindung zwischen Sender

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Deutschland 9,80 €Österreich 10,80 €Schweiz 19,50 sFr

www.windowsdeveloper.de

7.2014

© S&S Media © iStockfoto.com/aleksandarvelasevic

window

s.develop

er 7.2014

SQ

L Server 2014

| Un

iversal-Apps | W

inForm

s | Azu

re | Sicherh

eit | Tools | Win

dows P

hon

e 8.1 | G

ames

Im Falle eines Ausfalls 12Hochverfügbarkeit und Notfallwiederherstellung mit AlwaysOn

Alles im Speicher 22Die In-Memory-Revolution in SQL Server 2014

Vom RDBMS zur Datenplattform 9SQL Server 2014 und die Microsoft Data Platform der Zukunft

SQL Server 2014 | Universal-Apps | WinForms | Azure | Sicherheit | Tools | Windows Phone 8.1 | Games

Neuheiten in WP 8.1

Überblick über die neuen Features des Updates

81

Universal-Apps für Windows

Cross-Device-Entwicklung für alle Geräte

44

MVVM und WinForms

Aktuelles Architektur-Pattern für bestehende Anwendungen

32

0800 186 07 06Vertriebs-Hotline:

/update/2014/07

Hauptsitz in den USA ComponentSource650 Claremore Prof WaySuite 100WoodstockGA 30188-5188USA

Zahlungen auf Rechnung und per Inlandsüberweisung auch gerne angenommen.

Hauptsitz in Europa ComponentSource30 Greyfriars RoadReadingBerkshireRG1 1PE Großbritannien

Hauptsitz in Japan ComponentSource3F Kojimachi Square Bldg3-3 Kojimachi Chiyoda-kuTokyoJapan102-0083 www.componentsource.com

www.componentsource.com

© 1996-2014 ComponentSource. Alle Rechte vorbehalten. Alle Preise waren zum Zeitpunkt der Veröffentlichung dieses Dokuments korrekt. Online-Preise können sich aufgrund von Schwankungen und online angebotenen Preisnachlässen ändern.

Xamarin.iOS and Xamarin.Android ab 862 € inkl. MwSt

Native iOS- und Android-Apps vollständig in Visual Studio schreiben.

• Den gesamten Code in C# schreiben

• Bis zu 90% des Codes für iOS, Android u. Windows Phone verwenden

• Enthält das optisch anspruchsvolle neue IDE Xamarin Studio

• Unterstützt App Store und Enterprise Distribution

• Vorentwickelte App-Komponenten zur Verkürzung der Entwicklungszeit

BEST-SELLER

Das komplette Angebot an DevExpress .NET-Controls und Bibliotheken für alle wichtigen Microsoft-Plattformen, einschließlich WinForms, ASP.NET, WPF, Silverlight und Windows 8.

• Neu! WinForms-Spreadsheet-Control bietet benutzerfreundliche Excel-ähnliche Funktionen

• Neu! WinForms Map Control unterstützt eine unbegrenzte Anzahl von Ebenen und Datenbindungen

• Neu! Live Tile Manager schlägt eine Brücke zwischen vorhandenen WinForms-Anwendungen und Windows 8

• Neu! WinForms-Editoren: Tree-List Lookup, Sparkline und Popup Gallery

• Neu! Touch-fähiges Theme für WPF & Silverlight

• ASP.NET GridView, DataView, NewsControl und ImageGallery unterstützen die endlose Paginierung

• Neu! ASP.NET-Bildgalerie-Control mit Unterstützung für Touch-Fingerbewegungen

• Neu! MVC Image Slider-, File Manager- und Captcha-Erweiterungen

• Neu! Diagramm-Assistent für WPF

• Visual Studio-Vorlagengalerie vereinheitlicht die Verwendung von DevExpress-Vorlagen

Mehr über DevExpress DXperience und preisgekrönte DevExpress-Produkte unter:www.componentsource.com/features/devexpress

DevExpress DXperience 13.2 ab 1.293 € inkl. MwSt#1 SELLER

ComponentOne Studio Enterprise 2014 v1 ab 1.289 € inkl. MwSt

NET-Tools für professionelle Entwickler: Windows, HTML5/Web und XAML.

• Hunderte von UI-Controls für alle .NET-Plattformen, einschl. Raster, Diagramme, Berichte und Arbeitsplaner

• Unterstützt Visual Studio 2013 und Bootstrap

• Erweiterte Theming-Tools für WinForms und ASP.NET

• 40+ mit HTML5, jQuery, CSS3 und SVG erstellte UI-Widgets

• Windows Store Sparkline-, DropDown- & Excel-Controls

BEST-SELLER

ServerZukunft

für die

SQL2014

78

azure . Real World Windows Azure

7.2014

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 Artikel auf mei-nem Blog http://rolandkru.azurewebsites.net/rwwa, wo Sie Links für die technische Umsetzung sowie eine Visual Studio Solution für die Demonstration der Lösung �nden.

Das ProblemBeim heutigen Projekt geht es um einen Hersteller von Industrierobotern. Dieser Hersteller exportiert seine Ro-boter für die Pharma- und Nahrungsmittelbranche in die ganze Welt. Diese Robotersysteme bestehen zum einen aus dem Roboter selbst sowie aus einer Steuerung, die über ein Bus-System mit dem Roboter kommuniziert. Die Steuerung sendet Kommandos an die Motoren und empfängt Signale von den Sensoren des Roboters. Diese Roboter werden mit einem Wartungsvertrag ausgelie-fert: Bei Problemen im Betrieb kann sich der Kunde an die Supportabteilung des Herstellers richten. Falls das Problem nicht am Telefon behoben werden kann, muss ein Mitarbeiter zum Kunden reisen, um den Fehler vor Ort zu beheben. Dies führt zu hohen Reisekosten und zeitlichen Verzögerungen. Daher wurde für die Support-

mitarbeiter ein Tool entwickelt, das es ermöglicht, den Aufbau jedes ausgelieferten Roboters am Bildschirm zu visualisieren und anhand der Kommunikationste-legramme auf dem Bus das Verhalten des Roboters zu simulieren. Dieses Tool wird sowohl für die Program-mierung der Steuerung wie auch für die Fehleranalyse eingesetzt. Abbildung 1 zeigt uns den Aufbau.

Das Problem ist Folgendes: Wie öffnen wir eine Inter-netverbindung zwischen der Robotersteuerung und dem Simulationstool des Supportmitarbeiters? Beide Appli-kationen laufen in Unternehmensnetzwerken und sind damit in der Regel von außen nicht erreichbar. Firewalls blockieren einkommende Verbindungen und der Einsatz von Network Address Translations (NAT) führt dazu, dass keine statischen IP-Adressen verwendet werden können. Wie kann der Supportmitarbeiter also das Si-mulationssystem mit einem Roboter verbinden, der am anderen Ende der Welt steht und nicht direkt adressiert werden kann?

Die LösungDie Lösung heißt „Azure Service Bus Relay“. Dieser Dienst der Azure-Plattform besitzt einen Mechanismus, der es ermöglicht, eine WCF-Verbindung zwischen zwei Systemen zu öffnen, die beide hinter einer Firewall ge-schützt sind (Abb. 2). Dabei öffnen beide Systeme eine ausgehende Verbindung zum Azure Service Bus. Diese Verbindungen werden offen gehalten. Der Sender kann nun eine Nachricht an den Service-Bus senden und die-ser leitet sie durch die geöffnete Verbindung weiter an den Empfänger. Die Antwort wird auf demselben Weg zurück an die Cloud und die ausgehende Verbindung des Senders transportiert. Falls gewünscht, kann der Azure Service Bus nach der Initialisierung sogar ein Up-

Quellc

ode a

ls D

ow

nlo

ad a

uf

ww

w.w

indow

sdev

elo

per.

de

Artikelserie

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

Teil 2: Azure Service Bus als Kommunikationsbrücke für lose gekoppelte Systeme nutzen

Fernüberwachung via Cloud 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 Cloud-Dienste eine Lösung für gängige Probleme lokaler Applikationen bieten. Im ersten Teil dieser Serie haben wir gesehen, wie die Cloud als Zwischenablage für größere Datenmengen dienen kann. In die-sem Artikel geht es darum, einen Roboter am anderen Ende der Welt zu überwachen.

79

Real World Windows Azure . azure

www.windowsdeveloper.de7.2014

grade auf eine direkte Verbindung zwischen Sender und Empfänger durchführen [1]. Diese Art der Kommuni-kation ist vergleichbar mit einem Instant-Messaging-Dienst wie etwa Skype.

Die Steuerung und das Simulationstool unseres Robo-ters können sich also in der Cloud treffen. Die Steuerung sendet alle gesendeten Kommandos und empfangenen Signalwerte via Service-Bus an das Simulationstool. Der Supportmitarbeiter kann dann das Verhalten des Robo-ters als Simulation beobachten und die Steuerung live debuggen.

Den Azure-Service-Bus-Relay-Mechanismus in einer bestehenden WCF-Applikation zu nutzen, ist sehr ein-fach: Man muss im Idealfall lediglich die Kon�guration ändern. Im Quellcode selbst müssen keine Anpassungen gemacht werden. Das NuGet-Packet WindowsAzure.ServiceBus fügt die Library Microsoft.ServiceBus.dll zum Projekt hinzu. Teil dieser Library sind sechs WCF-Binding-Erweiterungen, die im Detail in [2] beschrieben sind. Das folgende Listing zeigt einen Ausschnitt aus der app.con�g-Datei des Servers:

<service name="Server.SimulationServer"> <endpoint address="sb://rwwa.servicebus.windows.net/Simulation" binding="netTcpRelayBinding" behaviorConfiguration="sharedAccessSignatureCredentials" contract="Common.ISimulationServer" /></service>

In diesem Beispiel wird anstelle des NetTcpBindings einfach das NetTcpRelayBinding aus der ServiceBus.dll verwendet und als Endpoint-Adresse wird der URL des Azure Service Bus Namespace angegeben. Die gleichen Kon�gurationsänderungen muss man auch auf der Cli-entseite machen. Nach der Änderung können Client und Server via Cloud miteinander kommunizieren – trotz Firewalls und NAT.

BeurteilungDie Lösung zeigt einen einfachen Weg, wie Applikatio-nen über Systemgrenzen hinweg miteinander kommu-

nizieren können, ohne dass sie sich direkt adressieren. Diese Lösung beschränkt sich natürlich nicht auf das Roboterbeispiel: Wir können die Cloud als Treffpunkt nutzen, um Anbieter und Nutzer von Schnittstellen zu-sammenzubringen. Der Azure Service Bus ist vergleich-bar mit einem Enterprise Service Bus (ESB) als Service mit globaler Verfügbarkeit und hoher Ausfallsicherheit. Er eignet sich daher sehr gut für hybride Szenarien, also der Verbindung von lokalen und Cloud-Anwendun-gen, und für das Internet der Dinge (IoT – Internet of Things), also dem Trend, dass immer mehr Industriegü-ter über das Internet kommunizieren.

Die Lösung via Service Bus Relay ist geeignet für zeit-nahe, synchrone Anwendungen. Alternativ könnte man auch die Kommunikation zwischen Roboter und Steue-rung aufzeichnen, um sie später zu simulieren. Dann ist es sinnvoll, die Nachrichten der Steuerung in der Cloud zu speichern, zum Beispiel im Azure Storage. Dies ist ein sehr günstiger, strukturierter Speicher (vergleiche Artikel 1 dieser Serie „Azure Storage als Zwischenspeicher für den Datenaustausch“, in Windows Developer 6.14, S. 50).

Abb. 1: Wie verbinden wir zwei Systeme, die keine öffentlichen Schnittstellen besitzen?

Azure Service Bus

Babylonische Namensverwirrungen haben bei Microsoft Tradition und das ist beim Azure Service Bus nicht anders. Der Azure Service Bus besteht aus drei unterschiedlichen Diensten: Service Bus Relay (um den es hier im Artikel geht), Service Bus Messaging und Service Bus Noti�cation Hub. Service Bus Messaging wurde bereits im ersten Artikel dieser Serie erwähnt: Es ermöglicht eine asynchrone Kommunikation via Cloud mit Warteschlangen (Queues und Topics). Der Dienst Service Bus Noti�cation Hub bietet einen Massenversand von Push Noti�cations an unterschiedliche mobile Endgeräte. Der Azure Service Bus besitzt einen kleinen Bruder und der heißt Windows Server Service Bus. Der Windows Server Service Bus entspricht dem Azure-Service-Bus-Messaging-Dienst als lokale Installation und setzt auf dem SQL Server auf. Zum Zeitpunkt des Verfassens dieses Artikels ist der Windows Server Service Bus in der Version 1.1 kompatibel mit dem Azure Service Bus SDK Version 2.1, hinkt also der Cloud-Variante etwas nach, welche bereits in der Version 2.3 verfügbar ist [3].

80

azure . Real World Windows Azure

7.2014

SicherheitAuch wenn der Service-Bus-Relay-Mechanismus ein-fach und praktisch ist, müssen wir eines beachten: Wir hebeln mit dieser Lösung bis zu einem gewissen Grad die Sicherheitsfunktionen der Firewall aus und bauen eine Hintertür ein. Wenn wir das tun, müssen wir sicher sein, dass wir kein Sicherheitsloch schaffen. Wie stellen wir also sicher, dass nicht unbefugt via Azure Service Bus auf unsere Applikationen zugegriffen werden kann?

Zunächst einmal sollten wir nach Möglichkeit „Si-cherheit by Design“ schaffen. Eine Verbindung soll-te beispielsweise nur dann aufgebaut werden können, wenn ein Mitarbeiter des Kunden dies vor Ort erlaubt. Ähnlich wie es eine Zustimmung des Benutzers bei TeamViewer braucht, damit eine andere Person auf den eigenen Desktop zugreifen kann. Weiter sollten von der Steuerung nur Daten gesendet, aber nicht empfangen werden. Damit wird eine Manipulation von außen un-terbunden. Weiter können wir, in Verbindung mit den WCF-eigenen Sicherheitsfunktionen, die Kommunika-tion via Azure Service Bus auf zwei unterschiedliche Arten absichern: Am einfachsten geht es mittels Shared Access Signatures. Dabei verwenden die Applikatio-nen ein 256-Bit starken Schlüssel für die Signatur eines Tokens für den Zugriff auf den Service-Bus. Das De-moprojekt auf der Magazinseite und auf meinem Git-Hub-Account verwendet Shared Access Signatures für die Autorisierung. Die zweite, weitaus komplexere Art der Zugriffsverwaltung ist die Verwendung des Azure Access Control Service ACS. ACS ist ein weiterer Dienst der Azure-Plattform und ermöglicht eine feingranulare Authenti�zierung und Autorisierung von Zugriffsrech-ten und Benutzern [4]. Zudem unterscheidet der Azure Service Bus die Zugriffsarten „Send“ und „Listen“. Jede zugreifende Applikation kann mit einem oder beiden Rechten ausgestattet werden. „Send“-Applikationen sind WCF-Clients und können Service-Calls ausführen. „Listen“-Applikationen sind WCF-Server und können einen WCF Endpoint hosten.

SLA und KostenDas Azure SLA von Microsoft garantiert monatlich mindestens eine 99,9-prozentige Verfügbarkeit des Ser-vice-Bus-Diensts. Pro hundert Stunden kostet der Azure Service Bus Relay 0,08 Euro. Diese Zeit beginnt, sobald eine Applikation sich mit dem Service-Bus verbindet, und endet, sobald sich die letzte Applikation trennt. Die Anzahl der Applikationen spielt dabei keine Rolle. Zusätzlich werden pro 10 000 Nachrichten 0,008 Euro verrechnet, wobei Nachrichten über 64 KB als mehrere Nachrichten verrechnet werden [5].

FazitDieser zweite Artikel in der Serie „Real World Azure“ zeigt, wie die Cloud als Treffpunkt und Weiterleitungs-mechanismus für WCF-Applikationen verwendet wer-den kann, welche sonst keine öffentliche Schnittstelle besäßen. Mithilfe des Azure-Service-Bus-Relay-Me-chanismus können Verbindungen zur Cloud genutzt werden, um synchron Nachrichten zwischen lose ge-koppelten Systemen zu übertragen. Im nächsten Artikel werden wir sehen, wie mithilfe des Azure Blob Storage Daten aus der Cloud direkt in die eigenen Applikationen eingebettet werden können.

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

[email protected] @rolandkru

Abb. 2: Der Azure Service

Bus als Kommunika-tionsbrücke

Links & Literatur

[1] http://msdn.microsoft.com/en-us/library/ee173548.aspx

[2] http://msdn.microsoft.com/en-us/library/windowsazure/hh410102.aspx

[3] http://msdn.microsoft.com/en-us/library/dn282143.aspx

[4] http://msdn.microsoft.com/en-us/library/dn170478.aspx

[5] http://azure.microsoft.com/de-de/pricing/details/service-bus/

WINDOWS3

Developer Jetzt 3 TOP-VORTEILE sichern!

Alle Printausgaben frei Haus erhalten

Intellibook-ID kostenlos anfordern (www.intellibook.de)

Abo-Nr. (aus Rechnung oder Auftrags bestätigung) eingeben

Zugriff auf das komplette PDF-Archiv mit der Intellibook-ID

www.windowsdeveloper.de

1

2

3

Jetzt abonnieren!

www.windowsdeveloper.de