5
0110101000111101101 01100101111010101111001101 11101101011110101100001100101111 0111101101011110101100001100101111 01111010101111001101010001111011010111101011 011110101100001100101111010101111001101010001 1101010001001011110110101100011110110101111010 1010111101011000011001011110101011110011010100 0110010111101010111100110101000111101101011110 0110101111010110000110010111101010111100110101 111001101010001111011010111101011000011001011 10100111101101011110101100001100101111010101 110101011110011010100011110110101111010110 0101100001100101111010101111001101010001 0010101011110101010001111110101010011 0011110110101111010110000110010111 01011110011010100011110110101 00011001011110101011110 0101111010110 0 Roslyn in 1110 1110 010 010 000 000 10 10 11 11 nb 001 001 110 110 110 110 01 01 01 01 Deutschland 9,80 € Österreich 10,80 € Schweiz 19,50 sFr www.windowsdeveloper.de 6.2014 © S&S Media windows.developer 6.2014 Roslyn | C# | VB | Azure | Sicherheit | DirectX 12 | Gestensteuerung Sprachpflege für C# 25 Was kommt Neues mit Roslyn? Zukunft für Visual Basic? 18 Totgesagte leben länger durch Open Source Roslyn im Entwickleralltag 14 Der Türöffner für neue Anwendungsszenarien Roslyn | C# | VB | Azure | Sicherheit | DirectX 12 | Gestensteuerung Serie: Real World Windows Azure Teil 1: Azure Storage als Zwischenspeicher für den Datenaustausch 50 Touch ohne Touch .NET-Anwendungen für den Leap Motion Controller entwickeln 39 Entwickeln mit Behaviors SDK Windows-8.1-Apps das Benehmen beibringen 32

Roslyn - bbv Software Services AG · 2015-09-21 · 51 Real World Windows Azure . azure 6.2014 spielsweise SMTP, also E-Mails, zur Übertragung der Daten vom Client zum Server nutzen

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Roslyn - bbv Software Services AG · 2015-09-21 · 51 Real World Windows Azure . azure 6.2014 spielsweise SMTP, also E-Mails, zur Übertragung der Daten vom Client zum Server nutzen

011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100010010111101101011000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100101011010101010101001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101001010101110110110101101010100111101101011110101100001100101111010101111001101010001111011010111101011000011001011110111110110101111010110000110010111101010111100110101000111101101011110101100001100101111011111011010111101011000011001011110101011110011010100011110110101111010110000110010111101111101101011110101100001100101111010101111001101010001111011010111101011000011001011110111110110101111010110000110010111101010111100110101000111101101011110101100001100101111011111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101001011110011010100011110110101111010110000110010111101010111100110101000111101101011110100101111001101010001111011010111101011000011001011110101011110011010100011110110101111010010111100110101000111101101011110101100001100101111010101111001101010001111011010111101001011110011010100011110110101111010110000110010111101010111100110101000111101101011110100101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010011000011001011110101011110011010100011110110101111010110000110010111101010111100110101001100001100101111010101111001101010001111011010111101011000011001011110101011110011010100110000110010111101010111100110101000111101101011110101100001100101111010101111001101010011000011001011110101011110011010100011110110101111010110000110010111101010111100110101001100001100101111010101111001101010001111011010111101011000011001011110101011110011010100101010111101010100011111101010100110011110110101111010110000110010111101010111100110101010101011110101010001111110101010011001111011010111101011000011001011110101011110011010101010101111010101000111111010101001100111101101011110101100001100101111010101111001101010101010111101010100011111101010100110011110110101111010110000110010111101010111100110101010101011110101010001111110101010011001111011010111101011000011001011110101011110011010101010101111010101000111111010101001100111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111100111101101011110101100001100101111010101111001101010001111011010111101011000011001011110011110110101111010110000110010111101010111100110101000111101101011110101100001100101111001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111100101011110011010100011110110101111010110000110010111101010111100110101000111101101011110010101111001101010001111011010111101011000011001011110101011110011010100011110110101111001010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101101100001100101111010101111001101010001111011010111101011000011001011110101011110011010110110000110010111101010111100110101000111101101011110101100001100101111010101111001101011011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011100011110110101111010110000110010111101010111100110101000111101101011110101100001100101110001111011010111101011000011001011110101011110011010100011110110101111010110000110010111000111101101011110101100001100101111010101111001101010001111011010111101011000011001011100011110110101111010110000110010111101010111100110101000111101101011110101100001100101110001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111110101011110011010100011110110101111010110000110010111101010111100110101000111101101011111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111110101011110011010100011110110101111010110000110010111101010111100110101000111101101011111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000100101111011010110001111011010111101011000011001001011000011001011110101011110011010100010010111101101011000111101101011110101100001100100101100001100101111010101111001101010001001011110110101100011110110101111010110000110010010110000110010111101010111100110101000100101111011010110001111011010111101011000011001001011000011001011110101011110011010100010010111101101011000111101101011110101100001100100101100001100101111010101111001101010001001011110110101100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010010101101010111110101011110011010100011110110101111010110000110010111101010111100110101001010110101011111010101111001101010001111011010111101011000011001011110101011110011010100101011010101111101010111100110101000111101101011110101100001100101111010101111001101010010101101010111110101011110011010100011110110101111010110000110010111101010111100110101001010110101011111010101111001101010001111011010111101011000011001011110101011110011010100101011010101010101001111011010111101011000011001011110101011110011010100011110110101111010110000110001010100111101101011110101100001100101111010101111001101010001111011010111101011000011000101010011110110101111010110000110010111101010111100110101000111101101011110101100001100010101001111011010111101011000011001011110101011110011010100011110110101111010110000110001010100111101101011110101100001100101111010101111001101010001111011010111101011000011000101010011110110101111010110000110010111101010111100110101000111101101011110101100001100010101001111011010111101011000011001011110101011110011010100011110110101111010110000110001010100111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101101111010101111001101010001111011010111101011000011001011110101011110011010100011110110110111101010111100110101000111101101011110101100001100101111010101111001101010001111011011011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110001111010110000110010111101010111100110101000111101101011110101100001100101111010101111000111101011000011001011110101011110011010100011110110101111010110000110010111101010111100011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100101010111011011010110101010011110110101111010110000110010111101010111100110101001101010010101011101101101011010101001111011010111101011000011001011110101011110011010100110101001010101110110110101101010100111101101011110101100001100101111010101111001101010011010100101010111011011010110101010011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110011110110101111010110000110010111101010111100110101000111101101011110101100001100101111001111011010111101011000011001011110101011110011010100011110110101111010110000110010111100111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110110101111001101010001111011010111101011000011001011110101011110011010100011110110101111011010111100110101000111101101011110101100001100101111010101111001101010001111011010111101101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010010101011110101010001111110101010011001111011010111100110000110010111101010111100110101001010101111010101000111111010101001100111101101011110011000011001011110101011110011010100101010111101010100011111101010100110011110110101111001100001100101111010101111001101010010101011110101010001111110101010011001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101101100001100101111010101111001101010001111011010111101011000011001011110101011110011010110110000110010111101010111100110101000111101101011110101100001100101111010101111001101011011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011100011110110101111010110000110010111101010111100110101000111101101011110101100001100101110001111011010111101011000011001011110101011110011010100011110110101111010110000110010111000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000110101010111101010110101011110011010100011110110101011101001010101101010111100110101000111101010111100110101000111101010111100110101000111010101010100101010110101011110011010100011110101011110011010100011110101011110011010100011101010101111110101101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000111010001011011111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001110101000001011111010110110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011101010101010010111010101111001101010001000110010101011110011010100011000110101011110011010100011110101011110011010100011101010101011110011110110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011100000110101010101001111010110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011101011110100011101000010111110101010101011010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001100101001101010111100110101000111101010111100110101000111101010111100110101000111010111110000111010101111001101010001111010101111001101010001111000001101111010101100010111101010

1111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101001010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001001011110110101100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010010101101010101010100111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100101010111011011010110101010011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010010101011110101010001111110101010011001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010

1101010010101011101101101011010101001111011010111101011000011001011110101011110011010100Roslyn

Einblicke inEinblicke in1010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

Einblicke in10101011110101010001111110101010011001111011010111101011000011001011110101011110011010101010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

Einblicke in10101011110101010001111110101010011001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111Einblicke in00111101101011110101100001100101111010101111001101010001111011010111101011000011001011110011110110101111010110000110010111101010111100110101000111101101011110101100001100101111Einblicke in00111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110Einblicke in01010111100110101000111101101011110101100001100101111010101111001101010001111011010111100101011110011010100011110110101111010110000110010111101010111100110101000111101101011110Einblicke in01010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101Einblicke in10110000110010111101010111100110101000111101101011110101100001100101111010101111001101011011000011001011110101011110011010100011110110101111010110000110010111101010111100110101Einblicke in10110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111Einblicke in00011110110101111010110000110010111101010111100110101000111101101011110101100001100101110001111011010111101011000011001011110101011110011010100011110110101111010110000110010111Einblicke in0001111011010111101011000011001011110101011110011010100011110110101111010110000110010111Einblicke inEinblicke in1010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

Einblicke in10101011110101010001111110101010011001111011010111101011000011001011110101011110011010101010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

Einblicke in10101011110101010001111110101010011001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111Einblicke in00111101101011110101100001100101111010101111001101010001111011010111101011000011001011110011110110101111010110000110010111101010111100110101000111101101011110101100001100101111Einblicke in00111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110Einblicke in01010111100110101000111101101011110101100001100101111010101111001101010001111011010111100101011110011010100011110110101111010110000110010111101010111100110101000111101101011110Einblicke in01010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101Einblicke in10110000110010111101010111100110101000111101101011110101100001100101111010101111001101011011000011001011110101011110011010100011110110101111010110000110010111101010111100110101Einblicke in10110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111Einblicke in00011110110101111010110000110010111101010111100110101000111101101011110101100001100101110001111011010111101011000011001011110101011110011010100011110110101111010110000110010111Einblicke in0001111011010111101011000011001011110101011110011010100011110110101111010110000110010111Einblicke in1010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

Einblicke in10101011110101010001111110101010011001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111Einblicke in00111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110Einblicke in01010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101Einblicke in10110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111Einblicke in0001111011010111101011000011001011110101011110011010100011110110101111010110000110010111Einblicke in1010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

Einblicke in10101011110101010001111110101010011001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111Einblicke in00111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110Einblicke in01010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101Einblicke in10110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111Einblicke in0001111011010111101011000011001011110101011110011010100011110110101111010110000110010111

1111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101001010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

0001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100010010111101101011000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100101011010101010101001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101001010101110110110101101010100111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101

1010101111001101010001111011010111101011000011001011110101011110011010100011110110101111

Roslyn1010101111001101010001111011010111101011000011001011110101011110011010100011110110101111

Roslyn0111101011000011001011110101011110011010100011110110101111010110000110010111101010111100Roslyn01111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010010101011101101101011010101001111011010111101011000011001011110101011110011010100

Roslyn1101010010101011101101101011010101001111011010111101011000011001011110101011110011010100

Einblicke in1010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

Einblicke in10101011110101010001111110101010011001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111Einblicke in00111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110Einblicke in01010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101Einblicke in10110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111Einblicke in0001111011010111101011000011001011110101011110011010100011110110101111010110000110010111

010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101001010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

Einblicke in1010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

Einblicke in10101011110101010001111110101010011001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111Einblicke in0011110110101111010110000110010111101010111100110101000111101101011110101100001100101111

11110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010

10101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010

000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001001011110110101100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010010101101010101010100111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100101010111011011010110101010011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010010101011110101010001111110101010011001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010

Roslyn0111101011000011001011110101011110011010100011110110101111010110000110010111101010111100Roslyn01111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010010101011101101101011010101001111011010111101011000011001011110101011110011010100

Roslyn1101010010101011101101101011010101001111011010111101011000011001011110101011110011010100

Einblicke in0011110110101111010110000110010111101010111100110101000111101101011110101100001100101111Einblicke in00111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110Einblicke in01010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101Einblicke in10110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111Einblicke in0001111011010111101011000011001011110101011110011010100011110110101111010110000110010111

1111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101001010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111

1010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

Einblicke in1010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101001010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001001011110110101100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010010101101010101010100111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101

110101001010101110110110101101010100111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100101010111101010100011111101010100110011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111

Roslyn1010101111001101010001111011010111101011000011001011110101011110011010100011110110101111

Roslyn10101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001001011110110101100011110110101111010110000110010Roslyn01011000011001011110101011110011010100010010111101101011000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100101011010101Roslyn11110101011110011010100011110110101111010110000110010111101010111100110101001010110101010101010011110110101111010110000110010111101010111100110101000111101101011110101100001100Roslyn01010100111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101Roslyn10111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100Roslyn01111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010010101011101101101011010101001111011010111101011000011001011110101011110011010100

Roslyn1101010010101011101101101011010101001111011010111101011000011001011110101011110011010100

Einblicke in1010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

Einblicke in10101011110101010001111110101010011001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111Einblicke in00111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110Einblicke in01010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101Einblicke in10110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111Einblicke in0001111011010111101011000011001011110101011110011010100011110110101111010110000110010111

0110000110010111101010111100110101001010101111010101000111111010101001100111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111

010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101001010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000100101111011010110001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101001010110101010101010011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010010101011101101101011010101001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101001010101111010101000111111010101001100111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111

Roslyn1010101111001101010001111011010111101011000011001011110101011110011010100011110110101111

Roslyn10101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001001011110110101100011110110101111010110000110010Roslyn01011000011001011110101011110011010100010010111101101011000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100101011010101Roslyn11110101011110011010100011110110101111010110000110010111101010111100110101001010110101010101010011110110101111010110000110010111101010111100110101000111101101011110101100001100Roslyn01010100111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101Roslyn10111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100Roslyn01111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010010101011101101101011010101001111011010111101011000011001011110101011110011010100

Roslyn1101010010101011101101101011010101001111011010111101011000011001011110101011110011010100

Einblicke in1010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

Einblicke in10101011110101010001111110101010011001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111Einblicke in00111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110Einblicke in01010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101Einblicke in10110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111Einblicke in000111101101011110101100001100101111010101111001101010001111011010111101011000011001011100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111

1101010010101011101101101011010101001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101001010101111010101000111111010101001100111101101011110

Roslyn1010101111001101010001111011010111101011000011001011110101011110011010100011110110101111

Roslyn10101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001001011110110101100011110110101111010110000110010Roslyn01011000011001011110101011110011010100010010111101101011000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100101011010101Roslyn11110101011110011010100011110110101111010110000110010111101010111100110101001010110101010101010011110110101111010110000110010111101010111100110101000111101101011110101100001100Roslyn01010100111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101Roslyn10111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100Roslyn01111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010010101011101101101011010101001111011010111101011000011001011110101011110011010100

Roslyn1101010010101011101101101011010101001111011010111101011000011001011110101011110011010100

Einblicke in1010101111010101000111111010101001100111101101011110101100001100101111010101111001101010

Einblicke in10101011110101010001111110101010011001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111Einblicke in00111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110Einblicke in01010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101Einblicke in10110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111Einblicke in0001111011010111101011000011001011110101011110011010100011110110101111010110000110010111

101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011010101011110101011010101111001101010001111011010101110100101010110101011110011010100011110101011110011010100011110101011110011010100011101010101010010101011010101111001101010001111010101111001101010001111010101111001101010001110101010111111010110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011101000101101111101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000111010100000101111101011011010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001110101010101001011101010111100110101000100011001010101111001101010001100011010101111001101010001111010101111001101010001110101010101111001111011010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001110000011010101010100111101011010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001110101111010001110100001011111010101010101101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000111101010111100110

00011110110101111010110000110010111101010111100110101000111101101011110101100001100101110001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001101010101111010101101010111100110101000111101101010111010010101011010101111001101010001111010101111001101010001111010101111001101010001110101010101001010101101010111100110101000111101010111100110101000111101010111100110101000111010101011111101011010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001110100010110111110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011101010000010111110101101101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000111010101010100101110101011110011010100010001100101010111100110101000110001101010111100110101000111101010111100110101000111010101010111100111101101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000111000001101010101010011110101101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000111010111101000111010000101111101010101010110101011110011010100011

00011110110101111010110000110010111101010111100110101000111101101011110101100001100101110001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011010101011110101011010101111001101010001111011010101110100101010110101011110011010100011110101011110011010100011110101011110011010100011101010101010010101011010101111001101010001111010101111001101010001111010101111001101010001110101010111111010110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011101000101101111101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000111010100000101111101011011010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001110101010101001011101010111100110101000100011001010101111001101010001100011010101111001101010001111010101111001101010001110101010101111001111011010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001110000011010101010100111101011010101111001101010001111010101111001101010001111010101111001101010001110101010011110101101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000111010111101000111010000101111101010101010110101011110011010100011

10101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111011010111101011000011001011110101011110011010100011110110101111010110000110010111101010111100110101000111101101011110101100001100101111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001101010101111010101101010111100110101000111101101010111010010101011010101111001101010001111010101111001101010001111010101111001101010001110101010101001010101101010111100110101000111101010111100110101000111101010111100110101000111010101011111101011010101111001101010001111010101111001101010001111010101111001101010001111010101111001101010001110100010110111110101011110011010100011110101011110011010100011110101011110011010100011110101011110011010100011101010000010111110101101101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000111010101010100101110101011110011010100010001100101010111100110101000110001101010111100110101000111101010111100110101000111010101010111100111101101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000111000001101010101010011110101101010111100110101000111101010111100110101000111101010111100110101000111101010111100110101000111010111101000111010000101111101010101010110101011110011010100011

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

www.windowsdeveloper.de

6.2014

© S&S Media

window

s.develop

er 6.20

14

Roslyn

| C# | V

B | A

zure | Sich

erheit | D

irectX 12 | G

estensteu

erun

g

Sprachpflege für C# 25Was kommt Neues mit Roslyn?

Zukunft für Visual Basic? 18Totgesagte leben länger durch Open Source

Roslyn im Entwickleralltag 14Der Türöffner für neue Anwendungsszenarien

Roslyn | C# | VB | Azure | Sicherheit | DirectX 12 | Gestensteuerung

Serie: Real World Windows Azure

Teil 1: Azure Storage als Zwischenspeicher für den Datenaustausch

50

Touch ohne Touch

.NET-Anwendungen für den Leap Motion Controller entwickeln

39

Entwickeln mit Behaviors SDK

Windows-8.1-Apps das Benehmen beibringen

32

0800 186 07 06Vertriebs-Hotline:

/update/2014/06

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

Page 2: Roslyn - bbv Software Services AG · 2015-09-21 · 51 Real World Windows Azure . azure 6.2014 spielsweise SMTP, also E-Mails, zur Übertragung der Daten vom Client zum Server nutzen

50

azure . Real World Windows Azure

6.2014

von Roland Krummenacher

Die Dienste der Azure-Plattform können für jede Art von Software sinnvoll eingesetzt werden – egal, ob es sich um eine Web-, Desktop-, Service- oder Embedded-Applikation handelt. In den fünf Artikeln dieser Serie zeige ich anhand von Beispielen aus meinem Projektall-tag, wie Windows Azure in Nicht-Cloud-Applikationen verwendet werden kann. Mein Ziel ist es, dass Sie, liebe Leserin, lieber Leser, die Möglichkeiten der Azure-Platt-form auch für Ihr aktuelles Projekt entdecken.

Die einzelnen Artikel dieser Serie sind so aufgebaut, dass ich jeweils ein konkretes Problem vorstelle und eine Lösung dazu aufzeige. Dann werde ich diese Lösung beurteilen und gegebenenfalls ein wiederverwendbares Muster daraus ableiten. Die Serie ist bewusst allgemein gehalten, aber zu jedem Artikel �nden Sie in meinem Blog [1] Informationen und Beispiele, wie Sie die Lö-sung in Ihrem Projekt umsetzen können, sowie die Mög-lichkeit, mit mir Fragen und Ideen zu diskutieren.

Das ProblemBeim heutigen Problem beschäftigen wir uns mit einer klassischen Client-Server-Architektur, wie sie in Ab-bildung 1 gezeigt wird. Der Client möchte dem Server Daten senden. Als Schnittstelle zwischen Client und Ser-ver kommt bei einem Webclient HTTP, bei einem Desk-topclient typischerweise SOAP via WCF oder HTTP via Web-API zum Einsatz. Diese Architektur funktio-

niert so lange gut, bis der Client auf die Idee kommt, größere Datenmengen an den Server zu senden. Sendet der Client nämlich Anfragen an den Server, die größer als 4 Megabyte sind, erhält er vom Server die Meldung „Maximum request length exceeded“, da die maximale Request-Größe standardmäßig auf 4 Megabyte limitiert ist [2]. Mit einer kurzen Websuche �ndet man rasch die entsprechende Web.con�g-Einstellung, um diese Limi-tierung anzuheben und kann weiterarbeiten. Was bei den praktischen Antworten auf Stack Over�ow und Co. jedoch selten beschrieben wird: Diese Limitierung ist durchaus sinnvoll. Zum einen kann es sein, dass der ASP.NET-Worker-Prozess aufgrund technischer Limits nicht mit großen Dateien umgehen kann und dadurch der Webserver plötzlich nicht mehr erreichbar ist. Zum anderen können Denial-of-Service-Attacken einen grö-ßeren Schaden anrichten, wenn die maximale Request-größe erhöht wird [3]. Letztlich läuft es darauf hinaus, dass Webserver für das Empfangen von größeren Daten-mengen schlicht nicht geeignet sind.

Was ist die Alternative? FTP beispielsweise. FTP-Ser-ver sind auf das Empfangen von großen Daten ausge-legt, allerdings hat FTP drei große Nachteile: Es benötigt eine eigene Serverinfrastruktur sowie eine vergleichs-weise komplexe Zugriffsverwaltung; außerdem ist FTP schlecht skalierbar. Während die Serverinfrastruktur in der Regel durch die IT bereitgestellt werden kann, ist die Zugriffsverwaltung nicht so einfach. Um als Anbie-ter die Kontrolle über die Zugriffe der Clients auf den FTP-Server zu behalten, müssen wir für jeden Client umständlich einen eigenen FTP-Account mit Benutzer-namen und Passwort anlegen. Die Accounts müssen ver-waltet und auch deaktiviert werden, sobald der Client im System gelöscht wurde. Weiter ist das FTP-Protokoll Session-basiert und damit zustandsbehaftet (stateful), was ein ef�zientes Load Balancing auf mehrere parallele Server schwierig macht. Eine automatisierte horizontale Skalierung des Backends wird dadurch stark erschwert. Vergleichbare Nachteile haben wir auch, wenn wir bei-

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 1: Azure Storage als Zwischenspeicher für den Datenaustausch

Real World Windows Azure Mit der Microsoft-Cloud Windows Azure lassen sich hoch skalierbare, weltweit verteilte Anwendungen für Millionen von Endnutzern erstellen. Da aber die wenigsten von uns am nächsten Facebook mitentwickeln, wird Windows Azure im Alltag der Softwareentwick-lungsteams selten verwendet. Zu Unrecht, wie sich zeigen wird.

Page 3: Roslyn - bbv Software Services AG · 2015-09-21 · 51 Real World Windows Azure . azure 6.2014 spielsweise SMTP, also E-Mails, zur Übertragung der Daten vom Client zum Server nutzen

51

Real World Windows Azure . azure

www.windowsdeveloper.de6.2014

spielsweise SMTP, also E-Mails, zur Übertragung der Daten vom Client zum Server nutzen wollen.

Die LösungUm dieses Problem zu lösen, haben wir uns in unserem Projekt den Windows Azure Blob Storage näher ange-schaut. Er bietet eine Dateiverwaltung in der Cloud und funktioniert auf den ersten Blick ähnlich wie ein FTP-Server. Im Unterschied zu FTP werden Dateien aber über eine HTTP-REST-Schnittstelle gespeichert, gele-sen und verwaltet. Und der Zugriff erfolgt nicht mit-tels Benutzername und Passwort, sondern mithilfe eines erweiterten und kryptogra�sch sicheren URL, eines so genannten Shared-Access-Signatur-URL (SAS-URL, sie-he Kasten „Shared-Access-URLs“). Dadurch fällt die Verwaltung von Logindaten weg. Abbildung 2 zeigt uns den Vorgang: Zunächst teilt der Client dem Server mit, dass er Daten senden möchte. Der Server antwortet, dass der Client diese Daten auf dem Blob Storage spei-chern soll, generiert einen SAS-URL und liefert ihn dem Client mit. Der Client lädt nun seine Daten mittels des erhaltenen URL auf den Blob Storage. Dazu könnte er direkt das HTTP-REST-API verwenden. Komfortabler geht es jedoch mithilfe der Azure Storage Client Libra-ry, die für diverse Programmiersprachen verfügbar ist und unter .NET als NuGet-Paket WindowsAzure.Sto-rage eingebunden werden kann. Der Server nutzt diesel-be Library, um den SAS-URL zu generieren (Listing 1). Schließlich teilt der Client dem Server mit, dass die Datei auf den Blob Storage hochgeladen wurde und nun vom Server verarbeitet werden kann.

BeurteilungWas haben wir mit dieser Lösung gewonnen? Zunächst einmal Sicherheit und Verfügbarkeit. Die Clients kön-nen den Server nicht mehr mit großen Datenmengen „verstopfen“ oder ihn damit sogar in die Knie zwingen. Dadurch bleibt er stets verfügbar und bietet weniger Angriffsmöglichkeiten für DoS-Attackquuen. Weiter haben wir dank SAS-URLs eine einfache, aber sehr �e-xible Möglichkeit zur Autorisierung der Clientzugriffe.

Abb. 1: Wie übertragen wir größere Datenmen-gen vom Client zum Server?

Abb. 2: Zwischen-ablage der Daten in der Cloud

Listing 1

var accessBlobPolicy = new SharedAccessBlobPolicy();accessBlobPolicy.SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1);accessBlobPolicy.Permissions = SharedAccessBlobPermissions.Write;string sas = container.GetSharedAccessSignature(accessBlobPolicy);

Shared-Access-URLs

Shared-Access-URLs sind eine sehr einfache, aber ef�ziente Metho-de, um einem Client Zugriff auf eine Ressource zu geben, ohne dafür Benutzeraccounts einrichten zu müssen. Ein solcher SAS-URL sieht zum Beispiel folgendermaßen aus:

https://rwwaarticle1.blob.core.windows.net/datacontainer?sv=2013-08- 15&sr=c&se=2014-02-23T14%3A22%3A17Z&sp=w&sig= Y3ptLSwruncLGlUZAzEQ57v9gYRjD%2F82mKpe0pTmXjw%3D

Der URL selbst bezeichnet einen Blob-Container datacontainer im Storage-Account rwwaarticle1. Der Parameter sv bezeichnet die API-Version des Blob Storage. sr steht für die Ressource (c = Container, b = BLOB). se steht für das Enddatum in UTC. Der SAS-URL kann nur bis

zu diesem Zeitpunkt verwendet werden. sp bezeichnet schließlich die Policy, wobei w für write steht, also schreibenden Zugriff. Das Ganze wird mit einer SHA256-Signatur über die wesentlichen Teile des URL ergänzt. Der Server kann diesen SAS-URL nach Wunsch sehr spezi�sch einschränken: Er kann den Client beispielsweise berechtigen, lediglich Daten zu schreiben, nicht aber zu lesen oder zu löschen. Des Weiteren kann die Gültigkeit des URL zeitlich limitiert werden. Nach Ablauf der Frist ist der URL ungültig und der Client muss beim Server einen neuen URL beantragen. Alternativ können SAS-URLs auch auf Basis einer selbst de�nierten Policy ausgestellt werden. Dadurch kann der Ad-ministrator die damit verbundenen Rechte auch im Nachhinein noch bearbeiten. Falls Sie mehr Details über SAS-URLs nachlesen möchten, �nden Sie entsprechende Ressourcen unter [4].

Zudem können Daten vor der Verarbeitung durch den Server veri�ziert werden: Ist eine Datei beispielsweise massiv größer als erwartet, kann der Server entscheiden, sie vom Blob Storage zu löschen, ohne dass sie herun-tergeladen werden muss. Der Blob Storage bietet weiter die Möglichkeit, Metadaten eines Blobs wie den MD5-Hash oder das letzte Änderungsdatum abzufragen.

Was hat sich an unserer Architektur mit dieser Lösung geändert? Während bislang Daten durch den Server syn-chron verarbeitet wurden, erfolgt das nun asynchron. Das bedeutet auch, dass der Server entscheiden kann, zu wel-

Page 4: Roslyn - bbv Software Services AG · 2015-09-21 · 51 Real World Windows Azure . azure 6.2014 spielsweise SMTP, also E-Mails, zur Übertragung der Daten vom Client zum Server nutzen

52

azure . Real World Windows Azure

6.2014

chem Zeitpunkt er die Daten verarbeiten will. Der Client wartet nicht mehr auf den Server, sondern wird zu einem späteren Zeitpunkt benachrichtigt, sofern er am Resultat interessiert ist. Ob man mit dem Wechsel von der synchro-nen zur asynchronen Kommunikation leben kann, muss immer für die jeweilige Situation entschieden werden.

SkalierbarkeitWas ist mit der Skalierbarkeit? Um zu zeigen, dass die Lösung nicht nur die Sicherheit und die Verfügbarkeit des Servers, sondern auch dessen Skalierbarkeit erhöht, muss sie noch etwas erweitert werden (Abb. 3). Während der Webserver noch immer für das Ausstellen der SAS-URLs verantwortlich ist, hat er nun nichts mehr mit der eigent-lichen Verarbeitung der Daten zu tun. Der Client lädt die Daten mithilfe des SAS-URL zum Blob Storage hoch und schickt dann eine Nachricht mit den Blob-Daten in eine Warteschlange (Queue). Auf Windows Azure steht dafür entweder der Azure Queue Storage oder der Azure Service Bus zur Verfügung. Beide Dienste bieten einen Queueing-Mechanismus als Service an. Der Zugriff funktioniert auch hier mittels SAS-URLs. Die Verarbeitung der Daten erfolgt nun durch mehrere eigene Worker-Prozesse. Die-se Worker-Prozesse können auf derselben Maschine wie der Webserver laufen, auf verschiedenen separaten Ma-schinen oder auch in der Cloud selbst, falls gewünscht. Die Worker-Prozesse empfangen Nachrichten aus der Queue und verarbeiten die dazugehörenden Daten aus dem Blob-Speicher. Da die Nachricht nur an jeweils einen Prozess ausgeliefert wird, können die Worker-Prozesse die Daten parallel verarbeiten. Dadurch wird das ganze System beliebig skalierbar.

Auf meiner GitHub-Seite  [5] �nden Sie eine Visual Studio Solution, die die Architektur aus Abbildung 3 de-monstriert. Der Code wurde bewusst einfach gehalten. Für eine produktive Implementation sollte als Queueing-System des Windows Azure Service Bus berücksichtigt werden, da er weit mehr Funktionalitäten bietet als die Windows Azure Queues. Zudem muss die Datenverar-beitung fehlertolerant implementiert werden, damit eine Datei nicht doppelt verarbeitet wird.

Webclients und CORSDie gezeigte Lösung funktioniert für alle Arten von Cli-ents, egal ob man z. B. WPF, WinForms, Java oder eine

App-Technologie verwendet. Auch für browserbasierte Applikationen kann diese Lösung eingesetzt werden. Um mit JavaScript auf den Azure Storage zuzugreifen, wird noch eine Cross-Origin Resource Sharing Policy (CORS-Policy) benötigt, die vorgängig auf dem Storage-Account gesetzt werden muss. Die Details dazu �nden Sie unter [4].

Datenschutz und KostenSollten Sie Bedenken bezüglich des Datenschutzes in der Cloud haben, besteht die Möglichkeit, die Daten im Vor-feld zu verschlüsseln. Tauschen Sie dazu zwischen Client und Server neben dem SAS-URL für die Verschlüsselung zusätzlich einen Schlüssel aus. Dieser kann sowohl sym-metrisch (z. B. AES) als auch asymmetrisch (z. B. RSA) sein. Es ist sinnvoll, eine Komprimierung der Daten zu erwägen, bevor Sie sie verschlüsseln und hochladen.

Microsofts Windows Azure und Amazons Web Servi-ces stehen seit Jahren im Preiskampf miteinander. Dies führte dazu, dass die Preise für den Windows Azure Sto-rage in der Vergangenheit einige Male gesenkt wurden. Zum Zeitpunkt des Verfassens dieses Artikels kostet ein Gigabyte pro Monat 0,053 Euro. Zusätzlich wird pro 100 000 Storage-Zugriffe ein Cent fällig [6]. Für die meisten Applikationen sind diese Kosten vernachlässig-bar klein, insbesondere wenn die Daten nur kurz auf der Cloud zwischengespeichert sind. Neben dem Storage be-zahlt man auch den Transfer von Daten aus dem Cloud-Datencenter heraus, wobei die ersten fünf Gigabyte pro Monat nichts kosten. Eingehende Datentransfers sind immer kostenlos. Die Kosten für die Azure Queue bzw. den Azure Service Bus �nden Sie ebenfalls unter [6].

FazitDieser erste Artikel in der Serie zu Real World Windows Azure zeigt, wie Windows Azure als Zwischenablage genutzt werden kann, falls man größere Datenmengen vom Client zum Server übertragen muss. Der Azure Sto-rage bietet hier eine einfache, sichere und skalierbare Lösung an. Im nächsten Artikel werden wir sehen, wie mithilfe von Windows Azure ein Industrieroboter fern-gewartet werden kann.

Links & Literatur

[1] http://rolandkru.azurewebsites.net/rwwa

[2] http://msdn.microsoft.com/en-us/library/system.web.con�guration.httpruntimesection.maxrequestlength(v=vs.110).aspx

[3] http://support.microsoft.com/default.aspx?scid=kb;EN-US;295626

[4] http://rolandkru.azurewebsites.net/rwwa1

[5] https://github.com/rolandkru/RWWA-Article1

[6] http://www.windowsazure.com/de-de/pricing/overview/

Präsentiert von VeranstalterSupported by

Das große Trainingsevent für Android- und iOS-Developer!

Alle Infos auf www.mobile-testing-days.de

Jetzt Teilnahme

sichern!

Florian Bürgerkeslcod

Wolfgang Frank

arconsis IT-Solutions

Moritz Haarmann

Freiberuflicher Berater

Andreas Lüdeke

TestObject

Michael Kotten

open knowledge

Samuel Mellertarconsis

IT-Solutions

Danny PreusslerGroupon

Lars Röwekamp

open knowledge

Jonas Stubenrauch

arconsis IT-Solutions

Olaf Zschiedrich

eBay Kleinanzeigen

4. – 5. Juni 2014, Berlin

Die Top-Trainer der Mobile Testing Days

Abb. 3: Skalierbare

Lösung mithilfe von

Warte-schlangen

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

[email protected] @rolandkru

Page 5: Roslyn - bbv Software Services AG · 2015-09-21 · 51 Real World Windows Azure . azure 6.2014 spielsweise SMTP, also E-Mails, zur Übertragung der Daten vom Client zum Server nutzen

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