Kompletny .Net

.Net Framework jest ściśle powiązany z koncepcją usług Web - uniwersalnej metody zdalne- go wywoływania komponentów i usług za pośrednictwem protokołów HTTP i SOAP. Dostępne są także inne mechanizmy wywoływania komponentów .Net, np. .Net Remoting czy komunikacja oparta na ASP.Net. Integralną częścią .Net jest moduł zwalniający pamięć (garbage collector). W .Net praktycznie nie istnieją wskaźniki (można natomiast wykorzystywać referencje).

Za zaletę .Net należy uznać wymuszenie na twórcach aplikacji programowania z mocną kontrolą typu. I to niezależnie od tego, czy komponent jest lokalny, czy też jest to zewnętrzna usługa Web. Dzięki temu wykrywana jest większość błędów związanych z nieprawidłowym rzutowaniem typów. Platforma .Net nie jest zamkniętym środowiskiem. Z poziomu programów działających w .Net można bezpośrednio odwoływać się do Win32 API albo do klasycznych komponentów COM. W przypadku komponentów COM można wygenerować wrapper - niewielką bibliotekę DLL, która będzie zawierać metadane, pozwalające na np. wczesne wiązanie interfejsów z poziomu aplikacji .Net. Można także skorzystać ze specjalnych funkcji usługowych, które pozwalają na wywoływanie dowolnej metody COM za pośrednictwem nazwy (wykorzystywany jest tu częściowo interfejs IDispatch). Aby odwołać się bezpośrednio do API Windows, należy zadeklarować funkcję, wskazując plik DLL, w którym się znajduje (podobny mechanizm jest dostępny zarówno w C#, jak i w VB). Programista wykorzystujący C++ może tworzyć kod zarządzalny, działający pod kontrolą .Net, i kod tubylczy (niezarządzalny), działający bezpośrednio jako aplikacje Win32. W tym drugim przypadku kod jest oznaczany jako niebezpieczny i platforma .Net traktuje go w specjalny sposób.

Możliwa jest także współpraca w drugą stronę. Aplikacje Win32, po zdefiniowaniu odpowiedniego interfejsu COM, mogą wykorzystywać pakiety .Net. Należy jednak podkreślić, że C++ nie może być pełnoprawnym językiem .Net. Klasy tworzone w .Net mają trochę inną semantykę niż pisane w C++. Klasy kodu zarządzalnego, który powstaje w C++, można tworzyć dzięki tzw. programowaniu na podstawie atrybutów - specjalnych rozszerzeń języka, które wprowadzają do C++ elementy CLS wymagane przez .Net.

Po miesiącu od wprowadzenia .Net Framework trudno ocenić wydajność nowej platformy. Garbage Collector działa inaczej niż ten implementowany w maszynie wirtualnej Java - nie jest tak bardzo wrażliwy na sytuacje, gdy alokowane i zwalniane są bloki pamięci, przekraczające rozmiarem pamięć fizycznie zainstalowaną na danej maszynie. .Net narzuca modułowość rozwiązania - nic nie stoi na przeszkodzie, by niemal każda klasa była umieszczona w oddzielnym pakiecie. Dzięki temu system nie ma do czynienia z jednym, olbrzymim komponentem, tylko z wieloma drobnymi, które są w stanie równomiernie obciążyć procesor.

Prędkość wykonywania skompilowanego kodu MSIL jest wysoka (należy podkreślić, że użytkownik zawsze pracuje ze skompilowaną wersją aplikacji). MSIL od początku był projektowany jako kod pośredni, który będzie kompilowany, a nie interpretowany. Zawiera dużo wskazówek określających optymalną wydajność.

Zarówno CLR, CLS, jak i nowy język C# zostały poddane procesowi standaryzacyjnemu. Obecnie są już publicznie dostępne ich specyfikacje. Równocześnie prowadzone są, niezależne od Microsoftu, przedsięwzięcia, które wykorzystują pomysły zaczerpnięte z .Net - platformy niezależnej od wybranego języka programowania, a przy tym izolującej kod od bazowego API systemu operacyjnego. Kolejna wersja linuxowego środowiska GNOME będzie oparta na koncepcji CLR.


TOP 200