Wyklad I
Zapoznanie się z platformą .NET i środowiskiem Visual Studio.
- technologia ASP.NET,
- komponenty ASP.NET,
- pojemniki (providery) i inne obiekty używane w komunikacji ze źródłami danych.
Wersje: 2.0, 3.0, 3.5.
3.0 to dodane 4 komponenty do 2.0. W 3.5 dodano wsparcie AJAXa.
Literatura:
- Programowanie Web Forms w ASP.NET 2.0,
- ASP.NET. Programowanie,
- MSDN.
Narzędzia:
- Visual Studio 2005 (dla 2.0) - ten jest na uczelni,
- Visual Studio 2008 (2.0, 3.0, 3.5) - zalecany.
Plan:
- Aplikacja internetowa,
- Platforma .NET,
- Pierwsza strona,
- Model rozwijania aplikacji,
- Strony ASP.NET,
- Język C#.
Aplikacja internetowa - rozproszona aplikacja skłądająca się z serwera www, przetwarzającego żądania i przeglądarki internetowej udostępniającej interfejs użytkownika.
Platforma .NET:
- jednolity model oprogramowania - wspólna specyfikacja języków - współpraca kodu niezależnie od języka,
- wspólna specyfikacja typów - ogólnodostępne typy podstawowe - jednolity system definiowania własnych typów (klas i struktur),
- Tekst źródłowy → Kompilacja → Kod pośredni (MSIL) - kod zarządzany (kontrolowany przez .NET - większe bezpieczeństwo) - podstawowy element .NET → Kompilacja w locie (JIT) → Kod macierzysty,
- automatyczne zarządzanie pamięcią,
- samoopisujące się podzespoły (informacja o zależnościach, dokładny opis typów),
ASP.NET:
- część platformy .NET,
- klasy, narzędzia do tworzenia aplikacji www,
- jednolity model rozwijania aplikacji www.
Podstawowe elementy ASP.NET:
- platforma renderowania stron, kontrolek,
- kompilator,
- mechanizmy zarządzania stanem aplikacji,
- infrastruktura autoryzacji i autentyfikacji użytkownika,
- mechanizm “debuggowania” aplikacji,
- możliwość budowania Web Services.
Wady klasycznych aplikacji:
- mieszanina kodu aplikacji i znaczników HTML - spaghetti code,
- brak automatycznego mechanizmu zachowywania wartości pól formularzy,
- ręczne tworzenie odmiennych odmiennych wersji stron dla różnych przeglądarek.
Model rozwijania aplikacji:
- model formularzy asp.net z wykorzystaniem kontrolek,
- programowanie oparte na zdarzeniach,
- automatyczne zachowywanie wartości elementów formularzy,
- automatyczne renderowanie treści strony zależnie od rodzaju przeglądarki.
(...) <form id="form1" runat="server"> </form (...)
“runat='server'” - określa jak interpretowany będzie dany atrybut (form id=“form1”)
<script runat="server">
protected void Button1_Click(
object...
… umieszczane przed lub za lub w kodzie HTML.
Strony ASP.NET:
- pliki z rozszerzeniem .aspx,
- opcjonalna dyrektywa @Page: <%@ Page %>,
- atrybut Language: <%@ Page Language=“C#” %>,
- formularz WebForms: <form id=“form1” runat=“server”></form>.
Język C#:
Definicja klasy (w jednym pliku):
class Hello { static void Main(string[] args) { Console.WriteLine("Hello world!"); } }
Definicja klasy w wielu plikach
partial class MyClass { (...) }
Modyfikatory dostępności klas:
- public - widoczna w innych podzespołach: public class Hello { (…) },
- internal - dostępna tylko wewnątrz podzespołu: internal class Hello { (…) }.
Przestrzeń nazw:
namespace MyNamespace { namespace Inner { class MyClass { public static void F() {} } } }
Typ referencyjny (class): alokowany na stosie, na stosie przechowywana jest referencja do obiektu znajdującego się w stercie. Tryb wartości (struct): przechowywany na stosie (Wartość bezpośrednio umieszczona na stosie w całości - nic na stercie).
Konkatencja - doczytać.
Tablice:
- int[] v1 = {1, 4, 5};
- etc.
Każdy case w switchu musi kończyć się break;iem (goto case 3).
W foreach() nie można modyfikować obiektu iterowanego.
Przekazywanie parametrów:
public void SetXY(int x, inty) { (...) } public void ReplaceXY(ref int x, ref int y) { (...) } public void GetXY(out int x, out int y) { (...) } // przekazywanie argumentów p.SetXY(x0, 4); //przez wartość p.ReplaceXY(ref x1, ref y1); //przez zmienna (...)
Zgłaszanie wyjątku (throw, try, catch, finally):
throw new Exception("Dzielenie przez zero");
finally { if (r1 != null) r1.Dispose(); }
Finally sluzy do tego by jakiś fragment zawsze został wykonany (np. zamkniecie pliku).
Using służy do obsługi zasobów - automatycznego, jawnego zwalniania zasobów niezarządzalnych (slajd 75)
Właściwości - kontrolowanie określonych pól (np. tylko do odczytu).
Tylko jedna klasa bazowa!
Dostępność składowych:
- public - dostepne z kazdego miejsca,
- protected
- private
- internal
- internal protected.
Klasa abstrakcyjna (abstract) - public abstract void Show();
Interfejsy - coś jak klasa abstrakcyjna.
Delegat (delegate) - klasa, ktora opakowuje f-cję.
Na podstawie delegatow utworzono zdarzenia.
Zdarzenie to rozszerzenie delegatow.
