Projektowanie aplikacji ASP.NET 2019/2020
Zasady zaliczania
Spotykamy się na pracowni, oglądając rozwiązania zadań z zestawów i rejestrując rozwiązania zadania na paskach deklaracji. Podstawą zaliczenia jest
uzyskanie odpowiedniej liczby punktów (w tabelce niżej podano procentowo):
- > 80% bdb
- 60%-80% db
- 40%-60% dst
- < 40% ndst
Punktacja częściowa
Wykłady/ćwiczenia
Materiał wykładu:
- ASP.NET WebForms
- ASP.NET MVC
- WCF/WSDL
- WebAPI/REST
- Autentykacja/autoryzacja
- Ajax
- ASP.NET Core
- 2019-10-08 Wprowadzenie
- Sprawy organizacyjne
- Omówienie narzędzi do rozwijania aplikacji ASP.NET
- Internet Information Services 8/10 (IIS) - instalacja, konfiguracja usługi ASP.NET
- Zarządzanie witrynami i aplikacjami w ramach witryn na serwerze IIS
- IIS - typy MIME, mapowanie rozszerzeń na funkcje obsługi
- Najprostszy scenariusz deploymentu aplikacji
Notatki do wykładu 1
Zestaw 1 (do 2019-10-22)
- 2019-10-15 Infrastruktura ASP.NET
- Cykl życia stron ASP.NET, dwa poziomy kompilacji
- HTML5 - czy już a jeśli nie to dlaczego?
- Podgląd efektu kompilacji zasobów deklaratywnych, aspnet_compiler
- Fiddler, debugger warstwy HTTP, przechwytywanie/modyfikacja żądań/odpowiedzi
- Formanty na serwerze a formanty na kliencie
- HTTP GET vs HTTP POST
Notatki do wykładu 2
Zestaw 2 (do 2019-10-29)
- 2019-10-22 Architektura aplikacji
- Pełna kontrola nad strumieniem odpowiedzi, nagłówki Content-type i Content-disposition
- Podtrzymywanie stanu HTTP
- z pomocą klienta - ciastka, ViewState
- bez pomocy klienta - kontenery Application, Session, Items
- Przekazywanie parametrów między stronami
- ciastka
- viewstate
- kontenery serwerowe (które?)
- HTTP POST
- Przekierowywanie żądań między stronami
- Response.Redirect
- Server.Transfer
- Higiena aplikacji
- Statyczne składowe klas - które są bezpieczne, na które trzeba uważac
- Kontenery sesyjne i pseudosingletony
Notatki do wykładu 3
- 2019-10-29 Autentykacja/autoryzacja (1)
- Autentykacja a autoryzacja
- Uwierzytelnianie typu 401 Challenge vs 302 Redirect
- Autentykacja Windows - uwierzytelnianie typu 401 Challenge dla użytkowników systemu operacyjnego/domeny. NTLM, Kerberos.
- Bezpieczne przechowywanie informacji o użytkowniku, bcrypt
- Scenariusze "odzyskiwania dostępu" do konta, blokowanie konta w razie nieudanego logowania
- OWASP Secure Coding Practices (rozdział Authentication and Password Management)
- Autentykacja Forms - uwierzytelnianie typu 302 redirect podtrzymywane ciastkiem
- Szczegółowa kontrola nad ciastkiem Forms Authentication - klasa FormsAuthenticationTicket
- Model dostawców - MembershipProvider, fasada Membership
Notatki do wykładów 4 i 5
Zestaw 3 (do 2019-11-12)
- 2019-11-05 Autentykacja/autoryzacja (2)
- Automatyczne wykorzystywanie dostawców - przykład formantu asp:Login
- Autoryzacja - RoleProvider, Role-based security
- Różne scenariusze obsługi role providera - przy każdym żądaniu, cache w ciastku autoryzacji, cache w ciastku autentykacji (sekcja UserData)
- Uwierzytelnianie federacyjne, omówienie protokołów Single Sign On (SSO) - OAuth2 i
WS-Federation
- Konfiguracja aplikacji w ramach IIS dla dostępu uwierzytelnionego tożsamością domenową
- Przykład
- Omówienie scenariuszy federacyjnych
Zestaw 4 (do 2019-11-19/26)
- 2019-11-12 WebForms Data Binding (1)
- Wzorcowy stos aplikacyjny z wykorzystaniem Web.Forms i Linq2SQL,
kontrola czasu życia cache pierwszego poziomu technologii mapowania obiektowo-relacyjnego
- Omówienie zasady działania mechanizmu wiązania danych (data binding), binding imperatywny
- Omówienie zasady działania mechanizmu szablonowania (templating)
- Wiązanie do obiektów IEnumerable
- Formatowanie obiektów modelu dziedzinowego - pomysł z This jako dodatkową propercją w obiekcie dziedzinowym
Notatki do wykładów 6 i 7
- 2019-11-19 WebForms Data Binding (2)
- Architektura źródeł danych. SqlDataSource, ObjectDataSource
- Składanie źródeł danych z formantami (GridView + SqlDataSource, DropDownList + SqlDataSource, GridView + ObjectDataSource, DropDownList + ObjectDataSource)
- Kolumny szablonowe GridView
- Zdarzenia formantów zagnieżdżonych (RowCommand - CommandName/CommandArgument)
- Stronicowanie danych - przekazanie parametrów sortowania do metody pobierania danych w ObjectDataSource
- Sortowanie danych (Linq Dynamic Query)
(kod źródłowy biblioteki tu)
- Edycja danych - oddawanie wartości do metody aktualizującej w ObjectDataSource
- Przykład 1 z wykładu
- Przykład 2 z wykładu
Zestaw 5 (do 03/10-12-2019)
- 2019-11-26 ASP.NET MVC - routing (1)
Notatki do wykładu 8
- 2019-12-03 ASP.NET MVC (2)
- dyrektywa @import
- @RenderBody vs @RenderSection
- przekazywanie danych z kontrolera do widoku - model
- dynamiczne przekazywanie danych z kontrolera do widoku - ViewData/ViewBag/TempData
- MVC binding, w tym binding do tablic/list, zagrożenie overbinding
- autentykacja i autoryzacja w MVC
- AuthorizeAttribute
- kontroler logowania
- Html helpery - dlaczego @Html.TextBoxFor a nie <input name="...">
- ModelState i automatyczne ustawianie błędów modelu przy bindowaniu (System.ComponentModel.DataAnnotations)
- sygnalizowanie błędu logowania w widoku
- stos aplikacyjny w MVC - co zamiast pseudosingletonów?
- zagrożenie Cross Site Request Forgery, AntiForgeryToken
- Przykład z wykładu
Notatki do wykładu 9
Zestaw 6 (2019-12-17) (uwaga, ostatnie zadanie na styczeń)
- 2019-12-10 ASP.NET MVC (3)
- Własna fabryka kontrolerów
- Własny helper HTTP
- Własny model binder
- Własny filtr
- Własny atrybut walidacyjny
- Programowanie asynchroniczne
- WebGrid
- Testy jednostkowe
Notatki do wykładu 10
- 2018-12-18 ClickOnce
- Technologia ClickOnce
- Przykład aplikacji ClickOnce w architekturze trójwarstwowej
- Usługa komunikacyjna typu ASP.NET WebService
Notatki do wykładu 11
Zestaw 7 (do końca semestru)
- 2020-01-14 WebServices (1): SOAP vs REST
- Klasyfikacja WebServices - SOAP vs REST
- Ewolucja SOAP - od ASMX do WCF
- Tworzenie usługi SOAP w technologii ASP.NET ASMX WebServices
- Web Service Description Language (WSDL)
- WCF = SOAP
- WCF - konfiguracja deklaratywna vs imperatywna, serwisu i klienta
- WCF - self-hosting
- WCF - WSDL vs interfejs, ChannelFactory vs ClientBase
- rozszerzenia, przykład IEndpointBehavior
- Szczegóły implementacyjne
- Atrybuty usługi (ServiceContract/OperationContract) i atrybuty danych (DataContract/DataMember),
klasa Message
- WCF Self-hosting
- WCF a WSDL
- WCF od interfejsu w C#
- Klient WCF z wykorzystaniem ChannelFactory vs klient z wykorzystaniem ClientBase
- Hostowanie WCF w IIS, wykorzystanie potoku ASP.NET (cykl życia, kontenery, autentykacja)
- Rozszerzanie WCF - przykład inspektora wiadomości po stronie klienta i po stronie serwera
Notatki do wykładu 12
Przykład WCF (1)
Przykład WCF (2)
Zestaw 8 (ostatni, do końca semestru)
- 2020-01-21 WebServices (2): SOAP vs REST
- WebAPI = REST
- WebAPI - serwis i klient
- WebAPI - self-hosting
- Swagger/OpenAPI
- Obiekty modelu utrwalanego w kontraktach usług aplikacyjnych, wzorzec Data Transfer Object
- Uwierzytelnianie usług REST
Notatki do wykładu 13
Przykład WebApi
- 2020-01-28 AJAX / CORS
- Asynchronous Javascript And XML - w praktyce częściej AHAH lub AJAJ
- AHAH - Asynchronous HTML over HTTP. Serwer zwraca zaktualizowane fragmenty drzewa DOM, które przeglądarka włącza
dynamicznie do bieżącej strony
- WebForms
- UpdatePanel, UpdateProgress
- Wyzwalacze (Triggers) panelu - PostBackTrigger, AsyncPostBackTrigger
- Ajax Control Toolkit
- MVC
- AJAJ - Asynchronous Javascript and JSON. Serwer zwraca dane (zwykle JSON) a aplikacja w przeglądarce je przetwarza.
- Zagrożenia/ograniczenia
Notatki do wykładu 14
- 2020-02-04 ASP.NET perspektywy