1 / 25

Platformy technologiczne Platforma

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

leda
Download Presentation

Platformy technologiczne Platforma

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 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 IL // 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 // pt.y = 300; ldloc.0 ldc.i4 0x12c stfld int32 Point::y C# Point pt; pt = new Point(); pt.x = 200; pt.y = 300; CIL dev-time compile Intel x86 run-time compile 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 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. 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 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 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 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 Platformy Technologiczne 2012

  23. Użyteczne namespaces 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 Platformy Technologiczne 2012

More Related