.NET keretrendszer

A Wikipédiából, a szabad enciklopédiából
.NET keretrendszer
180px-Microsoft dotNET Logo.jpg
NETFrameworkEsquemaJoanNE.png

Fejlesztő Microsoft
Legfrissebb stabil
kiadás
4.5.1
(2013. október 17.)
Legfrissebb fejlesztői kiadás ismeretlen +/-
Operációs rendszer Windows
Kategória szoftverfejlesztési keretrendszer
Licenc kereskedelmi
A(z) .NET keretrendszer weboldala

A Microsoft által készített .NET keretrendszer (a .NET Framework) gyors alkalmazásfejlesztést (RAD), platformfüggetlenséget és hálózati átlátszóságot támogató szoftverfejlesztői platform. A keretrendszert a korábbi platform, a COM leváltására szánták.

Eredetileg a .NET kifejezés nemcsak fejlesztői környezetet jelentett, hanem fejlesztőeszközök, szoftverek sőt hardvereszközök összességét is. Az évek során a kép kitisztult, így mostanra a .NET alatt a keretrendszert értjük.

A .NET Framework eszköztára a szoftverfejlesztés szinte minden aspektusát (kliens- illetve szerveroldali megoldások, adatbázisok kezelése, játékfejlesztés stb.) lefedi.

Története[szerkesztés | forrásszöveg szerkesztése]

A kilencvenes évek közepén a Sun kiadta a Java platform első verzióját. Az új környezet hamarosan igen nagy népszerűségre tett szert platformfüggetlensége, hatalmas, jól kezelhető osztálykönyvtára illetve könnyű megtanulhatósága révén. A Microsoft és más cégek eszközei eleinte nem tudták hatékonyan felvenni a versenyt a Sun termékével, később azonban a fejlesztések beértek. A Microsoft először a Java saját implementációjával próbálkozott, de ezzel soha nem aratott különösebb sikert.

Néhány későbbi .NET technológia eredetileg ezen fejlesztések során jött létre. Amikor 1998-ban a Microsoft elhatározta, hogy nem használja tovább a Sun Microsystems Java technológiáját, a már létező Microsoft J++ (Java++) terméket a .NET projekt alapjaként használták. A .NET CLR kódja egyesek szerint a Colusa Software OmniVM termékéből származik, amit a Microsoft 1996. március 12-én vásárolt meg.

A tényleges fejlesztés a kilencvenes évek végén Next Generation Windows Services munkacím alatt Bill Gates személyes felügyelete mellett indult el. 2000-ben a Microsoft, az Intel és a Hewlett-Packard már a C# nyelv szabványosításán dolgozott, ezt az ECMA 2001-ben el is fogadta.

2000 végére elkészült az első béta változat, 2002. január 5-én pedig a .NET Framework 1.0 verziója végre a nagyközönség kezei közé került.

A következő mérföldkövet 2005. november 7. jelentette, ekkor adták ki a 2.0-ás verzió végleges változatát amely hatalmas változásokat hozott. Tulajdonképpen ez a verzió hozta meg az igazi népszerűséget a .NET számára.

Egy nap híján egy évvel később a 3.0 is napvilágot látott, rá egy évre pedig a 3.5 verzió született meg. 2008 augusztusában a Microsoft kiadta a 3.5 verzióhoz tartozó első szervizcsomagot. 2010 év elején jelent meg a 4.0 verzió. 2012-ben pedig a 4.5 verzió béta változata.

Architektúra[szerkesztés | forrásszöveg szerkesztése]

Common Language Infrastructure[szerkesztés | forrásszöveg szerkesztése]

A .NET Framework alapját a CLI vagyis a Common Language Infrastructure képezi. Ez nem más mint azon szabályok halmaza, amelyek leírnak egy nyelvfüggetlen fejlesztői környezetet, a futtatókörnyezetet, típusrendszert stb. A .NET Framework implementációját CLR-nek, Common Language Runtime-nak hívják. A CLI maga is négy fő részre oszlik:

A CLS a CLI része. Azokat a szabályokat írja le, amelyeket a CLI kompatibilis nyelveknek be kell tartania. Érdekesség, hogy a legtöbb .NET nyelv – pl. a C# – tartalmaz olyan elemeket, amelyek nem felelnek meg a CLS specifikációnak (pl. a CLS nem engedi meg ulong típusú paraméterek használatát, míg a C# igen).

A CTS a CLI azon része, amely a típusokat, azok memóriabeli reprezentációját illetve egymással való interakcióját írja le. A .NET minden nyelve ugyanazt a típusrendszert használja és ugyan az egyes típusok megnevezése nyelvfüggő, viszont mindig ugyanarról a típusról van szó.

A CLR vagy VES (Virtual Execution System) a CLI nyelven megírt programok betöltéséért és végrehajtásáért felel. Felelősséggel tartozik pl. a memóriamenedzsmentért, kivételkezelésért illetve a kódbiztonságért is (itt a fontosabbak lettek említve).

A CIL (korábban MSIL) egy ún. köztes kód. Minden CLI nyelvben megírt program erre a kódra fordítódik le (ellentétben a hagyományos nyelvek natív kódjától). Ezt a kódot a tényleges futtatáskor az ún. jitter (Just in time compiler) fordítja le natív kódra, amelyet a processzor már tud kezelni. A CIL hasonlít a Java bytekódjára.

Java kapcsolat[szerkesztés | forrásszöveg szerkesztése]

Java rendszert a .NET evolúciós előfutárának szokták mondani, lásd a cikk bevezetőjét is. Ezzel ellentétben, a Sun Microsystems Java licence ragaszkodik a különböző Java kivitelezések összeférhetőségéhez, azaz hogy különböző rendszereken hasonló eredmény adódjék, és hogy egyáltalán a Java rendszer simán elérhető legyen szinte minden elterjedten használt rendszeren.

A „Java (programozási nyelv)” szócikk szerint: Egyes cégek, mint például a Microsoft, mégis platformfüggő sajátságokat adtak a nyelvhez, amire a Sun keményen reagált: beperelte a Microsoftot (az amerikai bíróság 20 millió dollár kártérítésre és a sajátos tulajdonságok visszavonására kötelezte a céget). Válaszként a Microsoft kihagyta a Java rendszert a jövőbeli termékekből és Windows-változatokból. A platformfüggetlenség megvalósítása technikailag nagyon bonyolult, a Java esetében is sok vita volt: az „írd meg egyszer, futtasd bárhol” szlogenből „írd meg egyszer, hibakeress mindenhol” lett.

Szabványosítás[szerkesztés | forrásszöveg szerkesztése]

A Microsoft benyújtotta a .NET specifikáció egy részét az ECMA-hoz és az ISO-hoz szabványosításra. Ez kockázatot jelentett számukra, de támogatja a szabványkövető megvalósításokat.

.NET vs JEE[szerkesztés | forrásszöveg szerkesztése]

A CLI, a CIL és a C# nagy hasonlóságot mutat a Sun JVM-jéhez és a Sun Java-jához képest, ezért erős versenyben állnak egymással. Mindkettő egy saját köztes bájt kódot használ, amit a Microsoft CIL-nek (korábban MSIL) hív. A .NET bájt kódot futásidejű fordításra tervezték, míg a Javát eredetileg interpretálásra, de mára ott is futásidejű fordítás az alap viselkedési forma. A .NET jelenleg csak Windows platformon érhető el teljes valójában, míg a Java több platformon is teljesen rendelkezésre áll. Azonban a folyamatban levő megvalósítások, mint a Mono vagy a Rotor lehetővé teszik a .NET programok futtatását a Unix-típusú operációs rendszereken is, például Linuxon, FreeBSD-n és Mac OS X-en. Az Oracle terméke, a JEE, azonos funkciókat biztosít az olyan Microsoft technológiákhoz, mint a COM+ és az MSMQ, melyek erősen integráltak a Windows operációs rendszerbe. A .NET ezeket a technológiákat absztrakt módon teszi elérhetővé.

.NET vs COM[szerkesztés | forrásszöveg szerkesztése]

A Microsoft által korábban támogatott komponens alapú modell a COM volt (aminek része volt az MTS az elosztott tranzakciók támogatására), később pedig a COM+ lett. Bár a .NET be tudja csomagolni a COM komponenseket és fordítva – amit a Microsoft Runtime Callable Wrapper-nek (RCW) és COM Callable Wrapper-nek (CCW) hív –, a Microsoft egyértelműen jelezte, hogy a .NET mint szoftver komponens architektúra le fogja cserélni a COM-ot. A Microsoft reményei szerint a Win32 platformra fejlesztők elkezdik használni a .NET-et a COM helyett, és a jelenlegi szolgáltatásokat absztrakt interfészeken keresztül érik el (például a tranzakciókban résztvevő .NET komponensek jelenleg COM+-t használnak).

.NET nyelvek[szerkesztés | forrásszöveg szerkesztése]

A CLI-t úgy tervezték, hogy bármilyen objektumorientált programozási nyelvet támogasson, megosztva egy közös objektum modellt és egy nagy, közös osztálykönyvtárat. A .NET jelenleg több mint 40 programozási nyelvet támogat, melyek többsége ingyenes (a kereskedők fejlesztői környezeteket árulnak).

Sok nyelvet jelentősen hangoltak, hogy illeszkedjen a .NET keretrendszerbe. A gyártók ezt kihasználva gyakran egyéb nyelvi funkciókat is módosítottak.

Beépített nyelvek[szerkesztés | forrásszöveg szerkesztése]

  • C#, a C++-hoz és a Sun Java nyelvéhez hasonló objektumorientált nyelv
  • JScript .NET, Microsoft JScript nyelvének fordított verziója
  • J#, a Java és a J++ programozók átmeneti nyelve a .NET keretrendszer felé
  • Managed C++, a C++ egy változata a .NET platformra
  • Visual Basic .NET, a klasszikus Visual Basic egy továbbfejlesztett, objektumorientált, többszálas verziója

Külső forrásból elérhető nyelvek (válogatás)[szerkesztés | forrásszöveg szerkesztése]

ASP.NET és ADO.NET[szerkesztés | forrásszöveg szerkesztése]

  • ASP.NET a klasszikus Active Server Pages (ASP) webprogramozási technológia továbbfejlesztése. Megvalósítja a .NET követelményeket, .NET osztálykönyvtárral rendelkezik, de önmagában nem egy nyelv, hanem bármely .NET-et támogató nyelven lehet használni.
  • ADO.NET az ActiveX Data Objects (ADO) továbbfejlesztett verziója, mely támogatja a .NET keretrendszert.

Alternatív megvalósítások[szerkesztés | forrásszöveg szerkesztése]

Míg a Microsoft .NET Keretrendszer a .NET technológiák megvalósításának zászlóshajója, léteznek más megvalósítások is.

  • A Microsoft Rotor, vagy hivatalos nevén Shared Source Common Language Infrastructure egy shared source (megosztott forráskódú) licencű megvalósítása a .NET keretrendszernek. Microsoft Windows XP-n, FreeBSD-n és Mac OS X-en fut.
  • A Mono egy nyílt forráskódú megvalósítása a .NET futtató környezetnek és a fejlesztői könyvtáraknak. A Mono-t a Ximian (a Novell, Inc. része) és a nyílt forráskódú fejlesztői közösség fejleszti. Gyorsan fejlődik, támogatja az ASP.NET-et, az ADO.NET-et és fejlődik a Windows Forms könyvtárak támogatása is. Tartalmaz egy C# fordítót és egy Visual Basic .NET béta előtti állapotú fordítót is. A Mono új könyvtárak és technológiák fejlesztését is magában foglalja:
  • Gtk# – .NET burkoló a Gtk+ GUI készlet számára
  • XSP – C# nyelven írt webkiszolgáló ASP.NET támogatással
  • MonoDevelop – a SharpDevelop egy átültetett (portolt) változata, egy GPL-ed integrált fejlesztői környezet a .NET, a Gtk# és a Mono számára
  • Novell.Directory.Ldap osztály könyvtárak – Egy ingyenes .NET Lightweight Directory Access Protocol (LDAP) implementáció
  • SerialPortNet – egy soros portot kezelő könyvtár .NET és Mono platformra .NET 2.0 specifikáció támogatással
  • DotGNU Portable.NET kevésbé fejlett, mint a Mono, mivel a Portable.NET-et nem a Microsoft fejlesztői keretrendszerét használva hozták létre.

További információk[szerkesztés | forrásszöveg szerkesztése]