itthon / Dolgozzon az interneten / Mi az a microsoft net framework. A NET Framework technológia áttekintése. Mi az a CTS Common Type System

Mi az a microsoft net framework. A NET Framework technológia áttekintése. Mi az a CTS Common Type System

A .NET-keretrendszer egy integrált Windows komponens, amely támogatja az XML alkalmazások és webszolgáltatások következő generációjának felépítését és futtatását. A .NET-keretrendszer fejlesztése során a következő célokat vettük figyelembe.

· Konzisztens objektum-orientált programozási környezet biztosítása objektumkód helyi tárolására és végrehajtására, az interneten terjesztett kódok helyi végrehajtására vagy távoli végrehajtásra.

Olyan kódvégrehajtási környezet biztosítása, amely minimalizálja a telepítési konfliktusokat szoftverés verzióvezérlés.

Olyan kódvégrehajtási környezet biztosítása, amely garantálja biztonságos végrehajtás kód, beleértve egy ismeretlen vagy nem teljesen megbízható harmadik fél által létrehozott kódot.

· Olyan kódvégrehajtási környezet biztosítása, amely kiküszöböli a parancsfájl-környezetekkel vagy az értelmezett kóddal kapcsolatos teljesítményproblémákat.

A fejlesztők egységes munkaelveinek biztosítása különböző típusok alkalmazások, például Windows alkalmazások és webalkalmazások.

· Ipari szabványnak megfelelő együttműködés fejlesztése, amely integrálja a .NET-keretrendszer kódját bármely más kóddal.

A .NET-keretrendszer két fő összetevője a Common Language Runtime (CLR) és a .NET Framework osztálykönyvtár. A .NET-keretrendszer magja a CLR. A futási környezet olyan ügynöknek tekinthető, amely futási időben kezeli a kódot, és olyan alapvető szolgáltatásokat nyújt, mint a memóriakezelés, a szálkezelés és a távirányítás. Ez szigorú gépelési feltételeket és más típusú kódpontossági ellenőrzéseket ír elő, amelyek garantálják a biztonságot és a megbízhatóságot. Valójában a futási környezet fő feladata a kód kezelése. A futási környezethez hozzáférő kódot felügyelt kódnak, a futási környezetet nem elérő kódot pedig kezeletlen kódnak nevezik. A .NET-keretrendszer másik fő összetevője, az osztálykönyvtár az alkalmazások fejlesztésére használt típusok teljes objektum-orientált gyűjteményét nyújtja, kezdve a szokásostól kezdve parancs sor vagy azzal GUI a felhasználótól az olyan alkalmazásokig, amelyek a legújabb ASP.NET technológiai funkciókat használják, mint például a Web Forms és az XML Web Services.

A .NET-keretrendszert nem menedzselt összetevők üzemeltethetik, amelyek a közös nyelvi futtatókörnyezetet (CLR) töltik be saját folyamataikba, és felügyelt kódot futtatnak, így olyan programozási környezetet hoznak létre, amely lehetővé teszi a felügyelt és a nem felügyelt végrehajtási eszközöket is. A .NET-keretrendszer nemcsak több alapfutási környezetet biztosít, hanem támogatja az alap futási környezetek harmadik fél általi fejlesztését is.


Például az ASP.NET üzemelteti a futási környezetet, hogy méretezhető, kiszolgálóoldali környezetet biztosítson a felügyelt kód számára. Az ASP.NET közvetlenül együttműködik a futási környezettel, hogy engedélyezze az ASP.NET-alkalmazásokat és az XML-webszolgáltatásokat, amelyekről a témakör későbbi részében lesz szó.

internet böngésző egy példa egy nem felügyelt alkalmazásra, amely a futtatókörnyezetet tárolja (MIME típusú kiterjesztés formájában). Az Internet Explorer használata a futási környezet hosztolására lehetővé teszi felügyelt összetevők vagy Windows Forms vezérlők beágyazását HTML dokumentumokba. A futási környezet ilyen módon történő üzemeltetése lehetővé teszi a felügyelt mobil kódot (hasonlóan a Microsoft® ActiveX® vezérlőkhöz), de olyan jelentős fejlesztésekkel, amelyeket csak a felügyelt kód kínálhat, például félig megbízható végrehajtást és elszigetelt fájltárolást.

A következő ábra a közös nyelvi futási környezet és az osztálykönyvtár kapcsolatát mutatja be az alkalmazásokhoz és a teljes rendszerhez. Az ábra azt is bemutatja, hogyan működik a felügyelt kód egy nagyobb architektúrán belül.

NET-keretrendszer kontextusában

A következő szakaszok részletesebben ismertetik a .NET-keretrendszer fő összetevőit és szolgáltatásait.


Például az ASP.NET üzemelteti a futási környezetet, és méretezhető környezetet biztosít a felügyelt kódhoz a szerver oldalon. Az ASP.NET közvetlenül együttműködik a futási környezettel az ASP.NET-alkalmazások és XML-webszolgáltatások futtatásához, amelyeket a témakörben később tárgyalunk.

Az Internet Explorer egy példa egy nem felügyelt alkalmazásra, amely a futtatókörnyezetet tárolja (MIME típusú kiterjesztések formájában). Az Internet Explorer futtatókörnyezetének üzemeltetése lehetővé teszi felügyelt összetevők vagy elemek beágyazását Windows vezérlőkŰrlapok HTML dokumentumokba. A környezet ezen elhelyezése lehetővé teszi a kontrollált végrehajtást mobil kódot(hasonlóan a Microsoft® ActiveX® vezérlőkhöz), de a felügyelt kód jelentős előnyeivel, mint például a részleges megbízható végrehajtás és az elszigetelt fájltárolás.

Az alábbi ábra azt mutatja be, hogy a közös nyelvi futtatókörnyezet (CLR) és az osztálykönyvtár hogyan kapcsolódik a felhasználói alkalmazásokhoz és a teljes rendszerhez. Az ábra azt is mutatja, hogyan működik a felügyelt kód a tágabb architektúrán belül.

NET-keretrendszer kontextusában

A következő szakaszok részletesebben ismertetik a .NET-keretrendszer főbb összetevőit és szolgáltatásait.

Bevezetés

A PLATFORM legalább egy programvégrehajtási környezet és... valami más, ami meghatározza a programkód fejlesztésének és végrehajtásának jellemzőit - programozási paradigmák, programozási nyelvek, alaposztályok halmazai.

A Microsoft.NET (.NET-keretrendszer) egy szoftverplatform. A következő fő összetevőket tartalmazza: a közös nyelvi futtatókörnyezet (CLR) és a .NET Framework osztálykönyvtár (.NET FCL).

CLS (Common Language Specification) - általános specifikáció programozási nyelvek. Ez olyan konstrukciók és megszorítások halmaza, amelyek útmutatást adnak a .NET-keretrendszerben a könyvtár- és fordítóprogram-íróknak. A CLS szerint épített könyvtárak bármely olyan programozási nyelvről használhatók, amely támogatja a CLS-t. A CLS-kompatibilis nyelvek (beleértve a Visual C#, Visual Basic, Visual C++) integrálhatók egymással. A CLS a Microsoft.NET platformon belüli nyelvek közötti együttműködés alapja.

CLR (Common Language Runtime) – Runtime Environment vagy Virtual Machine. Biztosítja az összeszerelés végrehajtását. A .NET-keretrendszer fő összetevője. Alatt Virtuális gép megérteni az absztrakciót egy beágyazott (leválasztott) menedzselt operációs rendszer magas szint, amely biztosítja a programkód végrehajtását és a következő feladatok megoldását foglalja magában:

§ kódkezelés (betöltés és végrehajtás),

§ memóriakezelés objektumok elhelyezésekor,

§ szigetelés alkalmazás memória,

§ kódos biztonsági ellenőrzés,

§ köztes nyelv konvertálása gépi kódra,

§ hozzáférés a metaadatokhoz (bővített típusú információ),

§ kivételkezelés, beleértve a többnyelvű kivételeket is,

§ interakció a felügyelt és a nem felügyelt kód között (beleértve a COM objektumokat is),

§ fejlesztési szolgáltatások támogatása (profilozás, hibakeresés stb.).

Röviden, a CLR egy összeállításhoz szükséges szolgáltatások halmaza. Ebben az esetben egy összeállítás programkódja lehet kezelt (a kód, ha a CLR végrehajtja, különösen aktiválja a memóriakezelő rendszert), vagy nem menedzselt ("régi" programkód).

Maga a CLR két fő összetevőből áll: a magból (mscoree.dll) és az alap osztálykönyvtárból (mscorlib.dll). Ezeknek a fájloknak a lemezen való jelenléte biztos jele annak, hogy a számítógép legalább megpróbálta telepíteni a .NET-keretrendszert.

Az alapvető futási környezet mscoree.dll könyvtárként van megvalósítva. Egy összeállítás csatolásakor speciális információk épülnek be, amelyek egy alkalmazás (EXE) indításakor vagy egy könyvtár betöltésekor (DLL elérése nem menedzselt modulból - a LoadLibrary függvény meghívása egy felügyelt összeállítás betöltéséhez) okoz. a betöltendő és inicializálandó CLR. Miután a CLR betöltődött egy folyamat címterébe, a futásidejű kernel a következőket teszi:

§ megtalálja a gyülekezés helyét,

§ betölti az összeállítást a memóriába,

§ elemzi az összeállítás tartalmát (osztályokat, struktúrákat, interfészeket azonosít),

§ elemzi a metaadatokat,

§ biztosítja a köztes nyelvi (IL) kód platform-specifikus utasításokba történő fordítását (assembler kód),

§-ával kapcsolatos ellenőrzéseket végez Biztonság,

§ az alkalmazás fő szálát használva átadja a vezérlést a processzor utasításokká konvertált assembly kódrészletnek.

Az FCL (.NET Framework Class Library) a Microsoft .NET platformon található osztályok, interfészek és típusrendszerek (értéktípusok) objektumorientált könyvtára, amely megfelel a CLS specifikációnak.

Ez a könyvtár hozzáférést biztosít a funkcionalitás rendszer, és a .NET-alkalmazások, komponensek, vezérlők fejlesztésének alapjául szolgál.

NET, az osztálykönyvtár a CLR második összetevője.

A NET FCL-t MINDEN .NET-alkalmazás használhatja, függetlenül a programozási nyelv fejlesztésének céljától, architektúrájától. Különösen a következőket tartalmazza:

§ beépített (elemi) típusok, osztályokként ábrázolva (.NET platformon minden struktúrákra vagy osztályokra épül),

§ osztályok grafikus felhasználói felület fejlesztéséhez (Windows Form),

§ osztályok webalkalmazások és webszolgáltatások fejlesztéséhez ASP.NET technológián (Web Forms),

§ XML és Internet protokollok fejlesztésére szolgáló osztályok (FTP, HTTP, SMTP, SOAP),

§ osztályok adatbázisokkal működő alkalmazások fejlesztéséhez (ADO.NET),

§ és még sok más.

NET alkalmazás egy olyan alkalmazás, amelyet a Microsoft.NET platformon való futtatásra terveztek. A CLS-nek megfelelő programozási nyelveken van megvalósítva.

Az MSIL (Microsoft Intermediate Language, más néven IL – Intermedia Language) a Microsoft.NET platform köztes nyelve. A .NET-alkalmazások forráskódjai olyan programozási nyelveken íródnak, amelyek megfelelnek a CLS-specifikációnak. A CLS specifikációnak megfelelő programozási nyelvekhez MSIL-re konvertáló építhető. Így ezeken a nyelveken a programokat le lehet fordítani MSIL köztes kódra. A CLS megfelelőség miatt a különböző nyelveken írt programkódok fordítása eredményeként kompatibilis IL kódot kapunk.

Valójában az MSIL egy virtuális processzor-összeszerelő.

METADATA - a programkód MSIL-be konvertálásakor egy METADATA blokk is létrejön, amely információkat tartalmaz a programban használt adatokról. Valójában ezek olyan táblázatok, amelyek a modulban definiált adattípusokról, a modul által hivatkozott adattípusokról tartalmaznak információkat. Korábban ezeket az információkat külön tárolták. Például egy alkalmazás információkat tartalmazhat az interfészdefiníciós nyelvben (IDL) leírt interfészekről. A metaadatok mostantól a felügyelt modul részét képezik.

A metaadatokat konkrétan a következőkre használják:

§ a típusokra vonatkozó információk megőrzése. Fordításkor már nincs szükség fejléc- és könyvtárfájlokra. A fordító minden szükséges információt közvetlenül a felügyelt modulokból olvas be,

§ kódellenőrzés a modul végrehajtása során,

§ kezelése dinamikus memória(memória felszabadítás) a modul végrehajtása során,

§ szabványt használó program fejlesztésekor eszközöket(Microsoft Visual Studio .NET)

§ A metaadatok alapján dinamikus tipp (IntelliSense) biztosított.

Nyelvek, amelyeken az MSIL fordítást megvalósítják:

és még sok más nyelven.

Futtatható – A fordítótól (és a forrásnyelvtől) függetlenül egy .NET-alkalmazás fordításának eredménye egy felügyelt végrehajtható fájl (menedzselt modul). Ez egy szabványos hordozható futtatható (PE - Portable Executable) Windows-fájl.

A kezelt modul elemeit a táblázat mutatja be.

A felügyelt modul felügyelt kódot tartalmaz.

A felügyelt kód olyan kód, amely a CLR-ben fut. A kód a forrásmodulban deklarált struktúrák és osztályok alapján épül fel, amelyek metódusdeklarációkat tartalmaznak. A felügyelt kódnak meg kell felelnie egy bizonyos szintű információnak (metaadatoknak) a futási környezethez. A C#, a Visual Basic és a JScript kódok alapértelmezés szerint kezelve vannak. A Visual C++ kód alapértelmezés szerint nem kezelt, de a fordító képes kezelt kódot előállítani, ha argumentumot ad meg a parancssorban (/CLR). A felügyelt kód egyik jellemzője az olyan mechanizmusok jelenléte, amelyek lehetővé teszik a KEZELTETT ADATOK kezelését.

Felügyelt adatok - olyan objektumok, amelyeket a modulkód végrehajtása során a felügyelt memóriában (a felügyelt kupacban) foglalnak le, és amelyeket a CLR szemétgyűjtő megsemmisít. A C#, a Visual Basic és a JScript .NET adatai alapértelmezés szerint kezelve vannak. A C# adatok nem kezeltként is megjelölhetők.

Az összeállítás a .NET-keretrendszerben található alkalmazások alapvető építőeleme. A felügyelt modulokat összeállításokba egyesítik. Az összeállítás egy vagy több felügyelt modul vagy erőforrásfájl logikai csoportja. Az összeállításokban lévő felügyelt modulok a futási környezetben (CLR) futnak. Az összeállítás lehet végrehajtható alkalmazás (.EXE fájlban található) vagy könyvtármodul (.DLL fájlban található). Ugyanakkor az összeállításnak semmi köze a közönséges (régi stílusú!) futtatható alkalmazásokhoz és könyvtári modulokhoz.

Az összeszerelési nyilatkozat (Manifest) az összeszerelés szerves részét képezi. Egy másik metaadat-táblázat, amely:

§ az összeállítást szöveges névvel, változatával, kultúrájával és digitális aláírásával azonosítja (ha az összeállítás megosztott az alkalmazások között),

§ határozza meg az összetételben szereplő fájlokat (név és hash alapján),

§ meghatározza az összeállításban létező típusokat és erőforrásokat, beleértve az összeállításból exportált típusok és erőforrások leírását is,

§ felsorolja a más szerelvényektől való függőségeket,

§ Meghatározza az összeállítás megfelelő működéséhez szükséges jogokat.

Ezeket az információkat futás közben használjuk fel az alkalmazás megfelelő működéséhez.

A processzor NEM tud IL kódot végrehajtani. Az IL kód fordítását pedig a JIT fordító végzi (éppen időben - in megfelelő pillanat), amelyet a CLR szükség szerint meghív, és a processzor végrehajt. Ebben az esetben a JIT fordító eredményeit a rendszer tárolja véletlen hozzáférésű memória. Megfelelés jön létre a lefordított IL-kód egy töredéke és a megfelelő memóriablokk között, amely később lehetővé teszi a CLR számára, hogy a vezérlést átadja az ebben a memóriablokkban rögzített processzorutasításoknak, megkerülve a JIT-fordító ismételt hívását.

A CLR-ben ez megengedett csapatmunkaés a különböző programozási nyelveken megvalósított szoftverkomponensek interakciója.

A korábban kialakított metaadatblokk alapján a CLR HATÉKONY együttműködést biztosít a futó .NET alkalmazások között.

A CLR esetében minden összeállítás azonos, függetlenül attól, hogy melyik programozási nyelven írták őket. A lényeg az, hogy megfeleljenek a CLS-nek. Valójában a CLR lerombolja a programozási nyelvek határait (nyelvek közötti interoperabilitás). Így a CLS-nek és a CTS-nek köszönhetően a .NET alkalmazások valójában MSIL (IL) alkalmazásoknak bizonyulnak.

A CLR számos olyan problémát megold, amelyek hagyományosan az alkalmazásfejlesztők középpontjában állnak. A CLR által ellátott funkciók a következők:

§ az MSIL kód ellenőrzése és dinamikus (JIT) fordítása processzor utasításokká,

§ memória, folyamat- és szálkezelés,

§ a folyamatok közötti interakció megszervezése,

§ biztonsági problémák megoldása (a rendszerben meglévő biztonságpolitika keretein belül).

Az AppDomain egy logikai összeállítási tároló, amely egy alkalmazás elkülönítésére szolgál a folyamat címterében. Az alkalmazás által létrehozott összes objektum egy adott alkalmazástartományon belül jön létre. Egy operációs rendszer folyamatában több alkalmazástartomány is létezhet. A CLR egy alkalmazástartományon belüli memória kezelésével izolálja az alkalmazásokat.

A CLR-ben (CLR-folyamat) futó kód elkülönül a számítógépen egyidejűleg futó többi folyamattól.

A rendszer egy normál folyamatot indít el egy speciálisan a folyamat számára kijelölt címtartományban. A CLR lehetővé teszi több felügyelt alkalmazás futtatását EGY FOLYAMATBAN. Minden kezelt alkalmazás saját alkalmazástartományhoz van társítva (röviden AppDomain). A fő tartományon kívül több további tartomány is létrehozható az alkalmazásban.

A CLR futási környezet felépítése a képen látható.

Domain tulajdonságai:

§ tartományok el vannak szigetelve egymástól. Az egyik tartományon belül létrehozott objektumok egy másik tartományból nem érhetők el,

§ A CLR képes kirakni a tartományokat az ezekhez a tartományokhoz tartozó összes szerelvénnyel együtt,

§ a domainek további konfigurációja és védelme lehetséges,

§ A tartományok közötti adatcseréhez speciális biztonságos hozzáférési mechanizmust (marshaling) valósítottak meg.

§ A .NET-keretrendszer kifejlesztette saját komponensmodelljét, melynek elemei a .NET-összeállítások (.NET-assembly), a COM / COM + modellel való előre és visszafelé kompatibilitás érdekében pedig a CLR beépített mechanizmusokkal rendelkezik (COM Interop), amelyek hozzáférést biztosítanak a COM objektumokhoz a .NET szabályok szerint és a .NET szerelvényekhez a COM szabályok szerint. Ugyanakkor a .NET alkalmazásokhoz nincs szükség az összetevők regisztrációjára rendszerleíró adatbázis Ablakok.

Egy .NET alkalmazás futtatásához elég elhelyezni a kapcsolódót ez az alkalmazás szerelvények ugyanabban a könyvtárban. Ha az összeállítás több alkalmazásban is használható, akkor a használatával kerül elhelyezésre és regisztrálásra speciális segédprogram a GAC-ban (Global Assembly Cache).

CTS – Közös típusú rendszer Szabványos rendszer típusok. Az összes platformnyelv támogatja. Tekintettel arra, hogy a .NET az OOP gyermeke, itt elemi típusokról, osztályokról, struktúrákról, interfészekről, delegáltokról és felsorolásokról beszélünk.

A Common Type System a futási környezet fontos része, meghatározza a szintaktikai konstrukciók szerkezetét, az ÁLTALÁNOS futási típusok deklarálását, használatát és alkalmazását. A CTS alapvető információkat tartalmaz az ÁLTALÁNOS ELŐRE DEFINÍTOTT típusok rendszeréről, azok használatáról és kezeléséről (értékkonverziós szabályok). A CTS fontos szerepet játszik a többnyelvű felügyelt alkalmazások integrációjában.

A névtér a típusrendszerek rendszerezésének módja egyetlen csoport. Van egy közös nyelvi alap osztálykönyvtár. A névtér koncepciója pedig hatékony rendszerezést és navigációt biztosít ebben a könyvtárban. A programozási nyelvtől függetlenül bizonyos osztályokhoz való hozzáférést közös névtereken belüli csoportosítás biztosítja.

Névtér Célja
Rendszer
System.Data Adatbázisok eléréséhez
System.Data.Common
System.Data.OleDb
System.Data.SqlClient
System.Collections Osztályok konténerobjektumokkal való munkavégzéshez
Rendszer.Diagnosztika Osztályok a kód nyomkövetéséhez és hibakereséséhez
Rendszer.Rajz Grafikai támogatási osztályok
Rendszer.Rajz.Rajz2D
Rendszer.Rajz.Nyomtatás
System.IO I/O támogatás
System.Net Támogatás a hálózaton keresztüli adatátvitelhez
Rendszer.Reflexió Egyéni típusokkal való munkavégzés futás közben
System.Reflection.Emit
System.Runtime.InteropServices Támogatás a „sima kóddal” való interakcióhoz – DLL-ek, COM-kiszolgálók, távoli hozzáférés
System.Runtime.Remoting
Rendszer.Biztonság Kriptográfia, engedélyek
System.Treading Munkafolyamatokkal
System.WEB Munkavégzés webes alkalmazásokkal
System.Windows.Form Windows interfész elemekkel való munka
System.XML XML adattámogatás

Nem felügyelt végrehajtható modulok végrehajtása (normál Windows alkalmazások) közvetlenül elérhető Windows rendszer. A nem felügyelt modulok "egyszerű" folyamatokként futnak a Windows környezetben. Az egyetlen követelmény, amelynek az ilyen moduloknak meg kell felelniük, az az, hogy megfelelően működjenek a Windows környezetben. „Helyesen” kell működniük (ne akasztotta le a rendszert, kerülje a memóriaszivárgást, ne blokkoljon más folyamatokat, és magának az operációs rendszernek az eszközeit helyesen kell használnia a folyamatok nevében történő munkához). Azaz, hogy a leginkább megfeleljen Általános szabályok működik Windows alatt.

Ugyanakkor a nem felügyelt modulok helyes végrehajtásával kapcsolatos problémák (interakciós, memóriafoglalási és -felszabadítási problémák) az alkalmazásfejlesztők problémái. Például a jól ismert COM technológia egy módszer a heterogén komponensek interakciójának megszervezésére egy alkalmazáson belül.

Az objektum tágabb értelemben egy memóriaterület (a veremben vagy kupacban), amelyet a program végrehajtása során foglalnak le bármilyen érték írásához. Típus jellemzi (rögzített tulajdonságkészlet, amely meghatározza az elfoglalt terület méretét, az érték értelmezésének módját, az értéktartományt, az objektum manipulálásakor megengedett műveletek halmazát) a memóriában lévő hely (cím) alapján. ).

A szemétgyűjtés egy olyan mechanizmus, amely lehetővé teszi a CLR számára, hogy meghatározza, ha egy objektum már nem érhető el a program felügyelt memóriájában. A szemétgyűjtés felszabadítja a kezelt memóriát. Az alkalmazásfejlesztő számára a szemétgyűjtő mechanizmus jelenléte azt jelenti, hogy többé nem kell aggódnia a memória felszabadítása miatt. Ehhez azonban szükség lehet a programozási stílus megváltoztatására, mint pl Speciális figyelem rendszererőforrás-felszabadítási eljárásnak kell alávetni. Olyan módszereket kell megvalósítania, amelyek felszabadítják az alkalmazás irányítása alatt álló rendszererőforrásokat.

A verem egy speciálisan szervezett memóriaterület, amely az objektumok (változók és állandók) értékeinek ideiglenes tárolására, a metódusok hívásakor paraméterek átadására, a visszatérési cím tárolására szolgál. A verem kezelése meglehetősen egyszerű a kupachoz képest. A verem tetején lévő megfelelő regiszter értékének változásán alapul. Ha a verem mérete csökken, az objektumok egyszerűen elvesznek.

Program C# nyelven

A program egy jól formált (a C# fordító által nem kifogásolható) utasítássorozat, amelyből összeállítás jön létre.

Általában a programozó létrehoz egy osztálydeklarációkat tartalmazó fájlt, amelyet bemenetként továbbít a fordítónak. A fordítás eredményét a fordító összeállításként ábrázolja, és a programozó preferenciái határozzák meg. Elvileg az összeállítás kétféle lehet:

§ Hordozható végrehajtható fájl (PE fájl .exe kiterjesztéssel), amely alkalmas a CLR közvetlen végrehajtására,

§ Dynamic Link Library File (DLL fájl .dll kiterjesztéssel), erre tervezték újrafelhasználás egy alkalmazás összetevőjeként.

Mindenesetre a bemeneti kód alapján a fordító IL-re épít egy modult, egy manifestet, és összeállítást alkot. A jövőben az összeállítás elvégezhető a JIT összeállítása után, vagy más programok részeként is használható.

Ez az egyik legnépszerűbb, többfunkciós és aktívan fejlődő programozási nyelv Ebben a pillanatban. Ezzel szinte bármilyen szoftvert fejleszthet, az egyszerű nyerési űrlapoktól kezdve alkalmazásokhoz, nagy kliens/szerver webalkalmazásokhoz, vagy akár mobil alkalmazásokés számítógépes játékok.És a .NET-keretrendszer alapján működik. Találjuk ki, mi az.

Nézze meg videómat a .NET-keretrendszerről és a CLR futtatókörnyezetről C#-hoz

C# programozási nyelv viszonylag friss, de már sikerült önbizalmat szereznie. Az első verzió kiadására 2002 februárjában került sor. A nyelv legújabb verziója az írás idején a C# 7.2, amely 2017.08.16-án jelent meg.

A C# nyelv szintaxisa, ahogy a neve is sugallja, a C-szerű nyelvek családjába tartozik, és hasonló a csoport többi népszerű nyelvéhez (C++, Java). Ezért, ha már ismeri valamelyik nyelvet, sokkal könnyebb lesz elsajátítani a C# programozási nyelvet.

Mivel a C# egy objektum-orientált nyelv, támogatja az öröklődést, a polimorfizmust, a beágyazást, az erős változók beírását, az operátor túlterhelését stb. Mindezeket a fogalmakat a következő cikkekben részletesen tárgyaljuk. Az objektum-orientált tervezési paradigma használatának köszönhetően egy programozási nyelv használatával meglehetősen könnyű nagyszabású és egyben rugalmas projekteket fejleszteni. Mindezek mellett a C# nyelv új verziói rendszeresen megjelennek, új funkciókkal bővítve a fejlesztők életét, leegyszerűsítve a fejlesztési sebességet, javítva az alkalmazás teljesítményét és megbízhatóságát.

.NET platformon

.NET Framework egy szoftverplatform a cégtől Microsoft lehetővé teszi a fejlesztést különböző programozási nyelveken, mivel egyetlen közös nyelvű végrehajtási környezetet használnak minden nyelvhez Common Language Runtime (CLR). Így a .NET platform főbb jellemzői a következők:

  • Cross-platform- .NET Framework a legtöbb modern operációs rendszer támogatja Windows, valamint a támogatott alkalmazások létrehozásának lehetősége Linux rendszerekés még mobilalkalmazások is.
  • Többnyelvű- mivel a használt programozási nyelven írt forráskódot köznyelvi Common Intermediate Language (CIL) kódra fordítják, lehetővé válik bármely támogatott programozási nyelven történő fejlesztés, sőt, egy megoldásban különböző programozási nyelvek használata is. A legnépszerűbb támogatott nyelvek a C#, VB.NET, C++, F#.
  • Osztályok és technológiák kiterjedt könyvtára- a szükséges feladatok megoldására hatalmas számú, használatra kész könyvtár áll rendelkezésre. Gyakran egyáltalán nem kell megvalósítani az alkalmazás alacsony szintű logikáját, elég egy kész megoldást használni, amelyet kényelmesen szállítanak a nuget csomagkezelőn keresztül. Ezen túlmenően a .NET platform lehetővé teszi szinte bármilyen típusú szoftver fejlesztését, amire szüksége van.

Felügyelt és nem felügyelt kód. JIT összeállítás

Kezelt kód a közös nyelvi futtatókörnyezet (CLR) által kezelt kód. Ez azt jelenti, hogy a vezérlőkörnyezet bármikor szüneteltetheti az alkalmazás végrehajtását, és a végrehajtása során bármikor konkrét információkat szerezhet be az alkalmazás állapotáról. A használt programozási nyelv forráskódja felügyelt CIL-kódra (más néven magas szintű assemblerre) van lefordítva.

Az osztálykönyvtár vagy alkalmazás létrehozása után a forráskód továbbra is a CIL-ben tárolódik. És amikor az alkalmazás elindul vagy a könyvtárat elérik, a Just-In-Time végrehajtásra kerül ( JIT) egy alkalmazás gépi kódba fordítása, amely az alkalmazás futtatásának környezetére jellemző. Ugyanakkor fontos jellemző, hogy az alkalmazásnak vagy a könyvtárnak csak az elért része kerül lefordításra (na persze a hivatkozások). Ez lehetővé teszi a rendszer teljesítményének növelését és az erőforrások megtakarítását.

Nem kezelt kód- ez az a kód, amelyet közvetlenül lefordítanak gépi futtatható kódra, és közvetlenül az operációs rendszer hajtja végre.

Ezenkívül javaslom a cikk elolvasását. És iratkozzon fel a VKontakte csoportra, a Telegramra és a YouTube csatornára. Van még hasznosabb és érdekesebb a programozók számára.

C#
  • Common Language Runtime) és egy osztálykönyvtár...
  • A .NET-keretrendszer és a CTS-specifikáció
    A C# nyelv és annak támogatása jelenleg a Microsoft által fejlesztett .NET-keretrendszerhez kapcsolódik. A megnevezett platform (lásd) a következőket tartalmazza: közös nyelvi futtatókörnyezet (CLR - Common Language Runtime Framework Class Library). Meg kell jegyezni...
    (PROGRAMOZÁS. ALAP C#)
  • A .NET Framework és a Visual Studio telepítése
    A Windows 7 és 8 környezetben a .NET platform már telepítve van, és semmit sem kell telepíteni. A .NET platformon történő alkalmazások fejlesztéséhez telepítenie kell a Visual fejlesztőrendszert C# 2012-es (vagy 2013-as) Express Edition - ingyenes verzió Visual Studio fejlesztői környezet (rövidítve, de majdnem...
    (Objektumorientált programozás)
  • C# TÍPUSOK ÉS .NET FRAMEWORK PLATFORM TÍPUSOK
    A C# nyelv és annak támogatása jelenleg a Microsoft által fejlesztett .NET-keretrendszerhez kapcsolódik. A megnevezett platform (lásd) a következőket tartalmazza: közös nyelvi futtatókörnyezet (CLR - Common Language Runtime) és egy osztálykönyvtár...
    (PROGRAMOZÁS. ALAP C#)
  • A .NET-keretrendszer és a CTS-specifikáció
    A C# nyelv és annak támogatása jelenleg a Microsoft által fejlesztett .NET-keretrendszerhez kapcsolódik. A megnevezett platform (lásd) a következőket tartalmazza: közös nyelvi futtatókörnyezet (CLR - Common Language Runtime) és egy osztálykönyvtár (FCL - Framework Class Library). Meg kell jegyezni...
    (PROGRAMOZÁS. ALAP C#)
  • Megjegyzés: Microsoft .NET kezdeményezés. Az alkatrészek kompatibilitásával, megbízhatóságával és újrafelhasználásával kapcsolatos problémák. .NET Framework. Common Language Runtime (CLR). Álgépi nyelv CIL (managed assembler). JIT fordító. Programozási nyelvek. Szerelvények. metaadatokat. Szemetes. .NET Framework osztálykönyvtár

    A modern információs rendszerek fejlesztésének problémái

    Integrációs kérdések

    • Különböző nyelveken írt modulok, különböző API-k (vagy API-verziók) vagy különböző adatmegjelenítési formátumok használatával;
    • Különféle platformokra kifejlesztett programok egyetlen szoftvercsomagon belül;
    • Különböző szoftvermodelleket használó rendszerek.

    Különösen gyakran vannak integrációs problémák a legacy kóddal ( legacy ). Az integrációs problémák megoldása során inkompatibilitási problémák merülnek fel.

    Hordozhatósági problémák

    Egyre gyakrabban szükséges, hogy a programok több platformot is támogassanak (például egy programmal való munkavégzés képessége Windows platformés MacOS).

    Verziós problémák

    A Windows fejlesztői tisztában vannak a DLL pokolként ismert verzió-kompatibilitási problémával. Ez a „pokol” akkor fordul elő, amikor egy új alkalmazáshoz telepített összetevők egy régi alkalmazás összetevőit cserélik le. Ennek eredményeként a régi alkalmazás hibásan kezd működni, vagy leáll.

    Erőforrás menedzsment

    A programozás egyik problémája az erőforrások, fájlok, memória, képernyőterület kezelése és helyes felszabadítása, hálózati kapcsolatok, adatbázis-erőforrások stb. Ezeknek az erőforrásoknak a helytelen kezelése a program hibás végrehajtásához vezethet.

    Típusbiztonság

    A típusbiztonság említése az adattípusok helytelen kezelését jelenti: a típushatáron kívüli memóriaterületek elérésére tett kísérlet, a típusban nem szereplő metódusok meghívása, vagy olyan metódus megkísérlése, amely az A típust veszi paraméterként, és adja át B típusú paraméterobjektumként.

    Hibakezelés

    A Win32 API-t használó Windows-alkalmazások fejlesztésekor egyes funkciók kivételeket, mások állapotkódokat, mások pedig HRESULT-ot adnak vissza. Így nincs egységes mechanizmus a hibák kezelésére, és néhány kivétel figyelmen kívül hagyható, ami a kódot nem biztonságossá teszi.

    Ezek és más tervezési problémák információs rendszerek segít megoldani a Microsoft .NET platformot.

    Információs rendszerek fejlesztési problémáinak megoldása .NET-ben

    A heterogenitási probléma megoldásának egyik módja a szabványos programozási interfészek fejlesztése és karbantartása, amelyek megkönnyítik az alkalmazások portolását különböző platformok szervereire. Az alkalmazások azonban használhatnak adatbázisokat, kommunikációt és egyéb szolgáltatásokat, amelyek interfészei nem részei egy programozási nyelvnek vagy környezetnek. A gyártók által a heterogenitás problémájának megoldására alkalmazott másik módszer a szabványos protokollok támogatása. Az ugyanazt a protokollt támogató rendszerek képesek kommunikálni egymással, még akkor is, ha eltérő géparchitektúrára és operációs rendszerre támaszkodnak.

    Technológia. A NET olyan szoftverek fejlesztésének és üzembe helyezésének módja, amelyek széles körben használt szabványok, például HTTP és XML használatával lehetővé teszik a programokkal való interakciót, és hozzáférést biztosítanak számos szoftverszolgáltatáshoz az interneten keresztül. A technológia magában foglalja. NET Framework – olyan platform alkalmazások fejlesztésére és futtatására, amely leegyszerűsíti és felgyorsítja a fejlesztést, támogatja a teljes értékű objektum-orientált programozás a weben, kiküszöböli a leggyakoribbak számos típusát szoftveres hibák, közös API-t biztosít minden nyelvhez.

    Miből áll a Microsoft .NET

    A NET-keretrendszer egy alkalmazásfejlesztő keretrendszer. Fő összetevői a Common Language Runtime és az osztálykönyvtár. NET Framework osztálykönyvtár.

    Common Language Runtime

    A Common Language Runtime (CLR) egy közös nyelvi futtatókörnyezet, amely az operációs rendszer szolgáltatásait absztrahálja és felügyelt alkalmazásokat hajt végre, amelyek bármely műveletét a CLR-nek engedélyeznie kell.

    A .NET platform összes kódját a CLR konvertálja CIL közbenső kóddá. Ezért a fejlesztők könnyen integrálhatják a .NET-hez írt kódokat különböző programozási nyelveken. Bármi, ami egy .NET-kompatibilis nyelven elvégezhető (ritka kivételektől eltekintve), bármely másik nyelven is elvégezhető. Ezeken a nyelveken a kód egy nyelvű kódba van fordítva - CIL.

    A CLR az operációs rendszer tetején található, és virtuális környezetet biztosít a felügyelt alkalmazások számára. A .NET platform kódját vagy a CLR hajtja végre, vagy azon kívül is végrehajtható.

    A CLR kódja a Common Intermediate Language (CIL) pszeudogépi nyelvi parancsok. Ezeket az utasításokat a rendszer a megfelelő processzortípus gépi kódjára fordítja igény szerint (just-in-time) futás közben. Egy metódust általában egyszer fordítják le az első hívás során. Az eredmény ezután gyorsítótárba kerül a memóriában, hogy elkerülje az ismételt hívások késését. A JIT fordító kifejezetten arra a processzorra hajt végre kódoptimalizálást, amelyen a kód fut.

    A CIL utasítások processzor utasításokká konvertálásával a JIT fordító kódellenőrzést végez a típusbiztonság érdekében.

    Szinte lehetetlen végrehajtani egy olyan parancsot, amely olyan memóriaterülethez fér hozzá, amelyhez a parancsnak nincs engedélye. Egy felügyelt alkalmazásban megszűnik a hibásan inicializált mutatók problémája, tilos egy típust olyanra konvertálni, ami nem az, mivel ez sérti a típusbiztonságot. A CLR nem engedélyezi a metódusok meghívását törött veremkerettel.

    A felügyelt kód által lefoglalt erőforrásokat a szemétgyűjtő szabadítja fel. Más szóval, a programozó csak lefoglalja a memóriát, de nem oldja fel – ezt a CLR végzi. A szemétgyűjtő nyomon követi az összes tárgyra való hivatkozást, a program által generált, és megsemmisíti ezeket az objektumokat, ha az általuk elfoglalt memóriára máshol van szükség. Ez megoldja a memóriaszivárgás problémáját a felügyelt kódalkalmazásokban.

    A kódellenőrzés is az alapja annak, hogy a CLR képes több alkalmazást futtatni egyetlen folyamaton belül. A folyamat virtuális részekre van osztva - alkalmazási tartományokra (alkalmazási tartomány). Ez javítja a folyamatokhoz lefoglalt memória használatának hatékonyságát. Az alkalmazástartományok ugyanolyan biztonságosak, mint a folyamatok, mert határaikat a felügyelt alkalmazások nem sérthetik meg.

    .NET Framework Class könyvtár (FCL)

    A .NET osztálykönyvtár-összeállításokat tartalmaz. NET-keretrendszer osztályú könyvtár (FCL), amely több ezer típushoz tartalmaz definíciókat, amelyek mindegyike biztosít bizonyos funkciókat. A „kapcsolódó” típusok készletei külön névterekben vannak gyűjtve. Így a System névtér tartalmazza az Object alaposztályt, amelyből végül az összes többi típus származik.

    Így minden entitás A NET egy objektum saját mezőivel és metódusaival.

    Ezenkívül a System tartalmaz típusokat egész számokhoz, karakterekhez, karakterláncokhoz, kivételkezeléshez, konzol I/O-hoz, típuscsoporthoz az egyik típusból a másikba való biztonságos konvertáláshoz, adatformázáshoz, véletlenszám generálásés a megvalósítás matematikai műveletek. A Rendszer névtérben található típusokat minden alkalmazás használja.

    Egy meglévő FCL-típus módosításához létrehozhat saját származtatott típust. Létrehozhat saját névtereket. Mindez egyértelműen megfelel a platform által javasolt elveknek. HÁLÓ

    Íme néhány gyakoribb névter és Rövid leírás az ott található típusokat.

    Alapvető FCL névterek
    Névtér Tartalom
    Rendszer Alapvető adattípusok és segédosztályok
    System.Collections Kivonattáblák, változótömbök és egyéb tárolók
    System.Data ADO .NET osztályok az adathozzáféréshez
    Rendszer.Rajz Grafikus kimenet osztályai (GDI+)
    System.IO I/O osztályokat fájl és adatfolyam
    System.Net Osztályok a munkához hálózati protokollok, például HTTP-vel
    Rendszer.Reflexió Osztályok a metaadatok olvasásához és írásához
    System.Runtime.Remoting Osztályok elosztott alkalmazásokhoz
    System.ServiceProcess Osztályok Windows szolgáltatások létrehozásához
    System.Treading Osztályok szálak létrehozásához és kezeléséhez
    System.Web Osztályok a HTTP támogatáshoz
    System.Web.Services Webszolgáltatások fejlesztésére szolgáló órák
    System.Web.Services. Osztályok webszolgáltatási kliensek fejlesztéséhez Protokollok
    System.Web.UI Az ASP .NET által használt alapvető osztályok
    System.Web.UI. webvezérlők ASP .NET Server Controls
    System.Wndows.Forms Osztályok GUI alkalmazásokhoz
    System.Xml Osztályok XML adatok olvasásához és beviteléhez

    Minden felügyelt alkalmazás használja