Windows Azure
Transkrypt
Windows Azure
MVC, Razor i Azure – technologie dla programistów Wykonanie: Adam Augustyniak Kamil Kołodziejski Łukasz Żmudziński UWM 2015 AGENDA • Model MVC – złożony wzorzec projektowy Opisanie wzorca, wytłumaczenie zasad jego działania oraz budowy, a także omówienie konsekwencji, niosących ze sobą stosowanie MVC. • Razor Zapoznanie się z budową składni Razor, oraz jej praktycznym wykorzystaniem • Azure – chmura dla programistów Zapoznanie z technologią Microsoft Azure, wyjaśnienie możliwości oferowanych przez tę platformę, krótki opis użytych technologii, poradnik jak tworzyć aplikacje, a także co nieco o bezpieczeństwie naszych danych w chmurze. MODEL MVC – ZŁOŻONY WZORZEC PROJEKTOWY Jak wygląda? Jak działa? Kosnsekwencje stosowania Kiedy używać? MVC – JAKO WZORZEC MVC - wzorzec architektoniczny służący do organizowania struktury aplikacji posiadających GUI. Można go traktować jak wzorzec złożony z innych wzorców takich jak: • Obserwator • Strategia • Kompozyt Przy konkretnej implementacji można też mówić w MVC o wzorcach takich jak: • Metoda wytwórcza • Dekorator • Most • Łańcuch zobowiązań • Polecenie BUDOWA MVC CZ.1 Model-View-Controller zakłada podział aplikacji na trzy główne części: • Model – jest pewną reprezentacją problemu bądź logiki aplikacji. • Widok – jest wizualizacją modelu. Ta część będzie pokazana użytkownikowi. Może składać się z podwidoków odpowiedzialnych za mniejsze części interfejsu. • Kontroler – przyjmuje dane wejściowe od użytkownika i reaguje na jego poczynania, wysyłając odpowiednie polecenia do modelu. Przy czym bardzo ważne jest to, że wszystkie trzy części są ze sobą wzajemnie połączone. Bardzo dobrze logikę aplikacji opisują dwa poniższe schematy. BUDOWA MVC CZ.2 W typowych aplikacjach wyróżnić można trzy główne rodzaje aktywności: • struktury danych, algorytmy przetwarzania oraz kanały komunikacyjne – opis problemu, • komponenty do prezentacji danych • obsługę danych wejściowych, czyli reagowanie na poczynania użytkownika. W Model-View-Controller dla każdego z nich jest jawnie wydzielana osobna część, która komunikuje się z pozostałymi: model do reprezentowania danych przetwarzanych w programie, widok do generowania wyjścia i prezentowania wyników oraz kontroler do obsługi wejścia. Istotne jest, że każda z części MVC ma wyłączność na zarządzanie swoją częścią procesu – przykładowo nie może dojść do sytuacji, w której kod odpowiedzialny za wyświetlanie graficznego interfejsu użytkownika znajdzie się w modelu bądź kontrolerze. Komunikacja między widokiem a kontrolerem jest łatwa do opisania, ponieważ oba te komponenty są stworzone do pracy ze sobą, jednak model musi komunikować się z nimi w sposób niejawny MODEL Model jest aktywną reprezentacją pewnego fragmentu komputerowej reprezentacji problemu. W danej aplikacji może istnieć kilka modeli tego samego elementu. Model jest samodzielny — do poprawnej pracy nie wymaga obecności dwóch pozostałych części, dlatego komunikacja z nimi musi zachodzić w sposób niejawny. Wyróżniane są dwa podstawowe rodzaje modeli: • pasywny model - kontroler po wywołaniu odpowiedniej metody modelu powiadamia widok o aktualizacji. W tym przypadku widok jest całkowicie nieświadomy modelu – to kontroler musi zaktualizować odpowiednie kontrolki • aktywny model - widok za pomocą wzorca obserwator (w C# są to zdarzenia) sam dba o odpowiednią synchronizację z modelem. WIDOK Widok jest odpowiedzialny za prezentację danych w obrębie graficznego interfejsu użytkownika. Może składać się z podwidoków zarządzających mniejszymi elementami składowymi. Widoki posiadają bezpośrednie referencje do modeli, z których pobierają dane, gdy otrzymują od kontrolera żądanie odświeżenia. Widoki mogą także modyfikować stan modelu, jeśli dana modyfikacja dotyczy sposobu prezentacji danych KONTROLER Zadaniem kontrolera jest odbiór, przetworzenie oraz analiza danych wejściowych od użytkownika. W typowej aplikacji źródłami danych wejściowych będą klawiatura i mysz. Po przetworzeniu odebranych danych kontroler może wykonać następujące czynności: • zmienić stan modelu, • odświeżyć widok, • przełączyć sterowanie na inny kontroler. Każdy kontroler posiada bezpośrednie wskazania na określone modele i widoki, z którymi współpracuje, a jednocześnie w aplikacji może istnieć wiele kontrolerów. W danym momencie tylko jeden z nich steruje aplikacją. KONSEKWENCJE – ZALETY I WADY UŻYCIA MVC Zalety: • Wiele widoków – ten sam model, można przedstawić na wiele różnych sposobów, co daje pełniejszy ogląd sytuacji/problemu. • Zmiany – łatwiejsze zmiany zmieniającego się dużo częściej od modelu interfejsu Wady: • Nadmierne skomplikowanie – dodatkowe warstwy oraz rygor niezależności; intensywne wykorzystanie programowania zdarzeniowego, które jest trudne w debugowaniu. • Koszt częstych uaktualnień/powiadomień – uaktualnienie widoku zabiera formularzowi jakiś czas; gdy model często zmienia swój stan, może zablokować ekran, a przez to uniemożliwić pracę dla użytkownika PORADNIKI I PRZYDATNE INFORMACJE O MVC • https://msdn.microsoft.com/en-us/library/ff649643.aspx - niestety nie do końca aktualny (Nie obejmuje zmian z MVC6), ale ciągle tłumaczący bardzo wiele zagadnień związanych z MVC, poradnik. • http:// docs.asp.net/projects/mvc/en/latest/getting-started/first-mvc-app/start-mvc.html?highlight =mvc – poradnik z którym można stworzyć pierwszą aplikację w MVC 6 • http:// docs.asp.net/projects/mvc/en/latest/migration/migratingfrommvc5.html?highlight=mvc – dla bardziej zaawansowanych co nie co o migracji z MVC 5 do MVC 6 • http://docs.asp.net/projects/mvc/en/latest/views/view-components.html?highlight=mvc – opis jednej z najważniejszych zmian w MVC 6 czyli „View Components” RAZOR Co to jest? Do czego służy? Podstawowa składnia Szablony stron RAZOR – CO TO JEST? Razor to język znaczników działający po stronie serwera Generuje zawartość strony sieciowej w trakcie requestów Opiera się na języku C# oraz visual basic Pojawił się w MVC 3 RAZOR – CO TO JEST? Razor Clasic ASP <ul> @for (int i = 0; i < 10; i++) { <li>@i</li> } </ul> <ul> <% for (int i = 0; i < 10; i++) { %> <li><% =i %></li> <% } %> </ul> RAZOR – DO CZEGO SŁUŻY? Pozwala na generowanie kodu html dla stron zależnie od tego, jak wyglądają wyniki wykonywanego kodu Pozwala na wykorzystanie logiki warunkowej oraz pętli w generacji elementów stron Pozwala na dostęp do obiektów w aplikacji Pozwala na wywoływanie metod, w tym takich jak łączenie z bazą danych RAZOR – PODSTAWOWA SKŁADNIA @{ var total = 7; } @{ var myMessage = "Hello World"; } <p>The value of your account is: @total </p> <p>The value of myMessage is: @myMessage</p> @{ var greeting = "Welcome to our site!"; var Today = DateTime.Now; DateTime AlsoToday = DateTime.Now; var greetingMessage = greeting + " Today is: " + Today; } <p>The greeting is: @greetingMessage</p> RAZOR – PODSTAWOWA SKŁADNIA =, +, -, *, / +=, -= ==, !=, >, <, >=, <= . () [] !, &&, || RAZOR – PODSTAWOWA SKŁADNIA Int AsInt(), IsInt() Float AsFloat(), IsFloat() Decimal AsDecimal(), IsDecimal() Bool AsBool(), IsBool() String ToString() RAZOR – PODSTAWOWA SKŁADNIA <html> <body> @for(var i = 10; i < 21; i++) {<p>Line @i</p>} </body> </html> <html> <body> @{ var i = 0; while (i < 5) { i += 1; <p>Line @i</p> } } </body> </html> RAZOR – PODSTAWOWA SKŁADNIA <html> <body> <ul> @foreach (var x in Request.ServerVariables) {<li>@x</li>} </ul> </body> </html> RAZOR – PODSTAWOWA SKŁADNIA @{var price=25;} <html> <body> @if (price>=30) { <p>The price is high.</p> } else if (price>20 && price<30) { <p>The price is OK.</p> } else { <p>The price is low.</p> } </body> </html> RAZOR – PODSTAWOWA SKŁADNIA @{ var weekday=DateTime.Now.DayOfWeek; var day=weekday.ToString(); var message=""; } <html> <body> @switch(day) { case "Monday": message="This is the first weekday."; break; case "Thursday": message="Only one day before weekend."; break; case "Friday": message="Tomorrow is weekend!"; break; default: message="Today is " + day; break; } <p>@message</p> </body> </html> < RAZOR – SZABLONY STRON <html> <head> <title>@RenderSection("title", true)</title> </head> <body> <div>Częśc wspólna</div> <div>@RenderBody()</div> </body> </html> < RAZOR – SZABLONY STRON @{ Layout="Layout.cshtml„; } <p>Jakis Tekst</p> @section title { Tytul strony } AZURE – CHMURA DLA PROGRAMISTÓW Czym tak naprawdę jest Microsoft Azure? Użyte technologie Tworzenie Aplikacji Bezpieczeństwo Komu i kiedy opłaca się z niej skorzystać? CO TO JEST MICROSOFT AZURE? Microsoft Azure (wcześniej: Azure Services Platform, Windows Azure) – platforma chmurowa firmy Microsoft stworzona w modelu PaaS (Platform as a Service). Udostępnia ona mechanizmy pozwalające przetwarzać dane (Windows Azure Compute), a także je składować (Windows Azure Storage, SQL Azure). Platforma Windows Azure występowała pod nazwa kodową „Red Dog”. ELEMENTY SKŁADOWE • Windows Azure – zapewnia środowisko uruchomieniowe dla aplikacji oparte na systemie operacyjnym bazującym na Windows Server (nosi on nazwę Windows Azure Guest OS), a także przestrzeń do składowania danych. System ten uruchamiany jest na maszynach wirtualnych wykorzystujących technologię zbliżoną do Hyper-V. Compute – odpowiada za zadania obliczeniowe hostowanych aplikacji. Storage – odpowiada za przechowywanie danych w chmurze. Fabric – odpowiada za zarządzanie i monitorowanie aplikacji uruchomionych w chmurze, a także nadzór maszyn działających w centrum obliczeniowym. • SQL Azure – zapewnia możliwość używania relacyjnej bazy danych zaimplementowanej do uruchamiania w chmurze. • Windows Azure Platform AppFabric – komponent dostarczający dodatkowe funkcjonalności w formie usług. Wśród nich znajdziemy następujące mechanizmy: Service Bus – pozwala tworzyć chmurę hybrydową i zapewnia bezpieczne połączenie między zasobami zdalnymi i lokalnymi Access Control Services – mechanizm odpowiadający za kontrolę dostępu do usług (wykorzystywany jest np. przez Service Bus). Opiera się on o koncepcję federacyjną. Caching – rozproszony cache „w pamięci”. KRÓTKI POKAZ MOŻLIWOŚCI I ZYSKÓW AZURE USŁUGI JAKIE TECHNOLOGIE W CHMURZE? Tak naprawdę są to wszystkie technologie dające się uruchomić na platformie Windows. Oprócz technologii .Net (technologia referencyjna dla chmury Windows Azure) można wykorzystywać także takie technologie jak Java, PHP, C/C++ czy Python. Istnieje także zestaw narzędzi ułatwiających pisanie rozwiązań dla chmury Windows Azure przeznaczonych do popularnych IDE takich jak Visual Studio czy Eclipse. Ze strony Microsoft można pobrać Windows Azure SDK dedykowane dla platformy .Net, Java, PHP i Ruby. EMULATOR CHMURY Ważnym składnikiem SDK jest emulator chmury. Pozwala on na lokalne uruchamianie, testowanie oraz debugowanie tworzonych aplikacji. Nie jest on jednak w 100% zgodny z rzeczywistą platformą. Najważniejsze różnice to: • Emulator pozwala na podłączenie się do uruchomionej na nim roli i jej debugowanie w trakcie działania aplikacji. Prawdziwa platforma Windows Azure nie pozwala na to. • Instancja uruchomiona na emulatorze posiada dostęp do bibliotek zarejestrowanym w lokalnym Global Assembly Cache (GAC), do rejestru i konfiguracji komputera. Usługi te nie są jednak dostępne na rzeczywistej platformie. • Emulator pozwala na wypisywanie informacji diagnostycznych na konsoli lub wykorzystanie Windows Azure Diagnositics do przechwytywania takich wiadomości. Na Platformie Windows Azure, logowanie informacji możliwe jest tylko za pomocą Windows Azure Diagnostics, a wszelkie informacje przechowywane są w specjalnej tabeli w Windows Azure Storage. • Wszystkie instancje uruchomione na emulatorze posiadają uprawnienia administratora natomiast te uruchamiane na Platformie posiadają uprawnienia standardowego użytkownika Windows • Emulator nie odzwierciedla w pełni zachowania load balancera wykorzystywanego na Platformie Windows Azure . BEZPIECZEŃSTWO • Windows Azure posiada wiele procedur i rozwiązań technicznych zapewniających wysokie bezpieczeństwo danych i aplikacji umieszczonych w chmurze. Można tutaj wyróżnić wielokrotne replikacje danych, tak aby przynajmniej jedna kopia znajdowała się w innym centrum obliczeniowym. Inną cechą jest podział maszyn na tzw. obszary awarii (ang. fault domains), a instancje aplikacji są na nich rozlokowywane tak, aby każda aplikacja znajdowała się w innym obszarze awarii. Dzięki temu, w przypadku fizycznej awarii komputera istnieje mniejsza szansa na awarię aplikacji. Kolejną procedurą bezpieczeństwa jest fizyczne niszczenie wszelkich uszkodzonych dysków, które były wykorzystywane do przechowywania jakichkolwiek danych. Dzięki temu dane informacje, które przesyłane są do chmury i tam gromadzone, są świetnie zabezpieczone przed ich utratą oraz odczytaniem z dysków przez niepowołane osoby. INWIGILACJA? Bardzo drażliwy temat szczególnie w dzisiejszych czasach. Sprawa tutaj wygląda bardzo podobnie jak z chmurą osobistą – decydujemy jakie dane chcemy tam wrzucić na własną odpowiedzialność. Trzeba zapoznać się dokładnie z umową licencyjną i zdecydować czy nam to odpowiada czy nie. DLA KOGO MICROSOFT AZURE I DLACZEGO? • Dla firm które potrzebują dużej mocy obliczeniowej, a nie chcą kupować drogiego sprzętu • Dla firm które mają duże bazy użytkowników – aby zabezpieczyć się przed utratą danych • Dla firm w których skalowalność ma duże znaczenie – Azure gwarantuje, że nigdy nie zbraknie miejsca, ani mocy. Płacimy za wykorzystanie rzeczywiste, a nie za możliwości. • Dla studentów – programistów. Azur udostępnia swoje możliwości w pewnym stopniu za darmo, można testować, sprawdzić czy jest nam to potrzebne. Dziękujemy za wysłuchanie prezentacji zapraszamy na pokaz ćwiczeniowy