Platformy technologiczne Platforma

30
PLATFORMY TECHNOLOGICZNE PLATFORMA .NET mgr inż. Tomasz Gawron

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

Transcript of Platformy technologiczne Platforma

Page 1: Platformy technologiczne Platforma

PLATFORMY TECHNOLOGICZNEPLATFORMA .NET

mgr inż. Tomasz Gawron

Page 2: Platformy technologiczne Platforma

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 2014

Page 3: Platformy technologiczne Platforma

3

Cele i charakterystyka

Platformy Technologiczne 2014

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

Page 4: Platformy technologiczne Platforma

4

Zadada działania

Platformy Technologiczne 2014

Page 5: Platformy technologiczne Platforma

5

Stos platformy

Platformy Technologiczne 2014

Page 6: Platformy technologiczne Platforma

6

Windows 8

Platformy Technologiczne 2014

Page 7: Platformy technologiczne Platforma

7

Historia platformy

Platformy Technologiczne 2014

Wersja Data wydania

1.0 2002-02-131.1 2003-04-242.0 2005-11-073.0 2006-11-063.5 2007-11-194.0 2010-04-124.5 2012-08-15

Page 8: Platformy technologiczne Platforma

8

C# - ewolucja

Platformy Technologiczne 2014

Page 9: Platformy technologiczne Platforma

9

Elementy platformy .NET

Platformy Technologiczne 2014

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

Page 10: Platformy technologiczne Platforma

10

Common Language Runtime

Platformy Technologiczne 2014

• 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.)

Page 11: Platformy technologiczne Platforma

11

CLI – standard ECMA

Platformy Technologiczne 2014

Zgłoszony wspólnie przez Micosoft, Intel i HP w 2000 roku

Page 12: Platformy technologiczne Platforma

12

CLI – Common Type System

Platformy Technologiczne 2014

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

Page 13: Platformy technologiczne Platforma

13

CLI – Common Language Specification

Platformy Technologiczne 2014

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

Page 14: Platformy technologiczne Platforma

14

Common Intermediate Language

Platformy Technologiczne 2014

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

Page 15: Platformy technologiczne Platforma

15

CIL – kompilacja JIT

Platformy Technologiczne 2014

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

Page 16: Platformy technologiczne Platforma

16

CIL - przykład

Platformy Technologiczne 2014

IL_006e: ldloc.s V_4IL_0070: ldloc.1IL_0071: ldelema [System.Drawing]System.Drawing.ColorIL_0076: ldloc.0IL_0077: ldloc.1IL_0078: ldarg.1IL_0079: subIL_007a: ldloc.2IL_007b: callvirt instance valuetype [System.Drawing]System.Drawing.Color

[System.Drawing]System.Drawing.Bitmap::GetPixel(int32, int32)IL_0080: stobj [System.Drawing]System.Drawing.ColorIL_0085: ldloc.1IL_0086: ldc.i4.1IL_0087: subIL_0088: stloc.1IL_0089: ldloc.1IL_008a: ldarg.1IL_008b: bge.s IL_006e

Page 17: Platformy technologiczne Platforma

17

Podzespoły - Assemblies

Platformy Technologiczne 2014

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

Page 18: Platformy technologiczne Platforma

18

Assemblies - metadane

Platformy Technologiczne 2014

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

Page 19: Platformy technologiczne Platforma

19

Assemblies

Platformy Technologiczne 2014

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

Page 20: Platformy technologiczne Platforma

20

Strong-Named Assemblies

Platformy Technologiczne 2014

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

Page 21: Platformy technologiczne Platforma

21

Global Assembly Cache

Platformy Technologiczne 2014

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, 64-bit)

Rozwiązuje problem dll hell Różne wersje tej samej biblioteki Problem w dostępie do właściwej wersji

Page 22: Platformy technologiczne Platforma

22

Bezpieczeństwo w .NET

Platformy Technologiczne 2014

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

Page 23: Platformy technologiczne Platforma

23

Role Based Security

Platformy Technologiczne 2014

Identity WindowsIdentity, GenericIdentity, IIdentity

Principals WindowsPrincipal, GenericPrincipal,

IPrincipal Możemy uzależnić wykonanie kodu od

posiadanych przez użytkownika uprawnień

Page 24: Platformy technologiczne Platforma

24

Code Access Security

Platformy Technologiczne 2014

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)

Page 25: Platformy technologiczne Platforma

25

Biblioteki klas

Platformy Technologiczne 2014

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

Page 26: Platformy technologiczne Platforma

26

Użyteczne namespaces

Platformy Technologiczne 2014

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

Page 27: Platformy technologiczne Platforma

27

Użyteczne namespaces

Platformy Technologiczne 2014

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.

Page 28: Platformy technologiczne Platforma

28

Visual Studio

Platformy Technologiczne 2014

Page 29: Platformy technologiczne Platforma

29

Visual Studio

Platformy Technologiczne 2014

Page 30: Platformy technologiczne Platforma

30

Dostępność narzędzi

Platformy Technologiczne 2014

MSDNAA Bezpłatne wersje Express MS BizSpark (http://www.microsoft.com/bizspark/) Implementacje OpenSource (

http://www.mono-project.com)