View
65
Download
0
Category
Preview:
DESCRIPTION
Platformy technologiczne Platforma .net. mgr inż. Tomasz Gawron. Czym jest .NET. Platforma nie związana z językiem programowania Środowisko uruchomieniowe (CLR) Biblioteka klas (BCL) Jezyk pośredni (MSIL) Automatyczne zarządzanie: Kodem Pamięcią Wyjątkami - PowerPoint PPT Presentation
Citation preview
PLATFORMY TECHNOLOGICZNE
PLATFORMA .NET
mgr inż. Tomasz Gawron
Platformy Technologiczne 2012
2
Czym jest .NET
Platforma nie związana z językiem programowania Środowisko uruchomieniowe (CLR) Biblioteka klas (BCL) Jezyk pośredni (MSIL)
Automatyczne zarządzanie: Kodem Pamięcią Wyjątkami
Implementacje OpenSource (Mono, Rotor)
Platformy Technologiczne 2012
3
Cele i charakterystyka
Trzy główne elementy: Framewerk Produkty (MS Windows, MS Office, Visual
Studio, …) Usługi
Unifikacja API Zabezpieczenia unikalną częścią
platformy Uproszczone wytwarzanie i instalowanie
aplikacji XML jako metajęzyk
Platformy Technologiczne 2012
4
Zadada działania
Platformy Technologiczne 2012
5
Stos platformy
Platformy Technologiczne 2012
6
Elementy platformy .NET
Common Language Runtime środowisko wykonawcze odpowiedzialne za lokalizowanie,
wczytywanie oraz zarządzanie typami .NET.
Common Language Infrastructure Common Type System (CTS) - standard obejmujący sposób
reprezentacji typów danych w pamięci komputera Common Language Specification (CLS) - zbiór zasad i reguł, które
musi spełnić język programowania aby współpracować z CLI
Common Intermediate Language język pośredni (MSIL) składający się z niezależnego od
procesora zestawu rozkazów, do którego kompilowane są wszystkie programy korzystające ze środowiska .NET
Metadane
Platformy Technologiczne 2012
7
Common Language Runtime• Zarządzanie kodem (uruchamianie i nadzór nad jego
wykonywaniem)• Izolowanie obszarów pamięci przydzielonych poszczególnym
aplikacjom• Konwersja języka pośredniego IL do kodu maszynowego • Zarządzanie pamięcią (w przypadku obiektów zarządzanych)• Dostęp do metadanych (rozszerzonej informacji o typach)• Stosowanie zabezpieczeń dostępu kodu do zasobów, • Weryfikacja zgodności typów,• Obsługa wyjątków i przekazywanie ich pomiędzy różnymi
językami programowania, • Obsługa współpracy pomiędzy kodem zarządzanym, obiektami
COM i starszymi bibliotekami DLL, • Automatyzacja tworzenia obiektów, • Usługi związane z tworzeniem oprogramowania (debugowanie,
profilowanie itp.)
Platformy Technologiczne 2012
8
CLI – standard ECMA
Zgłoszony wspólnie przez Micosoft, Intel i HP w 2000 roku
Platformy Technologiczne 2012
9
CLI – Common Type System
Zarządzanie typami danych Podział na dwie grupy:
Typy wartościowe (value type): •Prymitywy (bool, char, int, float…),
struktury (struct), emumeratory
(enum)
• umieszczane na stosie
•bezpośrednio zawierają dane
•każda zmienna ma swoją kopię
•nie mogą zawierać null-i
Typy referencyjne (reference type)
•klasy, tablice, delegaty, interfejsy
•umieszczane na stercie
•zmienna zawiera referencję do danych
•wiele zmiennych może odnosić się do
jednego obiektu – operacje na jednej
zmiennej mogą mieć wpływ na drugą
•cykl życia zarządzany przez Garbage
Collector
Platformy Technologiczne 2012
10
CLI – Common Language Specification
Zestaw zasad umożliwiających współpracę pomiędzy językami
Trzy główne elementy: Framework
Biblioteka zawierająca kod zgodny z specyfikacją CLS Consumer
Język programowania lub narzędzie zaprojektowane aby dać dostęp do cech dostarczonych przez Framework zgodny z CLS
Extender Język programowania lub narzędzie zaprojektowane, aby
umożliwić wykorzystanie i rozszerzanie Frameworku zgodnego z specyfikacją CLS
Platformy Technologiczne 2012
11
Common Intermediate Language Język pośredni (CIL) jest niezależnym od
procesora zestawem rozkazów, do którego kompilowane są wszystkie programy korzystające ze środowiska .NET. Zawiera instrukcje niezbędne do ładowania,
przechowywania i inicjalizowania obiektów oraz do wywoływania ich metod. Wraz z metadanymi i wspólnym systemem typów, MSIL pozwala na pełną integrację pomiędzy różnymi językami programowania.
Kod skompilowany do języka IL jest wejściem do kompilatora JIT (Just-In-Time Compilation) przekształcającego go w kod maszynowy.
Kod jest kodem zarządzanym
Platformy Technologiczne 2012
12
CIL – kompilacja JIT
CIL jest kompilowany do kodu procesora podczas wykonywania programu
Point pt;pt = new Point();pt.x = 200;pt.y = 300;
C#// Point pt = new Point();.locals init ([0] class Point pt)newobj instance void Point::.ctor()stloc.0
// pt.x = 200;ldloc.0ldc.i4 0xc8stfld int32 Point::x
// pt.y = 300;ldloc.0ldc.i4 0x12cstfld int32 Point::y
IL
call FD5B0AD8 ; allocatemov ecx, eax ; ecx == ptcall dword ptr ds:[003E5144h] ; pt.ctormov dword ptr [ecx+4], 0C8h ; pt.x = 200mov dword ptr [ecx+8], 12Ch ; pt.y = 300
Intel x86
dev-time compile
run-time compile
CIL
Platformy Technologiczne 2012
13
CIL - przykład
IL_006e: ldloc.s V_4
IL_0070: ldloc.1
IL_0071: ldelema [System.Drawing]System.Drawing.Color
IL_0076: ldloc.0
IL_0077: ldloc.1
IL_0078: ldarg.1
IL_0079: sub
IL_007a: ldloc.2
IL_007b: callvirt instance valuetype [System.Drawing]System.Drawing.Color [System.Drawing]System.Drawing.Bitmap::GetPixel(int32, int32)
IL_0080: stobj [System.Drawing]System.Drawing.Color
IL_0085: ldloc.1
IL_0086: ldc.i4.1
IL_0087: sub
IL_0088: stloc.1
IL_0089: ldloc.1
IL_008a: ldarg.1
IL_008b: bge.s IL_006e
Platformy Technologiczne 2012
14
Podzespoły - Assemblies
Logiczne bloki, skompilowane do kodu pośredniego IL, z których buduje się aplikacje .NET
Zawierają kod w języku IL oraz metadane Wersjonowane Opisywane przez 2 rodzaje metadanych:
manifest Nazwa podzespołu Numer wersji Podpis cyfrowy Lista uprawnień
metadane indywidualne
Platformy Technologiczne 2012
15
Assemblies - metadane
Metadane typów - szczegółowy opis typów zdefiniowanych w kodzie zarządzanym, z którym są związane. Opis ten przechowywany jest w tym samym pliku, w którym znajduje się kod CIL. Informacje zawierają: Opis typów
nazwę typu zasięg typu (publiczny lub w granicach podzespołu) nazwę typu, po którym dziedziczy opisywany typ implementowane interfejsy implementowane metody udostępniane właściwości obsługiwane zdarzenia
Atrybuty – dodatkowe informacje o elementach kodu atrybuty mają określone nazwy i funkcje, definiowane
przez różne części środowiska .NET Framework mogą one służyć do sterowania sposobem
wykonywania kodu, opisać wymagania bezpieczeństwa
class A { ... }class B { ... }
Prog.cs
class C { ... }
Lib.cs
csc Prog.cs,Lib.cs
metadata
CIL code of A
CIL code of B
CIL code of C
Prog.exe
loader
manifest
Platformy Technologiczne 2012
16
Assemblies
Po skompilowaniu do kodu IL, zarządzany kod jest częścią podzespołu podzespół zawiera jedną lub wiele DLLs or EXEs
Podzespoły mogą być używane jako prywatne albo współdzielone
Podzespół prywatny jest instalowany poprzez kopiowanie do folderu nie wymagane jest umieszczenie w rejestrze
Są podstawą bezpieczeństwa kodu Pobierany kod może mieć przydzielone
uprawnienia
Platformy Technologiczne 2012
17
Bezpieczeństwo w .NET
Role Based Security Identity (tożsamość użytkownika) Principal (role użytkownika)
Code Access Security Ograniczanie funkcjonalności kodu Ograniczanie wywołania kodu Identyfikacja kodu
Platformy Technologiczne 2012
18
Role Based Security
Identity WindowsIdentity, GenericIdentity, IIdentity
Principals WindowsPrincipal, GenericPrincipal,
IPrincipal Możemy uzależnić wykonanie kodu od
posiadanych przez użytkownika uprawnień
Platformy Technologiczne 2012
19
Code Access Security
Operuje na uprawnieniach do kodu (FileIOPermission, UIPermission...)
Można tworzyć własne zestawy uprawnień Na poziomie CLR tworzone są grupy kodu o
identycznych uprawnieniach 4 poziomy uprawnień:
Enterprise (cały kod zarządzany) Machine (cały kod zarządzany na komputerze) User (cały kod zarządzany powiązany z
użytkownikiem) Application Domain (kod zarządzany w aplikacji hosta)
Platformy Technologiczne 2012
20
Historia platformy
Wersja Data wydania
1.0 2002-02-13
1.1 2003-04-24
2.0 2005-11-07
3.0 2006-11-06
3.5 2007-11-19
4.0 2010-04-12
Platformy Technologiczne 2012
21
Biblioteki klas
Elementy biblioteki klas .NET Framework, pogrupowane są za pomocą hierarchicznej struktury przestrzeni nazw (namespace) ok. 100 namespaces z około 2000 typów
Umożliwiają dostęp do usług systemowych i zostały zaprojektowane tak, aby stanowiły podstawę do tworzenia aplikacji, komponentów i kontrolek .NET
Platformy Technologiczne 2012
22
Użyteczne namespaces
Namespace Opis
System Podstawowe klasy, które definiują najczęściej używane typy danych, zdarzenia, procedury obsługi zdarzeń, interfejsy, atrybuty i wyjątki.Inne klasy w tej przestrzeni nazw udostępniają usługi związane z konwersją typów danych, manipulowaniem parametrami metod, obliczeniami matematycznymi, zdalnym i lokalnym wywoływanie programów, zarządzaniem środowiskiem aplikacji, oraz nadzorowaniem zarządzanego i niezarządzanego kodu.
System.CollectionsSystem Collection.Generic
Definiują różne kolekcje obiektów - listy, kolejki, stos, słowniki, tablice skrótów
System.IO Podstawowy dostęp i zarządzanie strumieniami danych. Zawiera typy umożliwiające synchroniczny i asynchroniczny odczyt i zapis do strumieni danych i plików.
System.Text Kodowanie znaków, konwersje znaków i manipulacje łańcuchami znaków
System.Data Dostęp i zarządzanie danymi i źródłami danych. Architektura dostępu do danych ADO.NET, umożliwia tworzenie komponentów, które pozwalają na wydajne zarządzanie danymi pochodzącymi z różnych źródeł.
System.XML Zgodna ze standardami obsługa przetwarzania XML’a
System.XML.Serialization
Serializacja obiektów do postaci XML
Platformy Technologiczne 2012
23
Użyteczne namespaces
Namespace Opis
System.Net Udostępnia proste interfejsy programistyczne dla wielu protokołów używanych we współczesnych sieciach.
System.Runtime.Serialization
Klasy używane do serializowania i deserializowania obiektów.
System.Threading Klasy i interfejsy umożliwiające programowanie wielowątkowe.
System.Web Wsparcie dla zarządzania, komunikacji i projektowania serwerów i klientów oraz usług internetowych XML Web Services; m.i.: manipulacje plikami cookie, transfer plików, obsługę wyjątków, zarządzanie buforem wyjściowym, stanem sesji.
System.ServiceModel Budowanie aplikacji rozproszonych za pomocą API WCF
System.Windows.Forms Funkcje interfejsu użytkownika dla aplikacji działających pod kontrolą systemu Windows.
Platformy Technologiczne 2012
24
Dostępność narzędzi
MSDNAA Bezpłatne wersje Express MS BizSpark (http://www.microsoft.com/bizspark/) Implementacje OpenSource (http://
www.mono-project.com)
Platformy Technologiczne 2012
25
.NET vs Java
.NET: Wiele języków, jedna platforma
Java: Jeden język, wiele platform
Recommended