Programowanie w środowisku sieciowym W. Bartkiewicz 1. Wprowadzenie do platformy.NET.

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

Programowanie obiektowe
Wprowadzenie do C++ Zajęcia 2.
PROGRAMOWANIE STRUKTURALNE
1 Linux jako system wielozadaniowy i wielodostępny.
Wydajne aplikacje na platformie .NET
ADAM Active Directory w trybie aplikacyjnym
CLR na platformie .NET Tomasz Kostarski.
Platforma .Net i Vs.Net.
Struktury.
Biblioteki i przestrzenie nazw
Systemy operacyjne.
ASP.NET i platforma.NET Technologie internetowe ( ) Tomasz Popów
P I OTR SKOŁYSZ. POCHODZENIE I CELE CZYM JEST.NET ? CO IMPLEMENTUJE MONO ? ŚRODOWISKO PRACY [MONODEVELOP] SYTEMY OPERACYJNE CO PROGRAMOWAĆ ? JĘZYKI PRZYKŁADOWY.
Modele baz danych - spojrzenie na poziom fizyczny
SZPIF – Harmonogram, Opis narzędzi, Schemat bazy danych
C# Windows Forms Zastosowania Informatyki Wykład 2
.NET gdzie szukać? .NET co warto wiedzieć?
Rozwój aplikacji przy wykorzystaniu ASP.NET
Witold Bołt Wprowadzenie do .NET Witold Bołt
Instytut Tele- i Radiotechniczny WARSZAWA
Podstawy programowania. Język C i C++– podstawy Temat: 1
Architektura Systemu Źródło:
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Programowanie obiektowe – zastosowanie języka Java SE
JAVA.
Wykonał: Michał Nikołajuk
Platformy technologiczne Platforma .net
Maszyna wirtualna ang. virtual machine, VM.
Programowanie obiektowe – język C++
Programowanie obiektowe 2013/2014
Systemy zarządzania treścią Wykład 5
Technologie Programowania seminarium
SPECJALNOŚĆ: Oprogramowanie Systemowe
Wstęp do ASP.NET Arkadiusz Popa Serwery Aplikacji
Programowanie w języku C++
Podstawy programowania
Programowanie strukturalne i obiektowe C++
Model obiektowy bazy danych
System plików.
Programowanie zaawansowane
Kurs języka C++ – wykład 4 ( )
Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska.
Technologie internetowe i mobilne
Uprawnienia w Windows Server
Waldemar Bartyna Pytania egzaminacyjne 1.
Dokumentacja obsługi programów Kamil Smużyński Piotr Kościński.
Piotr Czapiewski Wydział Informatyki ZUT. Web Services Description Language.
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Obiekty COM Przemysław Buczkowski. Plan prezentacji 1.Wprowadzenie do COM 2.Historia standardu 3.Jak działa COM 4.Interface IUknown 5.Paradygmaty COM.
Platforma .Net.
Podstawy programowania
Waldemar Bartyna Pytania egzaminacyjne 1.
C++ WYKŁAD 12 ( ) Własne biblioteki. S PIS TREŚCI Kompilacja i łączenie Moduły Biblioteki Biblioteka statyczna Biblioteka współdzielona Biblioteka.
Temat: Porównanie technologii php,c# oraz javascript na przykładzie webaplikacji typu społecznościowy agregator treści Autor: Wojciech Ślawski.
T ESTY JEDNOSTKOWE W C# Alicja Majka, A GENDA Wprowadzenie do środowiska Czym są testy jednostkowe i po co je stosować? XUnit, NUnit Pokrycie.
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Zarządzanie stanem w aplikacjach ASP.NET Elżbieta Mrówka-Matejewska
Testy jednostkowe. „Test jednostkowy (unit test) to fragment kodu, który sprawdza inny fragment kodu”
Temat: Tworzenie bazy danych
Programowanie strukturalne i obiektowe Klasa I. Podstawowe pojęcia dotyczące programowania 1. Problem 2. Algorytm 3. Komputer 4. Program komputerowy 5.
Programowanie Obiektowe – Wykład 2
Programowanie obiektowe – zastosowanie języka Java SE
Aplikacje i usługi internetowe
Dynamiczny serwer aplikacyjny w C++ platforma LEFTHAND
Podstawy programowania
Modele baz danych - spojrzenie na poziom fizyczny
Zapis prezentacji:

Programowanie w środowisku sieciowym W. Bartkiewicz 1. Wprowadzenie do platformy.NET

Literatura podstawowa Orłowski S., C# Tworzenie aplikacji sieciowych, Helion, 2007.

Literatura dodatkowa Perry S.C., Core C# i.NET, Helion, 2006.

Literatura dodatkowa Perry S.C., Core C# i.NET, Helion, Troelsen A., Język C# i platforma.NET, Mikom, 2006.

Cele platformy.NET Platformę.NET zaprojektowano jako zintegrowane środowisko, które w założeniu ma umożliwiać wytwarzanie i uruchamianie aplikacji internetowych, bazujących na Windows Forms, a nawet aplikacji dla urządzeń mobilnych. Cele platformy: –Zapewnienie logicznie spójnego obiektowego środowiska dla rozmaitych aplikacji. –Zapewnienie środowiska, które pozwoli zminimalizować konflikty wersji heterogenicznych składników aplikacji, i tym samym uprościć proces dystrybucji i instalacji kodu. –Zapewnienie środowiska, które będzie bazowało na certyfikowanych standardach i które będzie dawało możliwość zarządzania przez dowolny system operacyjny. –Zapewnienie środowiska zarządzanego, w którym weryfikacja kodu pod względem bezpieczeństwa wykonywania będzie możliwie prosta.

Infrastruktura wspólnego języka (CLI) U podstaw tworzonej platformy legła specyfikacja standardu infrastruktury wspólnego języka (Common Language Infrastructure – CLI). Prezentowane wyżej postulaty dla platformy aplikacyjnej są w zasadzie niemożliwe do realizacji w przypadku środowiska działającego na poziomie natywnego kodu wynikowego. Dlatego CLI definiuje niezależne od platformy systemowej środowisko wykonywania kodu wirtualnego. Specyfikacja obejmuje przede wszystkim: –Definicja wspólnego języka pośredniego (Common Intermediate Language – CIL), który musi być generowany przez kompilatory zgodne ze standardem CLI. –System typów, który definiuje typy danych obsługiwane przez wszystkie zgodne języki programowania (Common Type System – CTS).

Platforma.NET System operacyjny Wspólne środowisko uruchomieniowe (CLR) CTS, kompilator JIT, zarządzanie pamięcią BIBLIOTEKA KLAS PLATFORMY (FCL) Klasy bazowe System.IO, System.Drawing, System.Threading Klasy danych ADO.NET, XML, SQL Windows Forms Aplikacje internetowe ASP.NET, Web Services Platforma.NET jest implementacją standardów CLI. Dzieli się ona na dwie podstawowe części: –Wspólne środowisko uruchomieniowe (Com- mon Language Runtime – CLR). –Biblioteka klas platformy (Framework Class Lib- rary – FCL).

Wspólne środowisko uruchomieniowe (CLR) Wspólne środowisko uruchomieniowe (CLR) zarządza całym cyklem życia aplikacji, a także zapewnia automatyczne zarządzanie pamięcią. Środowisko CLR obsługuje także całą integrację języków programowania, odpowiadając za bezproblemową współpracę kodu napisanego w różnych językach i skompilowanego za pomocą różnych kompilatorów. Kompilatory spełniające wymagania CLI generują kod pośredni interpretowany przez środowisko CLR, a nie kod dla konkretnego procesora. Kod ten nazywany jest wspólnym językiem pośrednim (CIL), językiem pośrednim (IL), lub językiem pośrednim Microsoft (MSIL). W praktyce kod pośredni jest umieszczany w plikach EXE lub DLL, ale nie są to standardowe pliki wykonalne. Wymagają one użycia kompilatora na bieżąco (Just-In-Time – JIT), który w czasie wykonywania aplikacji dokona interpretacji języka pośredniego na odpowiedni kod maszynowy.

Wspólne środowisko uruchomieniowe (CLR) Za zarządzanie językiem pośrednim odpowiada środowisko CLR. Dlatego kod ten nazywamy kodem zarządzanym (managed code). Kod pośredni jest kluczem do spełnienia wymogów formalnych stawianych platformie.NET: –Ponieważ elementy aplikacji integrowane są za pomocą niezależnego od języka źródłowego, ale jednolitego dla wszystkich języków źródłowych, kodu pośredniego, integrowane mogą być elementy wygenerowane za pośrednictwem różnych kompilatorów. –Ponieważ proces tworzenia kodu maszynowego przeniesiony został na poziom kompilatora JIT wbudowanego w środowisko, więc ten sam kod pośredni wykonywany może być na różnych platformach systemowych, zawierających własne środowiska CLR.

Platforma.NET PascalVB.NETC#J#C++.NETPerl Język pośredni + metadane Biblioteki klas podstawowych Wspólne środowisko uruchomieniowe Program wczytujący klasy Kompilator JIT Kod natywny Obsługa wykonywania Bezpieczeństwo Zarządzanie pamięcią Procesor

Metadane Poza generowaniem kodu pośredniego, kompilatory CLI generują w każdym module kodu odpowiednie metadane, zbiór tabel zapewniający modułom własność samoopisywania. Metadane obejmują informacje o pakiecie (zestawie) kodu (assembly), do którego dany kod należy oraz kompletny opis samego kodu, a przede wszystkim opisy typów i ich składowych. Metadane wykorzystywane są przede wszystkim przez kompilator JIT, pobierający informacje niezbędne do weryfikacji kodu oraz badania zgodności typów. Metadane wykorzystywane są również przez podstawowy składnik CLR w dziedzinie zarządzania pamięcią, odśmiecacz pamięci (garbage collector). Używa on metadanych do określenia, kiedy pola w ramach danego obiektu odwołują się do innych obiektów. Platforma.NET zawiera zbiór klas, wykorzystujących metadane do odpytywania obiektów o ich strukturę. Tego rodzaju funkcjonalność nazywamy refleksją (reflection).

Wspólny system typów (CTS) Dla integracji na płaszczyźnie języka pośredniego, elementów aplikacji stworzonych z wykorzystaniem różnych języków źródłowych, niezbędne jest, aby języki te obsługiwały wspólny zestaw typów danych i specyfikacje języków. Wspólny system typów (Common Type System – CTS) definiuje bazowy zbiór typów danych dla każdego języka zgodnego ze specyfikacją CLI. System CTS definiuje nie tylko same typy, ale także ich zachowania gwarantujące pełną zgodność ze środowiskiem CLR. Określa on również sposób deklarowania i tworzenia typów niestandardowych oraz mechanizm zarządzania cyklem życia instancji tych typów.

Wspólny system typów (CTS) Object Typy referencyjne (sterta) Klasa Interfejs Tablica Typy wartościowe (stos) Typy proste Struktury Typy wyliczeniowe

Specyfikacja wspólnego języka (CLS) Kompilator zgodny ze specyfikacją wspólnego systemu typów (CTS) gwarantuje jedynie, że jego typy będą prawidłowo obsługiwane przez środowisko uruchomieniowe CLR. Sama zgodność typów nie oznacza jeszcze, że dany język może być integrowany z innymi językami. Taka możliwość wymaga zgodności z bardziej restrykcyjnym zbiorem specyfikacji wspólnego języka (Common Language Specification – CLS), które definiują podstawowe reguły współpracy języków programowania. Wspomniane specyfikacje stanowią minimalny zestaw wymagań, które muszą być spełnione przez każdy kompilator zapewniający pełną zgodność ze środowiskiem CLR.

Moduły kodu.NET Kompilatory umieszczają cały kod wykonywany na platformie.NET w specjalnych modułach kodu, nazywanych pakietami lub zestawami (assemblies). Każdy taki zestaw logicznie postrzegany jest jako pojedynczy plik EXE lub DLL. Fizycznie moduły te mogą składać się z kolekcji plików, zawierających sam kod oraz niezbędne zasoby. Moduł kodu.NET Manifest Metadane Kod pośredni Zasoby

Elementy modułu kodu.NET Manifest. Każdy moduł kodu.NET musi zawierać jeden plik, zawierający tzw. manifest. –Manifest jest zbiorem tabel metadanych, zawierającym listy nazw wszystkich plików w danym zestawie (pakiecie), odniesienia do modułów zewnętrznych, oraz informacje identyfikacyjne dla danego modułu (np. nazwa, numer wersji, w niektórych przypadkach również niezbędne sygnatury cyfrowe). –Ładując moduł, środowisko CLR otwiera manifest w pierwszej kolejności, aby mieć możliwość identyfikacji pozostałych elementów zestawu. Metadane. Oprócz tabel manifestu, kompilator.NET generuje jeszcze tabele definicji oraz referencji. –Tabele definicji zawierają kompletny opis typów stosowanych w kodzie pośrednim modułu. Przykładowo kompilator C# generuje tabele definiujące typy, metody, pola, parametry i właściwości. –Tabele referencji zawierają informacje o wszystkich odniesieniach do typów i pozostałych modułów.

Właściwości modułów Do uruchomienia aplikacji wymagane są tylko te moduły (zestawy, pakiety), bez których nie można przeprowadzić inicjalizacji. Pozostałe są ładowane na żądanie (według potrzeb). Moduł kodu.NET wyznacza tzw. granicę wersji. Pole wersji w manifeście stosowane jest do wszystkich elementów zestawu, włącznie z typami i zasobami. Zestaw.NET wyznacza również granicę bezpieczeństwa, od której zależą wszystkie uprawnienia dostępu. Niektóre elementy modułu dostępne są jedynie wewnątrz niego. Moduł.NET może mieć charakter prywatny w obrębie aplikacji. Zestawy (pakiety) prywatne mogą być umieszczane bez żadnej rejestracji w katalogach bazowych aplikacji. Mogą być również zarządzane z wykorzystaniem specjalnych plików konfiguracyjnych aplikacji. Moduł.NET może mieć również charakter współdzielony. Zestawy (pakiety) współdzielone rejestrowane są w środowisku.NET, w tzw. globalnej pamięci podręcznej zestawów (Global Assembly Cache – GAC).

Biblioteka FCL Biblioteka klas platformy (Framework Class Library – FCL) jest zbiorem klas i innych typów (interfejsów, typów wyliczeniowych i struktur), które są dostępne dla zarządzanego kodu napisanego w dowolnym języku zgodnym ze specyfikacją środowiska uruchomieniowego CLR. Biblioteki te związane są więc ze środowiskiem.NET i są jednakowe dla wszystkich kompilatorów. Zasoby w ramach biblioteki FCL podzielone są na logiczne grupy nazywane przestrzeniami nazw (namespaces). Do najważniejszych przestrzeni nazw w bibliotece FCL należą: –System – Elementarne typy danych, działania matematyczne, czyszczenie pamięci, wiele powszechnie stosowanych wyjątków oraz atrybutów predefiniowanych. –System.Collections – Klasy kontenerowe (np. ArrayList, Queue, SortedList), jak również typy podstawowe oraz interfejsy umożliwiające tworzenie kontenerów niestandardowych.

Biblioteka FCL –System.Data, System.Data.Common, System.Data.OleDb, System.Data.SqlClient – Operacje na bazach danych. –System.Diagnostics – Debugowanie i śledzenie wykonania kodu źródłowego. –System.Drawing, System.Drawing.Drawing2D, System.Drawing.Printing – Typy opakowujące GDI, obsługa drukarki, zaawansowane klasy obsługi grafiki. –System.IO – Obsługa operacji wejścia/wyjścia. –System.NET – Programowanie sieciowe. –System.Reflection, System.Reflection.Emit – Odpytywanie informacji o typach podczas działania programu, dynamiczne tworzenie i wywoływanie własnych typów użytkownika. –System.Runtime.InteropServices – Współpraca z kodem niezarządzanym (np. biblioteki DLL w C, komponenty COM). –System.Runtime.Remoting – Komponenty.NET Remoting.

Biblioteka FCL –System.Security – System bezpieczeństwa wbudowany w środowisko.NET (zarządzanie prawami dostępu, szyfrowanie, itp.). –System.Threading – Wątki, współbieżność. –System.Web – Aplikacje internetowe, m.in. ASP.NET, usługi sieciowe XML. –System.Windows.Forms – Komponenty wspomagające tworzenie GUI. –System.XML – Obsługa danych w formacie XML.

Biblioteka FCL Korzystanie z przestrzeni nazw w C#: –Nazwy elementów innych przestrzeni nazw kwalifikowane są nazwą przestrzeni nazw i kropką. Np. odwołanie do klasy Bitmap z System.Drawing: new System.Drawing.Bitmap(20, 20); –Włączenie przestrzeni nazw umożliwia dalsze odwołania do jej elementów bez kwalifikacji nazwą namespace’a: using System;... new Bitmap(20, 20); –Włączenie przestrzeni nazw nie dotyczy jej podprzestrzeni. using System; using System.Drawing;