Projektowanie aplikacji ASP.NET 2018/2019
Materiał wykładu będzie również publikowany na Platformie e-Learningowej Uniwersytetu Wrocławskiego. 
Zapraszam do korzystania. Klucz dostępu: ASP.
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):
  
  - > 75% bdb
  
 - 50%-75% db
  
 - 25%-50% dst
  
 - < 25% ndst
  
 
Wykłady/ćwiczenia
Materiał wykładu:
-  ASP.NET WebForms
 -  ASP.NET MVC
 -  WCF/WSDL
 -  WebAPI/REST
 -  Autentykacja/autoryzacja
 -  Ajax
 -  ASP.NET Core
 
- 2018-10-09 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 2018-10-30)
 - 2018-10-16 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 2018-11-06)
 - 2018-10-23 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
 - 2018-10-30 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
	
 
	
Zestaw 3 (do 20/27-11-2018) 
 - 2018-11-06 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
	
 
Notatki do wykładów 4 i 5
 - 2018-11-13 Autentykacja/autoryzacja (1)
 
	
	
	- Autentykacja a autoryzacja
	
 - Uwierzytelnianie typu 401 Challenge vs 302 Redirect
	
 - 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
	
 - Automatyczne wykorzystywanie dostawców - przykład formantu asp:Login
	
 
	
 - 2018-11-20 Autentykacja/autoryzacja (2)
 
	
	
	- 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)
	
 - Autentykacja Windows - uwierzytelnianie typu 401 Challenge dla użytkowników systemu operacyjnego/domeny. NTLM, Kerberos.
	
 - 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
	
	
 
Notatki do wykładów 6 i 7 
Zestaw 4 (do 04/11-12-2018)
 - 2018-11-27 ASP.NET MVC (1)
 
	
Notatki do wykładu 8 
 - 2018-12-04 ASP.NET MVC (2)
	
	- @RenderBody vs @RenderSection
	
 - statyczne przekazywanie danych z kontrolera do widoku - model
	
 - dyrektywa @import
	
 - 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 5 (2018-12-18) (uwaga, ostatnie zadanie na styczeń)
 - 2018-12-11 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 
	
 
	
Notatki do wykładu 11
	
 - 2019-01-08 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 6 (do końca semestru)	
 - 2019-01-15 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
	
 - Klient WCF w Javascript vs klient WebAPI w Javascript
	
 
Notatki do wykładu 13
	
Przykład WebApi
	
 - 2019-01-22 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
	
Zestaw 7 (do końca semestru)	
							
 - 2019-01-29 ASP.NET perspektywy