Co to jest .NET

Na pytanie postawione w tytule nie ma krótkiej odpowiedzi. Pod hasłem .NET kryje się wiele koncepcji, technologii czy wręcz produktów - np. serwerów obsługujących dane rozwiązania.

Na pytanie postawione w tytule nie ma krótkiej odpowiedzi. Pod hasłem .NET kryje się wiele koncepcji, technologii czy wręcz produktów - np. serwerów obsługujących dane rozwiązania.

Microsoft .NET to przede wszystkim wizja trochę innego sposobu tworzenia aplikacji. Takiego, gdzie systemy IT są połączone, bez problemu mogą wymieniać ze sobą informacje, a przy tym łatwiej je napisać niż w innych technologiach. Natomiast błędem byłoby patrzenie na .NET tylko jak na technologię. Aby napisać dobry program w .NET, trzeba zmienić sposób projektowania czy wręcz myślenia o systemach informatycznych.

Ale żeby ta wizja była realna, platforma .NET musi oferować technologie, które umożliwią jej realizację. Warto krótko je scharakteryzować.

  • ASP.NET - pozwala tworzyć aplikacje internetowe i usługi Web. Tak naprawdę kluczem do całej wizji połączonych systemów informatycznych są właśnie usługi Web - gdzie za pośrednictwem protokołów internetowych wywoływana jest określona funkcja niezależnie od tego, gdzie się znajduje czy w jakim systemie lub na jakim sprzęcie działa.
  • Windows Forms - zawiera elementy niezbędne do konstruowania bogatych aplikacji Windows: kontrolki, elementy związane z GDI+ itp.
  • .NET Remoting - biblioteka komunikacyjna pozwalająca na wywoływanie zdalnych obiektów .NET.
  • Enterprise Services - biblioteka pozwalająca tworzyć komponenty COM+ uruchamiane na serwerze aplikacyjnym. Używana często w aplikacjach rozproszonych i wielowarstwowych.
  • ADO.NET - biblioteka dostępowa do baz danych.

Do tego dochodzi olbrzymia liczba klas bazowych (Base Class Libraries, BCL), obejmujących bardzo szeroki zakres "usług" - obsługa plików, grafiki i strumieni, parsowanie XML, komunikacja sieciowa itp. Można powiedzieć, że to jest uporządkowane API Win32, rozszerzone o wiele elementów używanych w obecnych aplikacjach.

Jest również środowisko .NET Compact Framework do urządzeń przenośnych - rozbudowanych smartphone'ów i narzędzi typu Pocket PC (Windows Mobile).

Wszystkie elementy .NET działają we wspólnym środowisku uruchomieniowym .NET CLR (Common Language Runtime). Każdy język .NET generuje kod w języku pośrednim MSIL (lub IL - Intermediate Language), dopiero przed uruchomieniem na komputerze klienckim kompilowanym na kod maszynowy, przeznaczony do danej platformy (pewien wyjątek stanowi Visual C++ 2005). Co ważniejsze, kompilator uwzględnia aktualną, sytuację i zasoby na określonej maszynie, co sprawia, że kod jest optymalnie skompilowany do danego komputera.

Warto dodać, że w ramach CLR mogą współpracować aplikacje napisane w różnych językach. Dopóki kompilatory są zgodne na podstawowym poziomie (w zasadzie wystarczy system typów), dopóty można wywoływać funkcje w obcych językach, a jeżeli są to np. dialekty obiektowe, to można dziedziczyć po klasie napisanej w innym języku. Nic nie stoi też na przeszkodzie, aby stworzyć nowy język.

Aplikacja, która zawiera kod MSIL, jest nazywana zarządzaną. Warto dodać, że dzięki kompilacji przed uruchomieniem nie ma istotnej różnicy w prędkości działania programu w porównaniu z natywną aplikacją, ale nieznacznie wydłuża się pierwszy start danej funkcji. W zależności od ustawień, aplikację można tak skompilować, że np. funkcja będzie kompilowana dopiero wtedy, gdy ma być po raz pierwszy wywołana.

Równocześnie dzięki temu aplikacja napisana do .NET 2.0 może działać bez zmian w 32- i 64-bitowych systemach. Co więcej, omawiany sposób działania pozwala na weryfikację kodu przed uruchomieniem. Tak się dzieje - częścią .NET jest specjalny "weryfikator", który sprawdza, czy kod jest bezpieczny, np. czy nie następuje przepełnienie bufora, czy konwersja typów jest możliwa itp. Sprawdzane są wszystkie te elementy, które najczęściej powodują w oprogramowaniu problemy związane zarówno z bezpieczeństwem systemu, jak i z jego stabilnością.

Ponadto każdy składnik uruchamiany na tej platformie może być podpisany cyfrowo i przed uruchomieniem będzie sprawdzona jego integralność (dokładniej - jeżeli dodajemy odwołanie do jakiejś zewnętrznej biblioteki, to właściwie wskazujemy jej tzw. mocną nazwę (strong name), której częścią jest podpis cyfrowy). Złośliwy kod ma nikłe szanse na "doklejenie się" do aplikacji w .NET Framework, a dzięki weryfikacji i uprawnieniom (oczywiście jeśli ktoś je ustawi!), nawet w wypadku błędów programisty i pozostawienia dziury w aplikacji, ewentualne straty nie będą duże.

Integralną częścią .NET jest także automatyczny odśmiecacz (garbage collector). Dzięki temu programista w ogóle nie kłopocze się zwalnianiem obiektów - .NET sam się tym zajmie, gdy obiekt nie będzie już potrzebny. Ale wiąże się to z jedną istotną zmianą w aplikacji - o ile dokładnie wiadomo, kiedy obiekt jest tworzony, o tyle nie można przewidzieć, kiedy zostanie usunięty. Programistów zaczynających pracę na tej platformie często niepokoi, że pamięć nie jest zwalniana, ale oznacza to tylko, że w danym momencie .NET nie traci czasu na uruchamianie odśmiecania, bo pamięci jest wystarczająco dużo.

Podstawowa jednostka uruchamiana na platformie .NET, czyli pakiet (assembly), jest to plik, który oprócz kodu i zasobów (np. ikon umieszczonych na paskach narzędzi) zawiera także metadane opisujące jego strukturę. Dzięki temu aplikacja z zewnątrz może się dowiedzieć, co dany pakiet zawiera. Część informacji opisowych można usunąć, ale podstawowe muszą pozostać. Dzięki temu w .NET nie ma potrzeby dodatkowej rejestracji komponentów itp. Wystarczy wgrać do jednego folderu potrzebne pliki i aplikacja będzie się uruchamiać prawidłowo.

Obecnie, oprócz .NET 1.0 z roku 2002 i .NET 1.1 z 2003, dostępna jest najnowsza wersja beta 2 .NET Framework 2.0 i środowisko IDE do pisania w .NET - Visual Studio 2005. Zmian w stosunku do wersji 1.x jest bardzo dużo - obejmują zarówno język C#, kod MSIL, podstawowe środowisko uruchomieniowe CLR, jak i klasy BCL (które zostały jeszcze bardziej rozbudowane). Także samo środowisko programistyczne zostało w dużym stopniu rozszerzone. Wersja RTM obu produktów (a także SQL 2005) ma być dostępna 7 listopada 2005.

Ostateczna wersja .NET może się nieznacznie różnić od wersji beta, ale na pewno zmiany nie będą rewolucyjne i prawdopodobnie wszystkie elementy opisywane w tym numerze specjalnym znajdą się także w wersji ostatecznej Visual Studio .NET 2005.


Zobacz również