Wraz z pojawianiem się kolejnych wersji .NET do świata programistów wchodziło coraz większe zamieszanie. Co oznacza każdy następny numerek, jakie zmiany wnosi, jak się owe zmiany mają do poprzedników? Przykładowy fakt, że piszemy program używając Visual Studio 2008 w języku C# 3.0 i korzystając jednoczeście z bibliotek w wersjach 2.0, 3.0 i 3.5, a o jego poprawne działanie dba CLR w wersji 2.0.50727 może nieźle namieszać. Szczególnie u początkujących developerów.
Dlatego też, tak jak zapowiedziałem, postaram się zebrać te informacje do kupy i bez wchodzenia w szczegóły (każdy z poruszanych tu tematów nadaje się na całkiem obszerny artykuł) wymienić co, kiedy i dlaczego.
Na początek tabelka z najważniejszymi informacjami, a później komentarz:
.NET | rok | VS | CLR | C# | VB | |
---|---|---|---|---|---|---|
1.0 | 2002 | 7.0 (2002) | 1.0 | 1.0 | 7.0 | Uwagi |
1.1 | 2003 | 7.1 (2003) | 1.1 | 1.0 | 7.0 | Uwagi |
2.0 | 2005 | 8.0 (2005) | 2.0 | 2.0 | 8.0 | Uwagi |
3.0 | 2006 | 8.0 (2005) | 2.0 | 2.0 | 8.0 | Uwagi |
3.5 | 2008 | 9.0 (2008) | 2.0 | 3.0 | 9.0 | Uwagi |
.NET 1.0 & .NET 1.1
Nie ma nic do wyjaśniania. Pierwsze wersje nijak się nie zazębiają z teraźniejszością – koniec.
.NET 2.0
.NET 2.0 można określić jako “Core”, czyli jądro, podstawę, rdzeń, kręgosłup, podwaliny, serce, flaki itd. wszystkiego w .NET co mamy do dziś. Pomimo, że od tamtej pory numer wersji skoczył o 3/2, nadal używamy tych samych bibliotek i nasze programy są uruchamiane w tym samym środowisku uruchomieniowym (CLR). Oznacza to tyle, że wszystko stworzone później nie modyfikuje wersji z roku 2005, a tylko (albo w przypadku .NET – AŻ) dodaje nowe elementy. Dowód:
Co nowego w porównaniu z 1.1? Najważniejsze elementy, które umożliwiły tak prężny rozwój platformy w obecnej wersji to:
- typy ogólne (generics)
- metody anonimowe (anonymous methods)
- przy okazji warto też wspomnieć o wprowadzonym do C# słowie kluczowym “yield“
Tym samym w świecie .NET po cichu zaczyna się mówić o programowaniu funkcyjnym (zachęcam do zapoznania się z pojęciem “closures“).
Oprócz tego olbrzymi skok w kwestii narzędzi: pojawia się Visual Studio Team System (VSTS + TFS = IDEalne IDE?) i za darmo udostępnione zostaje Visual Studio w wersji Express – nawet do komercyjnego użytku!
.NET 3.0
Przy .NET 3.0 zaczęły się problemy z numerkami. Ta wersja to nic innego jak “nakładka” na 2.0. Zbiór nowych klas, które pomimo przygotowania gruntu pod rewolucje w pewnych obszarach, nie wnoszą NIC nowego do mechanizmów .NET. Dlaczego nie nazwano tego po prostu 2.5?…
Co konkretne otrzymaliśmy? Cztery technologie z czterech dziedzin:
- Windows Presentation Foundation – interakcja z użytkownikiem (oprócz samego interfejsu graficznego nalezy tutaj również zaliczyć komunikację głosową: System.Speech.dll)
- Windows Communication Foundation – komunikacja pomiędzy aplikacjami
- Windows Workflow Foundation – tworzenie, uruchamianie i zarządzanie przepływami
- Card Space – zagadnienia związane z tożsamością
Czy to mało? Nie, wręcz przeciwnie. Jednak zakres ZMIAN zbyt nikły jak na [MAJOR]++.
.NET 3.5
Prawdziwa kolejna odsłona .NET. Nowe wersje języków programowania pozwalające (na szczęście – nie wymuszające) na zauważalnie dużą zmianę podejścia do tworzenia kodu. Co to oznacza? Ponownie ten sam magiczny termin: programowanie funkcyjne… Tak jak napisałem we wstępie, nie będę zagłębiał się w szczegóły. Wymienię jedynie najważniejsze rzeczy:
- nowe biblioteki zawierające nowe klasy (banalne…) lub rozszerzenia już istniejących (przy wykorzystaniu – nowego – mechanizmu Extension Methods, o którym pisałem ostatnio)
- wyrażenia lambda (lambda expressions) biorące wszystko co dają metody anonimowe i ciągnące to o jeden poziom dalej
- type inference
- klasy anonimowe
- LINQ – Language Integrated Query – mechanizm łączący wszystkie wymienione wyżej zmiany w spójną i rewolucyjną całość pozwalającą na całkowicie nowe podejście do operacjach na wszelkich danych
Podsumowanie
Mega-krótkie podsumowanie: nasze aktualne narzędzia pracy to .NET 2.0 (podstawowa funkcjonalność i wnętrze całej platformy) + .NET 3.0 (alternatywne do 2.0 rozwiązania pewnych kwestii) + .NET 3.5 (nowe konstrukcje językowe).
Mam nadzieję, że powyższy tekst rozjaśnił zdezorientowanym o co chodzi w tym całym zamieszaniu. Oczywiście wszystkie wymienione tu zagadnienia (jak i te pominięte, jak choćby “partial classes” wprowadzone w 2.0 czy pokrewne “partial methods” z 3.0) zasługują na głębsze poznanie, do czego zachęcam.
bardzo fajnie i prosto wyjaśnione. brakuje mi właśnie takich artykułów porządkujących.