Platformy technologiczne Platforma .net

Download Report

Transcript Platformy technologiczne Platforma .net

PLATFORMY
TECHNOLOGICZNE
PLATFORMA .NET
mgr inż. Tomasz Gawron
Czym jest .NET
2

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 2014
Cele i charakterystyka
3

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 2014
Zadada działania
4
Platformy Technologiczne 2014
Stos platformy
5
Platformy Technologiczne 2014
Windows 8
6
Platformy Technologiczne 2014
Historia platformy
7
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
4.5
2012-08-15
Platformy Technologiczne 2014
C# - ewolucja
8
Platformy Technologiczne 2014
Elementy platformy .NET
9

Common Language Runtime


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


środowisko wykonawcze odpowiedzialne za lokalizowanie, wczytywanie
oraz zarządzanie typami .NET.
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 2014
Common Language Runtime
10
•
•
•
•
•
•
•
•
•
•
•
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 2014
CLI – standard ECMA
11

Zgłoszony wspólnie przez Micosoft, Intel i HP w 2000 roku
Platformy Technologiczne 2014
CLI – Common Type System
12


Zarządzanie typami danych
Podział na dwie grupy:
Typy wartościowe (value type):
Typy referencyjne (reference type)
•Prymitywy (bool, char, int, float…), struktury
•klasy, tablice, delegaty, interfejsy
(struct), emumeratory (enum)
•umieszczane na stercie
• umieszczane na stosie
•zmienna zawiera referencję do danych
•bezpośrednio zawierają dane
•wiele zmiennych może odnosić się do jednego
•każda zmienna ma swoją kopię
obiektu – operacje na jednej zmiennej mogą mieć
•nie mogą zawierać null-i
wpływ na drugą
•cykl życia zarządzany przez Garbage Collector
Platformy Technologiczne 2014
CLI – Common Language Specification
13


Zestaw zasad umożliwiających współpracę pomiędzy
językami
Trzy główne elementy:

Framework


Consumer


Biblioteka zawierająca kod zgodny z specyfikacją CLS
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 2014
Common Intermediate Language
14

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 2014
CIL – kompilacja JIT
15

CIL jest kompilowany do kodu procesora
IL podczas wykonywania
programu
C#
Point pt;
pt = new Point();
pt.x = 200;
pt.y = 300;
dev-time compile
Intel x86
call FD5B0AD8
; allocate
mov ecx, eax
; ecx == pt
call dword ptr ds:[003E5144h] ; pt.ctor
mov dword ptr [ecx+4], 0C8h ; pt.x = 200
mov dword ptr [ecx+8], 12Ch ; pt.y = 300
CIL
// Point pt = new Point();
.locals init ([0] class Point pt)
newobj instance void Point::.ctor()
stloc.0
// pt.x = 200;
ldloc.0
ldc.i4 0xc8
stfld int32 Point::x
run-time compile
// pt.y = 300;
ldloc.0
ldc.i4 0x12c
stfld int32 Point::y
Platformy Technologiczne 2014
CIL - przykład
16
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 2014
Podzespoły - Assemblies
17




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 2014
Assemblies - metadane
18

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
Prog.cs
Lib.cs
class A { ... }
class B { ... }
class C { ... }
csc Prog.cs,Lib.cs
Prog.exe
manifest
metadata
CIL code of A
CIL code of B
CIL code of C
loader
Platformy Technologiczne 2014
Assemblies
19

Po skompilowaniu do kodu IL, zarządzany kod jest
częścią podzespołu



Podzespoły mogą być używane jako prywatne albo
współdzielone
Podzespół prywatny jest instalowany poprzez
kopiowanie do folderu


podzespół zawiera jedną lub wiele DLLs or EXEs
nie wymagane jest umieszczenie w rejestrze
Są podstawą bezpieczeństwa kodu

Pobierany kod może mieć przydzielone uprawnienia
Platformy Technologiczne 2014
Strong-Named Assemblies
20

Składają się z:
 Nazwy
 Wersji
 Klucza



i podpisu
Pozwalają na zapewnienie unikalności w obrębie
maszyny poprzez podpis
Gwarantują liniowość wytwarzania – tylko
właściciel klucza może opublikować kolejną wersję
Wspomagają bezpieczeństwo – poprzez
niezmienność podpisu
Platformy Technologiczne 2014
Global Assembly Cache
21

Umożliwia globalne rejestrowanie i zarządzanie
bibliotekami dll
C:\Windows\assembly
 gacutil.exe




Różne aplikacje mogą korzystać z tej samej biblioteki
GAC przechowuje różne wersje biblioteki (32-bit, 64bit)
Rozwiązuje problem dll hell
Różne wersje tej samej biblioteki
 Problem w dostępie do właściwej wersji

Platformy Technologiczne 2014
Bezpieczeństwo w .NET
22

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 2014
Role Based Security
23

Identity
 WindowsIdentity,

GenericIdentity, IIdentity
Principals
 WindowsPrincipal,

GenericPrincipal, IPrincipal
Możemy uzależnić wykonanie kodu od posiadanych
przez użytkownika uprawnień
Platformy Technologiczne 2014
Code Access Security
24




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 2014
Biblioteki klas
25

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 2014
Użyteczne namespaces
26
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.Collections
System 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 2014
Użyteczne namespaces
27
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 2014
Visual Studio
28
Platformy Technologiczne 2014
Visual Studio
29
Platformy Technologiczne 2014
Dostępność narzędzi
30




MSDNAA
Bezpłatne wersje Express
MS BizSpark (http://www.microsoft.com/bizspark/)
Implementacje OpenSource (http://www.mono-project.com)
Platformy Technologiczne 2014