• Nie Znaleziono Wyników

lab 1

N/A
N/A
Protected

Academic year: 2021

Share "lab 1"

Copied!
10
0
0

Pełen tekst

(1)

1. Wprowadzenie

Aplikacje webowe są aplikacjami typu klient-serwer, czyli w uproszczeniu w odległym miejscu ustawiony został serwer podłączony do sieci internet. Serwer ten ma nadany unikatowy adres sieciowy, po którym możemy do niego wysyłać paczki danych i utworzyć połączenie. Jego zadanie to nasłuchiwanie i przyjmowanie przychodzących połączeń. Sam zazwyczaj nie nawiązuje samodzielnie połączeń.

Na podstawie adresu i danych, które przychodzą od klienta, serwer generuje odpowiedź i odsyła klientowi, po czym połączenie zostaje zamknięte.

Klientami w przypadku aplikacji www są przeglądarki. Ich zadaniem jest pobieranie tekstowych dokumentów HTML-a z serwerów i renderowanie w ich wizualnej reprezentacji użytkownikowi. Przeglądarka w odpowiedzi na akcję wykonywaną przez użytkownika zbiera dane oraz adres. Następnie nawiązuje połączenie z serwerem i przesyła dane. W odpowiedzi otrzymuje kontekst do wyrenderowania kolejnej strony.

Celem zajęć laboratoryjnych jest stopniowe tworzenie aplikacji webowej opartej o technologię ASP.NET MVC.

MVC jest wzorcem projektowym w rozwinięciu Model Widok Kontroler.Model – Odpowiada za dostęp i odwzorowanie danych w tym:

Repozytoria (Repository) klasy dostępowe do danych. Wykonują akcję bezpośrednio na źródle danych np. zapytania sql na bazie.

Modele klasy mapujące-odwzorowujące dane w aplikacji www np. encje bazy sql użytkowników serwisu. Przechowują dane pobrane z bazy danych.

Controller – Tworzy logikę rozwiązania w tym: ◦ Obsługuje żądania użytkowników.

◦ Wykonuje akcje na modelu danych.

◦ Dostarcza odpowiedni Interfejs html (Widok) użytkownikom.

View – Określa wygląd i funkcjonowanie interfejsu użytkownika (HTML wyświetlany w przeglądarce) oraz określa sposób prezentacji danych. Internet Serwer Klient Klient Klient Serwer Kontroller Model Widok Klient

(2)

2. Nowy projekt Visual Studio:

Tworząc projekt wybieramy typ projektu: „ASP.NET Web Aplication” następnie „MVC”. Nowo utworzony projekt ma następującą strukturę.

(brak zakładki „Solution Explorer” to z górnej belki View->SolutionExplorer)

Katalogi:

App_Data – Dane aplikacji np. może to być plik bazy danych.

App_Start – Stała wewnętrzna konfiguracja aplikacji.

Content – Dodatkowe stałe treści, jak np. pliki css.

Images – Obrazki związane ze stałym wyglądem strony.

Controllers – klasy z kontrolerami, do których serwer przekazuje wątek obsługujący przychodzące żądanie od użytkownika, czyli klienta.

Models – Elementy odpowiedzialne za komunikację z bazami danych. Repozytoria modele.

Views – Widoki, czyli html połączony z kodem, do którego wstrzykiwane są dane. • Global.asax – Odpowiednik maina. Interfejs

wystawiany serwerowi w celu komunikacji pomiędzy serwerem, a waszą aplikacją. • Web.config – Plik konfiguracyjny aplikacji.

Dodawany jest na serwer docelowy wraz ze skompilowaną aplikacją web. Pozwala dostosować aplikację w zależności od środowiska serwera, na którym zostanie uruchomiona.

Najważniejszymi informacjami są adresy serwerów SQL skąd aplikacja pobiera dane.

(3)

3. Kontrolery

W uproszczeniu jest to klasa, której metody są wystawione na zewnątrz serwera. Wprowadzając w przeglądarce odpowiedni adres URL można zdalnie wywołać wskazany kontroler oraz jego metodę. Domyślnie adres URL interpretowany jest w następujący sposób.

host/{kontroler}/{metoda}/{id}

{kontroler} – nazwa klasy kontrolera z ścieżki:

/Controllers/{kontroler}Conttroler.cs. Domyślna wartość → Home

{metoda} – nazwa metody z Waszego kontrolera, do której serwer przekaże wątek. Domyślna wartość → Index

{id} – dodatkowy atrybut id przekazywany do metody, czyli np. indeks(int id){}

Domyślna wartość → brak

Przykład:

localhost:1213/Test/Test → wywoła metodę Test() z klasy

Controllers/TestController .

localhost:1213/Test → wywoła metodę Index() z klasy

Controllers/TestController .

localhost:1213/Home/About → wywoła metodę About() z klasy

(4)
(5)

Dodając kolejne metody do kontrolera możemy uzyskać pewną funkcjonalność.

W przykładzie posiadamy dwie metody, jedna Index druga Add.

Index przyjmuje parametr id typu int? (int lub null). URL do niego może wyglądać następująco:

◦ /Dom → Index(id <= null) ◦ /Dom/Index/2 → Index(id <= 2) ◦ /Dom/Index → Index(id <= null) • Add wymaga obu parametrów:

◦ /Dom/Add?Address=sezamowa_12&Pokoi=10

Metoda ta dodatkowo tworzy i zwraca przekierowanie do metody indeks po wykonaniu. Tzn. Wasza przeglądarka trafiając w tą metodę otrzyma polecenie przekierowania na adres /Dom/Index. Dzięki temu metoda nie musi posiadać własnego widoku.

(6)

4. Modele danych

W przykładowym kodzie kontrolera występują obiekty reprezentujące domy. Jest to również klasa w tym przypadku modelu danych. Klasy tego typu należy umieszczać w katalogu Models i najlepiej w nazwie klasy dodać dopisek Model.

5. Widoki

Każda metoda kontrolera, ostatecznie ma za zadanie zwrócić wygenerowany kod HTML, który przeglądarka wyrenderuje użytkownikowi. Kod ten mógłby być generowany w kontrolerach, jednakże kod aplikacji straci dużo na przejrzystości. Z tego powodu fragmenty kodu odpowiadające za wygenerowanie widoków zostały przeniesione do katalogu Views. Każdy podkatalog odpowiada nazwie kontrolera, dla którego zawiera zestaw widoków. Katalog Views/Dom/ zawiera widoki przeznaczone dla kontrolera Dom. Dodatkowo istnieje katalog Shared gdzie umieszcza się widoki wspólne dla wielu kontrolerów.

W kontrolerze wywołując metodę View otrzymujemy wygenerowany kod HTML na podstawie odpowiedniego widoku powiązanego z danym kontrolerem. Następnie pozostaje jedynie zwrócić go z metody kontrolera.

• Return View() → zwróci widok z katalogu

/Views/{Kontroler}/{Metoda}.cshtml

• Return View(„_nazwa_”) → zwróci widok z katalogu

/Views/{Kontroler}/{_nazwa_}.cshtml

lub jeśli go nie znajdzie przeszuka następnie /Views/Shared/{_nazwa_}.cshtml

(7)

Aby dodać widok można go utworzyć w odpowiednim katalogu lub kliknąć prawym przyciskiem w bloku metody kontrolera i wybrać „Add View”.

Jak widzimy utworzony widok zawiera jedynie wycinek html-a. Całość znajduje się w pliku /Views/Shared/_Layout.cshtml, gdzie nasz fragment kodu będzie wyrenderowany i wklejony w linijce @RenderBody().

Widok został odseparowany od klasy kontrolera, z tego powodu można przekazywać dane do widoku za pomocą trzech elementów.

ViewData[„nazwa elementu”] - tablica asocjacyjna widoczna w widoku i kontrolerze.

ViewBag.nazwa_element – dynamiczny obiekt.

Model Danych → Widok typu „strong typed” - widok dedykowany pod specyficzny obiekt modelu danych.

(8)

Przykładowy widok, jednocześnie wyświetla jak i zawiera formularz, pozwalający dodawać kolejne domy.

W widokach typu Raizor odwołania do wartości zmiennej lub innych np. funkcji poprzedza się znakiem '@'

using → dołączenie namespace np. modeli danych @using lab1.Models; • pętle @foreach (var item in Model){  <p>@item</p> } • warunki @if (Model.Length == 0){   <p>Brak towaru</p> } else{  <p>Towar dostepny</p> } • boki kodu @{  string text="Hello";  text+=" World"; } @text

(9)
(10)

Zadanie 1

Stworzyć aplikację, która pozwoli zarządzać biblioteką. Podstawową funkcjonalnością jest wyświetlanie i dodawanie książek do katalogu. Dodatkowo aplikacja powinna pozwalać wyszukiwać i usuwać pozycje z katalogu.

Zadanie 2

Rozszerzyć o możliwość wyświetlania i przypisywania pozycji historii wypożyczeń wraz z osobą która wypożyczała pozycję.

Cytaty

Powiązane dokumenty

tować „poważnie”: szukają w nim obiektywnych praw, reguł i wartości, przyzna ­ ją mu moc determinowania ludzkich działań, gdyż zapominają o własnej wolnoś ­

Aby rozłączyć połączenie VPN, klikamy prawym przyciskiem myszy na ikonkę OpenVPN klienta i z rozwijanej listy wybieramy serwer VPN (jeśli jest ich więcej niż jeden) , a

Prace związane ze zwiększaniem widoczności strony w Google, jakie wykonuje (nie współpracujący z firmą SEO) właściciel strony obejmuje najczęściej poniższe

Za pomocą połączenia konta w PBN z numerem ORCID ID, system PBN umożliwia, po wyrażeniu odpowiednich zgód, wysyłanie w bardzo łatwy sposób publikacji w nim zgromadzonych na

Jeżeli użytkownik będzie logował się z innej przeglądarki, która nie była dodana wcześniej jako urządzenie zaufane albo zmienione zostaną badane przez system cechy

(Uczniowie prowadzą krótką dyskusję na ten temat. Mogą w niej pojawić się różnorodne opinie. Uczniowie mogą wskazywać, że w sytuacji gospodarczej i społecznej, jaka

Utworzyć strukturę eksportowanego projektu (zaznaczyć Create directory structure for files), zaznaczyć eksportowane katalogi i pliki oraz wybrać katalog do eksportu pliku..

3) Każdy wykres należy podpisać oraz nazwać osie X, Y pamiętając o JEDNOSTKACH! Żeby to zrobić, należy wejść w opcje danego wykresu. Klikając na poszczególne jego