View
48
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 TECHNOLOGICZNEPLATFORMA .NET
mgr inż. Tomasz Gawron
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
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
4
Zadada działania
Platformy Technologiczne 2014
5
Stos platformy
Platformy Technologiczne 2014
6
Windows 8
Platformy Technologiczne 2014
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
8
C# - ewolucja
Platformy Technologiczne 2014
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
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.)
11
CLI – standard ECMA
Platformy Technologiczne 2014
Zgłoszony wspólnie przez Micosoft, Intel i HP w 2000 roku
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
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
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
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
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
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
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
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
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
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
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
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ń
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)
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
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
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.
28
Visual Studio
Platformy Technologiczne 2014
29
Visual Studio
Platformy Technologiczne 2014
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)
Recommended