Czym jest .NET

„Jest taki jeden problem, który wyrażę tak dobitnie, jak tylko potrafię – co to jest .NET? W przeciwieństwie do Windowsa nie jest to produkt, który siedzi w jednym miejscu i ma ładne pudełko. W pewnym sensie, to bardzo dobre pytanie… […]Polega na łączeniu ludzi z ludźmi, ludzi z informacją, interesów z interesami, interesów z informacją i tak dalej. To jest właśnie zysk.”

Steve Ballmer

„Nie ma w nim użytkowniko-centryczności. Dopóki rozumiemy kontekst, który mocno wyprzedza teraźniejszość, teraźniejszość jest najbardziej trywialnym pojęciem w tym kontekście.”

Bill Gates

„Największy problem to polityka używania .NET. NET Servery to wspaniały przykład, z czego bierze się wątpliwość. Sprawiliśmy wrażenie, że daliśmy .NET na parę losowych produktów.”

Charles Fitzgerald

cytaty z portalu http://infojama.pl


   Czytając wypowiedzi osób nawet z samego serca Microsoftu można się pogubić. Powyżej przytoczone cytaty świadczą o tym, że odpowiedź na pytanie 'czym jest .NET’ może być bardzo różna – sam jej twórca wydaje się nie mieć co do tego pewności.
W książce promującej technologię .NET pana Davida S. Platta, w rozdziale zatytułowanym „Czym wogóle jest .NET?” czytamy: Tym właśnie jest .NET – prefabrykowaną infrastrukturą do rozwiązywania typowych problemów występujących w aplikacjach internetowych. […]. Nie zważając na kolejny nie do końca zrozumiały bełkot można skupić się na kilku faktach wynikających z tych wszystkich wypowiedzi:

  • .NET jest technologią
  • technologią, jak sama jej nazwa wskazuje, związaną mocno z internetem
  • wyznacza obecny kierunek rozwoju produktów Microsoftu
  • niewątpliwie nadużywanym hasłem marketingowym

Technologia .NET

Do znaczenia internetu nie trzeba chyba nikogo przekonywać. Coraz więcej osób korzysta z serwisów internetowych. Początkowo były to tylko serwisy informacyjne, potem małe interface’y dające możliwość odczytania poczty za pomocą przeglądarki, obecnie są to produkty, które śmiało można nazwać aplikacjami. Przykładem całego systemu zarządzania za pomocą przeglądarki może być m.in. MOM (Microsoft Operation Manager). Innym wykorzystaniem internetu są autoupdate’y, dzięki czemu użytkownik ma pewność, że korzysta z najnowszej, poprawionej wersji aplikacji. Czego jeszcze brakuje?
Zastanówmy się nad takimi faktami: skoro sto tysięcy osób ma zainstalowanego Microsoft Office’a (liczby są czysto przykładowe), oznacza to, że jest sto tysięcy identycznych kopii kodu na stu tysiącach komputerów. Pojawia się nowa łatka do Office’a. Sto tysięcy razy ta sama łatka zostaje sciągnięta na kązdą z maszyn. Czy nie da się z tym nic zrobić? Nie jest to bynajmniej pytanie retoryczne – odpowiedź istnieje już od jakiegoś czasu i powoli ewoluuje, a nazywa się „Web Services„. Web Services, czy też Usługi Internetowe, są jednym z podstawowych elementów idei technologii .NET. Idea ta polega na budowaniu małych, ograniczonych funkcjonalnie modułów (mini-aplikacji), upublicznionych w sieci. Dane którymi posługują się Usługi Internetowe zapisywane są w formacie XML, który jest uniwersalnym językiem wymiany danych. Można wyobrazić sobie taki przykład: programista pisze aplikację 'kalkulator’. Jego rola będzie sprowadzała się do odszukania serwisów wykonujących poszczególne funkcje – on zbuduje tylko interface i oprogramuje mechanizm komunikacji. I tak powstaje aplikacja, gdzie jedyna część kodu jaka znajduje się na komputerze użytkownika to GUI. Kiedy wykonuje działanie, dane sformatowane w XML przesyłane są do odpowiedniego serwisu, aplikacja dostaje tylko wynik sformatowany w tej samej postaci. Jeśli ktoś odkryje, że w module 'mnożenie’ jest błąd – np. podczas dzielenia przez 1, zostanie to poprawione centralnie na serwerze, i wszystkie kalkulatory automatycznie będą to działanie wykonywać prawidłowo. Biorąc pod uwagę zalety takiego rozwiązania, można poważyć się o stwierdzenie, iż kolejnym krokiem w ewolucji aplikacji są aplikacje rozproszone. Oczywistym jest, że na dzień dzisiejszy wizja rozproszonego Office’a jest tylko marzeniem, zwłaszcza w kraju z tak wysoce rozwiniętą infrastrukturą telekomunikacyjną jak Polska oraz fakt, iż nie każdy rodzaj aplikacji jest sens w ten sposób budować. Jeszcze nie dziś.
Reasumując zalety zastosowania Usług Internetowych:

  • możliwość napisania własnej usługi, której będą mogli używać również inni
  • analogicznie – możliwość wykorzystania istniejącego serwisu zamiast pisania własnego
  • centralizacja i aktualność kodu – Usługa wykorzystywana przez setki czy tysiące osób znajduje się w kilku zaledwie miejscach
  • specjalizacja funkcjonalności – jeśli Usługę 'kalkulator’ napisała firma X-mathematics, i jest to poważana firma zajmująca się tą dziedziną nauki, to można zaufać, że ich aplikacja będzie napisana dobrze. Pisząc własną aplikację możemy zastosować ich kalkultaor zoszczędzając czas, oraz mając produkt o większej fukcjonalności niż bylibyśmy w stanie sami zaimplementować.
  • uniwersalność i możliwość łatwego wyszukiwania Usług Internetowych – „Web Services” są ogólnoprzemysłowymi standardami, przez co każda firma może z niego korzystać. W skład Usług Internetowych wchodzą poniższe protokoły:
    • XML (EXtensible Markup Language), opracowany przez W3C, będący standardem opisującym sposób zapisu danych.
    • SOAP (Simple Object Access Protocol) opracowany przez W3C, będący protokołem opisującym sposób przesyłania informacji w środowisku rozproszonym, bazującym na XML jako strukturze zapisu danych.
    • UDDI (Universal Description, Discovery, and Integration), budowanym przez UDDI.org, w którego skład wchodzi kilka poważnych firm. Protokół UDDI definiuje katalog Usług Internetowych, za pomocą którego możliwe jest odnalezienie aplikacji o konkretnej funkcjonalności.

Technologia „Web Services” jest promowana przez Microsoft w parze ze „Smart Devices”. Pod hasłem 'sprytnych’ urządzeń kryją się wszystkie komputery PC, laptopy, telefony, palmy, hendheld’y, tablet PC itd. Ich „spryt” ma oznaczać możliwość dostępu do Usług Internetowych, umożliwiając pracę z danymi bez względu na to gdzie się znajdujemy, z jakiego korzystamy sprzętu i z jakiej platformy oraz wymianę informacji z innymi urządzeniami tego typu.

Microsoft .NET

Technologia „Web Services” jak kolwiek będąca trzonem całej idei, nie stanowi całego rozwiązania proponowanego przez Microsoft. W parze z technologią powinno być jakieś rozwiązanie dające możliwość implementacji tejże technologii. Propozycją Microsoftu dającą taką możliwość jest Microsoft Visual Studio .NET – pakiet aplikacji developerskich dających możliwość w szybki sposób budowania aplikacji internetowych… i nie tylko. Visual Studio .NET jest produktem przełomowym dla tej firmy, ze względu na zupełnie inne podejście do języków programowania.
Wizerunek dzisiejszego internetu i apliacji sieciowych został wyznaczony przez Sun’owską Javę – w pełni obiektowy język implementujący większość popularnych mechanizmów komunikacji, niezależny od platformy poprzez zastosowanie 'maszyny wirtalnej’ i kompilacji do B-kodu zamiast do kodu natywnego. Microsoft zdecydował się nie zmieniać tej idei proponując całkiem nowy pomysł – poszedł za ciosem dając po prostu własne, nieco rozszeżone rozwiązanie, jakim są języki .NET.
Do tych języków zaliczają się głownie Visual Basic .NET, który niewiele już przypomina jaki kolwiek Basic, oraz C#, który złośliwie można by nazwać 'Microsoft Java’, za co wiele osób związanych z Javą ma pretensje do firmy Microsoft. O ile sam język jest bardzo podobny oraz idea kompilacji do kodu pośredniego pozostała .NET sporo odróżnia od Javy.
Nie chcę się wdawać w dysputę na temat co jest lepsze a co gorsze ponieważ zrobiło to już setki bardziej doświadczonych osób – i nie jest to tematem tego artykułu.
Pisanie aplikacji ułatwia Visual Studio .NET wprowadzając wiele ułatwień dla programistów, skracjąc czas nad budowaniem GUI czy mechanizmów komunikacji tak, że programista może skupić się nad tym co najważniesze. Kod pośredni można przenieść na każdą platformę, która ma zainstalowany 'Microsoft .NET Framework’ będący poniekąd odpowiednikiem maszyny wirtualnej Javy, czyli zestawem bibliotek i definicji, oraz kompilatorem kodu pośredniego do kodu natywnego z wykożystaniem technologii JIT (Just-In-Time compilation). Podstawową zaletą w stosunku do Javy jest prędkość działania aplikacji poprzez fakt, iż po pierwszym uruchomieniu program jest kompilowany i w tej postaci zostaje już na maszynie – przez co każde następne uruchomienie będzie o wiele szybsze. Natomiast podstawową wadą jest dostępność Framework’a, wbrew dawnym obietnicom, tylko na platformy Microsoft’owe. Popularność .NET stoi pod znakiem zapytania – z jednej strony wspaniałe podejście, „web Services”, „Smart Devices”, aplikacje rozproszone, i teoretyczna niezależność od platformy, z drugiej natomiast dość kontrowersyjne podobieństwo da Javy, i faktyczne uzależnienie aplikacji .NET od jednej platformy – Windows. Przeniesieniem .NET Framework’a na platformę linux zajmuje się projekt Mono. Dla zainteresowanych – w sekcji FAQ można dowiedzieć się o współpracy firmy Microsoft z osobami uczestniczącymi w projekcie.

ASP .NET

Opowiadając o .NET nie wypada nie napisać kilku słów o nowej formie ASP (Active Server Pages) – ASP .NET, będącej bądź co bądź technologią najbardziej bezpośrednio związaną z internetem. Zmiany w nowej wersji ASP są potężne – mniej więcej tak jak w przypadku Visual Basic .NET. Dwiema podstawowymi zmianami w ASP jest odseparowanie kodu ASP od źródła strony – HTML, przez co kod staje się dużo czytelniejszy, oraz wprowadzenie kontrolek WWW (Web Forms Server Controls). Dzięki wprowadzeniu kontrolek możliwa była zmiana całej idei budowania aplikacji WWW, oddzielając programistę od kodu, przez co może się on skupić nad tym CO ma robić aplikacja, a nie W JAKI SPOSÓB ona to robi. Nie chciałbym wdawać się w polemikę czy takie podjeście jest lepsze czy gorsze – De Gustibus Non Est Disputandum. Fakt jest taki, iż Visual Studio .NET daje możliwość budowania również aplikacji internetowych. Wizualne podejście do budowy aplikacji (code-behind) – gdzie aby zbudować interface wystarczyło go 'narysować’ i oprogramować odpowiednie przyciski – nie interesując się jakie funkcje ten interface tworzą i w jaki sposób – było zarezerwowane napierw tylko dla Visual Basic’a (przy którym narodziła się ta idea), później powstało Visual Studio obejmujące również C i C++, obecnie w ten sposób, za pomocą Visual Studio .NET, można budować również aplikacje WWW (ASP) – jest to po prostu kolejny krok w ewolucji.
Kolejnym elementem ulepszonym, a raczej wprowadzonym w ASP .NET jest mechanizm autentykacji użytkowników za pośrednictwem standardowych mechanizmów Windows oraz możliwość pisania własnych metod uwierzytelniania. ASP .NET również daje możliwość automatycznego zapisywania stanu sesji i późniejszego odzyskiwania go.
Ostatnią poważną zmianą jest wprowadzenie kompilacji kodu ASP .NET (JIT), przez co apliakcja nie musi być za każdnym razem parsowana przez serwer. Oczywistym jest zysk wydajności jaki uzyskuje się przy takim podejściu oraz możliwość budowania aplikacji WWW w dowolnym języku obsługiwanym przez Visual Studio .NET.

Server 2003 czy Server .NET?

Ostatnią kwestią jest odpowiedź na pytanie – czy „Server 2003” jest „Serverem .NET”?. Moja odpowiedź brzmi: nie, nie jest.

Aby dostarczyć użytkownikowi pełnego rozwiązania, należało dać mu technolgię, narzędzia do jej wykorzystania – o tym już było – oraz platformę. I tak uzupełnieniem do opisywanego wcześniej .NET Framework oraz Visual Studio .NET powstawał .NET Server. Premiera serwera została przesunięta o ponad rok, zamieszanie wywołane nadużywaniem hasła ’.NET’ przy każdej możliwej okazji spowodowało, że większość osób straciła orientację czym .NET jest i co to wogóle znaczy. Najwięcaj zamieszania wprowadził właśnie „Server .NET”, którego nazwa może sugerować iż jest to system przystosowany do technologii .NET – więc może na żadnym innym nie da się jej wykorzystać, lub też iż jest w niej zbudowany – co rodzi wątpliwości do jego stabilności. Toć system zbudowany w technolgii, o której nikt nic jeszcze nie wie, nie budzi zaufania. I tak w ostaniej fazie „Server .NET” przemianowany został na „Server 2003”, totalnie dezorientując użytkowników.
Tak też Server 2003 nie jest serwerem .NET, a osoby które jeszcze nie są przekonane zachęcam do instalacji Visual Studio .NET oraz Framework 1.0 na Web Server 2003. Takie zestawienie wydaje się bardzo dobrze dobrane – w końcu wszystko to prezentowane było pod sztandarem nowej technologii. Tymczasem o ile działa to na serwerze 2000, w takiej konfiguracji publikowanie Web Service’ów (Usług Internetowych) powoduje bład i nie jest możliwe. Błedy te zostały poprawione co prawda w wersji Framework 1.1, który miał premierę wraz z Microsoft Server 2003, ale jest to moim zdaniem jednym ze świadectw na nieco zbyt pochopne nadużywanie .NET jako hasła marketingowego – co jak widać może zemścić się brakiem zrozumienia wśród potencjalnych odbiorców.

-o((:: sprEad the l0ve ::))o-