BETA
Aby się zalogować, najpiew wybierz portal.
Aby się zarejestrować, najpiew wybierz portal.
Podaj słowa kluczowe
Słowa kluczowe muszą mieć co najmniej 3 sąsiadujące znaki alfanumeryczne
Pole zawiera niedozwolone znaki

Baza wiedzy











C# for non C programmers, czyli od Pascala do C#. Część 1. - .NET Framework – co to takiego?

30-11-2004 12:38 | User 79314
Pierwszy z serii artykułów wprowadzających w język C# i .NET Framework dla osób, które nie znają języków C/C++. W tej części opiszę platformę .NET Framework i postaram się wskazać korzyści wynikające z jej stosowania.

         Czytasz właśnie pierwszy z serii artykułów wprowadzających w język C# i platformę Microsoft .NET Framework dla osób, które nie znają języków z rodziny C i C++. W tej części opiszę platformę .NET Framework i postaram się wskazać korzyści wynikające z jej stosowania.

Czym jest .NET Framework?

          .NET Framework jest środowiskiem uruchomieniowym (runtime environment) dla aplikacji .NET’owych, to znaczy takich, które zostały napisane w oparciu o to środowisko. Zadanie .NET Framework’a jest podobne do konkurencyjnego Java Runtime Environment przeznaczonego dla języka Java. Środowisko .NET udostępnia bogaty zbiór klas bazowych, to jest typów danych, które są wykorzystywane w programach. Ich podstawową zaletą jest fakt, iż są one już zoptymalizowane i zwalniają programistę od tworzenia typów, czy klas często wykorzystywanych w programowaniu, jak tablica o dynamicznie dostosowywanej wielkości (typ ArrayList). Ponadto .NET Framework pozwala na korzystanie z poziomu jednego języka programowania z komponentów napisanych w innym języku zgodnym z .NET Framework, ale nie koniecznie. Można tu też korzystać z komponentów nie pisanych z myślą o .NET.

Dlaczego to środowisko jest tak ważne?

          Podstawową zaletą technologii .NET jest niezależność od języka programowania i platformy, na której program ma być wykonywany. Działa to w następujący sposób:

1. Programista pisze kod w swoim ulubionym języku wysokiego poziomu.

2. Kompilator tłumaczy kod do postaci języka pośredniego MSIL (Microsoft Intermediate Language).

3. Podczas uruchomienia programu .NET Framework kompiluje kod MSIL do postaci kodu maszynowego odpowiedniego dla danej platformy sprzętowej i programowej.

Oznacza to, że program napisany pod Windows możemy uruchomić pod Linux’em i vice versa (Pod warunkiem, że posiadamy zgodne wersje .NET Framework’a dla obu systemów operacyjnych). Możemy też aplikację napisaną dla telefonu komórkowego (Smart Phone) korzystającego z .NET Compact Framework uruchomić na zwykłym komputerze wyposarzonym w .NET Framework lub emulatorze. .NET Compact Framework jest to okrojona wersja .NET Framework przystosowana do pracy na urządzeniach mobilnych typu SmartPhone, Pocket PC, czy innych urządzeniach działających pod kontrolą systemu operacyjnego Windows CE.

          Wspólne środowisko uruchomieniowe dla .NET, zwane CLR (Common Language Runtime) upraszcza tworzenie aplikacji, dostarcza całościowe i bezpieczne środowisko dla ich wykonywania, wspomaga wiele języków programowania i upraszcza wdrażanie i zarządzanie aplikacjami. CLR skada się z wielu komponentów (Patrz rysunek poniżej)

 

Komponent

Opis

Base Class Library Support

Integruje kod aplikacji ze środowiskiem uruchomieniowym wspierającym klasy bazowe .NET

Thread support

Dostardza klasy oraz interfejsy wykorzystywane w aplikacjach obsługujących wielowątkowość.

COM Marshaler

Pozwala na współdziałanie aplikacji .NET z komponentami w standardzie COM.

Type Checker

Nie pozwala na rzutowanie typów na inne, które mogą nie być zgodne z obecnym. Zabezpiecza to przed błędnym sposobem dostępu do pamięci, jak również przed celową próbą destabilizacji systemu.

Exception Manager

Pozwala na obsługę hiererchicznych wyjątków, czyli błędów, jakie niektóre operacje mogą powodować (np. dzielenie przez zero lub próba dostępu do bazy danych bez podania przwidłowego hasła).

Security Engine

Zapewnia bezpieczeństwo kodu oparte na identyfikacji użytkownika uruchamiającego aplikację oraz pochodzenia kodu.

Debug Engine

Pozwala programiście na wyszukanie i usunięcie błędów w kodzie aplikacji i prześledzenie jego wykonania.

IL to Native Compilers

Kompilatory języka pośredniego (MSIL) do kodu maszynowego. Przeksztacają kod pośredni na kod zoptymalizowany dla danego procesora, na którym aplikacja jest wykonywana.

Code Manager

Zarządza wykonaniem kodu.

Garbage Collector

Proces zarządzający pamięcią, usuwający zbędne obiekty i zapewniający poprawne korzystanie z pamięci.

Class Loader

Zarządza metadanymi oraz ładowaniem i układem klas w pamięci.

Ponieważ w środowisku .NET kod programu napisany w języku wysokiego poziomu kompilowany jest najpierw do języka MSIL, a później do kodu natywnego danego procesowa, środowisko to może wspierać praktycznie wszystkie obiektowe języki programowania. Języki posiadające kompilatory dla platformy .NET to: C#, Visual Basic .NET, C++, J#, Jscript .NET - wspomagane przez Microsoft oraz Perl, Delphi .NET, Component Pascal, Object Pascal, NetCOBOL, APL, Eiffel, Haskell, ML, Oberon, Python, Scheme i inne, których nie sposób wymienić - tworzone przez firmy trzecie.
 .NET Framework to również środowisko tworzenia aplikacji rozproszonych. Dzięki usługom webowym (WebServices) pozwala na łatwą i szybką integrację aplikacji z różnymi dostawcami danych, czy usług. Przykładową aplikację korzystającą z usługi webowej udostępnionej przez Google (Google Web API) można pobrać ze strony: http://www.google.com/apis/download.html. Zamieszczony tam program pokazuje szacowaną ilość wyników dla danego zapytania, wielkość cache’owanej strony lub poprawione zapytanie. Aby skorzystać z WebService’u Google, należy się zarejestrować. Przykład działania programu pokazany jest na poniższej ilustracji.


Oczywiście WebService Google Web API udostępnia także możliwość pobrania rezultatów wyszukiwania.
 Platforma .NET jest środowiskiem zarządzanym. Oznacza to dla programisty bardzo duże ułatwienia. Mianowicie zwalnia go z zarządzania pamięcią, co jest jedną z najtrudniejszych czynności w pracy programisty. Błędne zarządzanie pamięcią może prowadzić do niestabilności w pracy programu lub nawet całego systemu operacyjnego. Dotychczas na barkach programisty spoczywał ciężar utworzenia obiektu, zaalokowania dla niego potrzebnej pamięci operacyjnej, jak również konieczność jego późniejszej destrukcji i zwolnienia pamięci. Na platformie .NET problemem zarządzania pamięcią zajmuje się GarbageCollector, czyli po polsku „śmieciarz”. Jest to proces systemowy, który co jakiś czas przegląda zawartość pamięci i zwalnia nieużywane zasoby. Proces ten śledzi wszystkie odwołania do każdego istniejącego obiektu. W momencie, gdy znajdzie obiekt, który przestał być już potrzebny (nie ma już do niego żadnego odwołania, a więc nie ma możliwości dostępu do niego), Garbage Collector w oddzielnym wątku dopisuje do kolejki finalizator tego obiektu (opcjonalna metoda Finalize(), która znajduje się w ciele obiektu). Wątek ten wykonuje skolejkowane finalizatory bezużytecznych obiektów i zwalnia zajmowaną przez nie pamięć oraz dokonuje jej defragmentacji, co daje możliwość umieszczenia w niej większych obiektów.
 Poniższa ilustracja pokazuje strukturę platformy .NET.

 Najniższą warstwą środowiska .NET jest opisany już wcześniej CLR, na którym oparte są biblioteki klas wykorzystywane przy tworzeniu oprogramowania. Ze względu na różnice pomiędzy poszczególnymi językami programowania, nie wszystkie klasy są dostępne w każdym z języków. Microsoft opracował wspólną specyfikację języków (CLS – Common Language Specification) oraz wspólną specyfikację typów (CTS – Common Type Specification), które określają, jakie typy danych muszą być dostępne w danym języku, aby można było nazwać go zgodnym z platformą .NET.
 Na klasach bazowych opiera się kolejna warstwa platformy, czyli klasy ułatwiające często wykonywane operacje, jak korzystanie z języka XML do komunikacji z komponentami znajdującymi się na odległych serwerach, klasy obsługujące połączenia sieciowe, dostęp do baz danych (ADO.NET) i inne. Na tych klasach opiera się interfejs aplikacji – graficzny, bądź tekstowy interfejs użytkownika w przypadku aplikacji typu Windows Forms, Web Forms, czy też aplikacji konsolowych lub interfejs XML w przypadku usług webowych. Aplikacje Web Forms oraz usługi webowe są aplikacjami opartymi o ASP.NET, czyli środowisko dla tworzenia i uruchamiania aplikacji webowych.

 Wszyscy pamiętamy sytuacje, gdy po zainstalowaniu jakiegoś programu, inny nagle przestawał działać. Działo się tak dlatego, że instalator nowej aplikacji zamienił wersję jakiejś biblioteki używanej przez stary program. Platforma .NET w znacznej mierze rozwiązuje ten problem poprzez znakowanie wersji komponentów na przykład poprzez nazwę biblioteki, numer wersji oraz podpis cyfrowy autora. Pozwala to na przechowywanie kilku wersji tej samej biblioteki w jednym systemie operacyjnym. Każda aplikacja wie, z której wersji powinna skorzystać i właśnie do niej się odwołuje. Ponadto, biblioteki wykorzystywane przez daną aplikację nie są automatycznie ładowane do pamięci przy uruchomieniu programu. Faktycznie do momentu, w którym potrzebujemy wywołać jakąś metodę z danej klasy, nie musi ona fizycznie istnieć w systemie.
 Posłużmy się przykładem: Załóżmy, że edytor tekstu ma możliwość zmiany koloru tekstu, ale funkcje zajmujące się tym zaimplementowane są w osobnym module. Moduł ten nie jest nam w ogóle potrzebny jeżeli nie zmieniamy koloru. W związku z tym możemy spokojnie korzystać z niepełnej kopii programu i nikomu nie będzie to przeszkadzało, chyba że będzie chciał pisać na żółto :).
 Tak więc środowisko .NET Framework jest bardzo przyjaznym środowiskiem dla programisty, gdyż duża ilość komponentów jest już wbudowana i nie trzeba się samemu troszczyć o ich stworzenie. Poza tym znacznie ułatwia i przyśpiesza tworzenie aplikacji i współpracę programistów preferujących różne języki programowania.
 Jeżeli udało ci się dobrnąć do tego miejsca i jeszcze żyjesz, zapraszam do lektury kolejnej części, która ukaże się na portalu już wkrótce, a będzie dotyczyć składni i ogólnego spojrzenia na język C#.

 

Podobne artykuły

Komentarze 3

emajak1922
emajak1922
0 pkt.
Nowicjusz
21-01-2010
oceń pozytywnie 0
Chwała za kolejny artykuł. Jest ich w polskim Internecie b. mało. Na stronach anglojęzycznych - tysiące...
twozniacki9256
twozniacki9256
1 pkt.
Nowicjusz
21-01-2010
oceń pozytywnie 0
Czy istnieje narzędzie które pozwoli z kodu CLR wytworzyć aplikację na okresloną platformę aby przyśpieszyć działanie aplikacji NET
User 79314
User 79314
44 pkt.
Poczatkujacy
21-01-2010
oceń pozytywnie 0
O ile mi wiadomo, aplikacja przy pierwszym uruchomieniu jest kompilowana i zapisywana w kodzie odpowiadającym danej platformie. Każde następne jej uruchomienie jest już szybsze. Platforma .net jest jednak nieco wolniejsza od kodu napisanego w języku niższego poziomu (jak C, czy C++). Wynika to z asynchronicznego zarządzania pamięcą.
pkt.

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.