Windows Azure - Pierwsza aplikacja  

Udostępnij na: Facebook

Autor: Piotr Zieliński

Opublikowano: 2010-12-08

Windows Azure nie jest całkowicie nową i odrębną technologią, a raczej platformą umożliwiającą umieszczenie klasycznych aplikacji (np. ASP.NET) w chmurze. Tworzenie aplikacji Azure jest bardzo proste i wystarczy poznać tylko kilka podstaw. Cała wiedza zdobyta o ASP.NET lub WCF z pewnością zostanie wykorzystana. Artykuł pokazuje, jak stworzyć i umieścić w chmurze prostą aplikację Azure.

Utworzenie projektu

Po zainstalowaniu wymaganych dodatków można przejść do stworzenia projektu Azure:

  1. Uruchamiamy Visual Studio  w trybie administratora – wymagane są podwyższone prawa dla Azure.

  2. Z menu głównego wybieramy File->New->Project.

  3. Przechodzimy do węzła Cloud i zaznaczamy Windows Azure Cloud Service.


    Rysunek 1. Tworzenie projektu Azure.

  4. W następnym oknie należy wybrać tzw. role (są to aplikacje uruchamiane przez Azure na dowolnej liczbie komputerów). Do dyspozycji mamy ASP.NET Role, ASP.NET MVC Role, WCF Role, CGI Role oraz tzw. Worker Role. Za pomocą Workera można uruchamiać własny kod wykonujący dowolne operacje. Worker pod pewnym względem przypomina standardową usługę Windows – wykonuje w tle zdefiniowaną operację. Warto zwrócić uwagę, że można stworzyć role nie tylko wykorzystujące c#, ale również j# lub vb.


    Rysunek 2. Role Azure.

  5. Po wybraniu roli zostanie utworzony projekt i struktura powinna wyglądać następująco:


    Rysunek 3. Struktura projektu Azure.

Rola składa się ze standardowego projektu – w tym przypadku ASP.NET. Nowością zatem jest projekt Azure oraz jego pliki konfiguracyjne: ServiceDefinition.csdef i ServiceConfiguration.cscfg. Na początek przyjrzyjmy się bliżej pierwszemu z nich (ServiceDefinition.csdef):

<ServiceDefinition name="AzureSample" xmlns="https://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">

  <WebRole name="WebRole1">

    <InputEndpoints>

      <InputEndpoint name="HttpIn" protocol="http" port="80" />

    </InputEndpoints>

    <ConfigurationSettings>

      <Setting name="DiagnosticsConnectionString" />

    </ConfigurationSettings>

  </WebRole>

</ServiceDefinition>

Plik zawiera konfigurację ról. Dla projektu przedstawianego w artykule istnieje wyłącznie jedna rola – „WebRole1”. Dostęp do niej uruchamiamy za pomocą protokołu HTTP (istnieje również wsparcie dla HTTPS). Sekcja ConfigurationSettings zawiera definicje zmiennych konfigurowalnych.

Plik ServiceConfiguration.cscfg składa się z następujących części:

<?xml version="1.0"?>

<ServiceConfiguration serviceName="AzureSample" xmlns="https://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">

  <Role name="WebRole1">

    <Instances count="1" />

    <ConfigurationSettings>

      <Setting name="DiagnosticsConnectionString" value="UseDevelopmentStorage=false" />

    </ConfigurationSettings>

  </Role>

</ServiceConfiguration>

Struktura jest analogiczna do opisanego wyżej pliku ServiceDefinition – każda rola konfigurowana jest osobno.

Węzeł Instances określa, ile instancji ról zostanie uruchomionych. Serwery Azure są zlokalizowane w różnych miejscach na Ziemi. Jedną z podstawowych cech platformy jest przezroczystość lokalizacji fizycznej dla użytkownika. Użytkownik nie wie, na którym komputerze zostanie tak naprawdę uruchomiona aplikacja – to zależy już od Azure. Atrybut count węzła instance definiuje, na ilu komputerach zostanie uruchomiona aplikacja. Bardzo prawdopodobne, że będą to komputery znajdujące się w różnych centrach danych.

ConfigurationSettings zawiera wartości zmiennych konfigurowalnych. Należy więc pamiętać o wcześniejszej deklaracji zmiennych w pliku ServiceDefinition.

Uruchomienie aplikacji w środowisku symulacyjnym

Wraz z dodatkami do Visual Studio zostało zainstalowane również środowisko symulacyjne. Można w nim testować aplikację Azure bez konieczności zakładania konta. W Visual Studio wystarczy uruchomić aplikację w standardowy sposób – np. poprzez skrót F5. Wszelkie czynności związane z wdrożeniem zostaną wykonane za nas w tle.

Uruchomienie aplikacji Azure – założenie konta

Przede wszystkim należy się upewnić, czy zmienna UseDevelopmentStorage jest ustawiona na false (patrz plik konfiguracyjny). Następnie można przejść do stworzenia konta i zainstalować aplikacje na jednym z serwerów Microsoft.

Założenie konta jest bardzo proste:

  1. Wchodzimy na stronę https://windows.azure.com.

  2. Logujemy się za pomocą Windows Live ID – jeśli nie mamy jeszcze Windows Live ID, klikamy na przycisku Sign Up.

  3. Pojawi się ekran powitalny – klikamy Next.


    Rysunek 4. Tworzenie nowego konta – ekran powitalny.

  4. Do dyspozycji jest kilka pakietów. Na początek proponuję wybrać Introductory Special. Pakiet zawiera określoną ilość darmowych zasobów (przestrzeń dyskowa, czas obliczeń itp.). Po przekroczeniu limitu opłaty będą naliczane według standardowego cennika (więcej informacji na oficjalnej stronie). Pakiet z pewnością nadaje się dla osób, które chcą po prostu poeksperymentować z Azure. Klikamy więc na przycisk Buy obok nazwy pakietu.

  5. Na następnej stronie musimy podać podstawowe dane personalne. Na jednym z ekranów (krok drugi z trzech) należy podać dane karty kredytowej. Po przekroczeniu limitu darmowych zasobów właśnie z tego konta będą potrącane koszty. Następnie zapoznajemy się z regulaminem i klikamy „Kup”. Po założeniu konta zostaniemy przekierowani do panelu zarządzania Azure.


    Rysunek 5. Panel zarządzania Azure.

Uruchomienie aplikacji Azure – utworzenie usługi

  1. Klikamy na nazwie projektu w oknie My Projects – zostanie otwarte okno do zarządzania usługami.


    Rysunek 6. Zarządzanie usługami.

  2. Aby dodać nową usługę, klikamy odnośnik New Service – pojawi się okno, w którym można wybrać typ usługi. Do dyspozycji mamy Azure Storage (przechowywanie danych) oraz Hosted Services.


    Rysunek 7. Dodawanie nowych usług.

  3. Naszym celem jest wgranie aplikacji, zatem wybieramy Hosted Services. Storage Account będziemy wykorzystywać później do przechowywania danych. W formularzu wpisujemy nazwę oraz opis i klikamy Next.


    Rysunek 8. Nowa usługa "Hosted Service".

  4. Następnym krokiem jest wybranie unikalnej nazwy serwera, np. KursAzure.cloudapp.net, oraz regionu, w którym usługa powinna zostać zahostowana, a następnie klikamy „Create”.  Po chwili usługa zostanie utworzona.


    Rysunek 9. Konfiguracja Hosted Service.

Uruchomienie aplikacji Azure – publikacja aplikacji

  1. Otwieramy wcześniej utworzoną solucję Azure.

  2. Klikamy na projekcie Azure (AzureSample), a następnie z menu kontekstowego wybieramy „Publish”.


    Rysunek 10. Publikacja aplikacji.

  3. Zaznaczamy Create Service Package Only i klikamy OK. Po chwili zostanie wygenerowana paczka (AzureSample.cspkg) zawierająca cały projekt oraz plik konfiguracyjny.

  4. Wracamy do przeglądarki i panelu zarządzania Azure. Przechodzimy do wcześniej utworzonej usługi („Witaj Swiecie”) oraz klikamy w przycisk Deploy dla serwera produkcyjnego.


    Rysunek 11. Wdrażanie aplikacji.

  5. Na kolejnej stronie należy wybrać wcześniej wygenerowany pakiet zawierający aplikację (AzureSample.cspkg) oraz plik konfiguracyjny (ServiceConfiguration.cscfg). Wymagane jest również wpisanie nazwy.


    Rysunek 12. Wdrażanie aplikacji.

  6. W następnym kroku rozpoczyna się instalacja aplikacji. Po kilku sekundach proces powinien się zakończyć:


    Rysunek 13. Wdrażanie aplikacji.

  7. Aplikacja jest już wgrana, jednak  nadal po wpisaniu adresu (kursazure.cloudapp.net)  w przeglądarce ujrzymy błąd. Należy więc uruchomić aplikację poprzez kliknięcie przycisku „Run”. Po inicjalizacji możemy się przekonać, że strona o adresie kursazure.cloudapp.net rzeczywiście istnieje:


    Rysunek 14. Po wdrożeniu można się przekonać, że aplikacja faktycznie działa.

Serwery produkcyjne oraz testowe

Na zakończenie kilka słów o dwóch typach wdrożeń. Do dyspozycji mamy serwer produkcyjny oraz testowy (staging). Podczas implementacji systemu deweloper umieszcza aplikację najpierw w środowisku testowych – nie można jej zobaczyć za pomocą wcześniej zdefiniowanego linku. Dopiero po testach i akceptacji aplikacja może być przeniesiona do środowiska produkcyjnego, udostępnianego za pomocą publicznego adresu (w naszym przypadku kursazure.cloudapp.net). W panelu zarządzania istnieje opcja przenoszenia aplikacji między środowiskami, więc proces migracji ze środowiska testowanego do produkcyjnego jest szybki i zautomatyzowany.


          

Piotr Zieliński

Absolwent informatyki o specjalizacji inżynieria oprogramowania Uniwersytetu Zielonogórskiego. Posiada szereg certyfikatów z technologii Microsoft (MCP, MCTS, MCPD). W 2011 roku wyróżniony nagrodą MVP w kategorii Visual C#. Aktualnie pracuje w General Electric pisząc oprogramowanie wykorzystywane w monitorowaniu transformatorów . Platformę .NET zna od wersji 1.1 – wcześniej wykorzystywał głównie MFC oraz C++ Builder. Interesuje się wieloma technologiami m.in. ASP.NET MVC, WPF, PRISM, WCF, WCF Data Services, WWF, Azure, Silverlight, WCF RIA Services, XNA, Entity Framework, nHibernate. Oprócz czystych technologii zajmuje się również wzorcami projektowymi, bezpieczeństwem aplikacji webowych i testowaniem oprogramowania od strony programisty. W wolnych chwilach prowadzi blog o .NET i tzw. patterns & practices.