Rularea aplicațiilor pe platforma Microsoft net. Conceptul de mediu. Factorii de mediu și clasificarea lor. Care sunt principalele componente ale .NET Framework

.NET Framework este una dintre componentele sistemului Windows. Vă permite să creați și să utilizați aplicații de ultimă generație. Scopul platformei .Cadru net :

  • crearea unui holistic mediu de programare orientat pe obiecte permițând diverse opțiuni de implementare: codul poate fi stocat și executat local; să fie executat local și distribuit pe internet; sau efectuate de la distanță;
  • oferind un mediu de execuție a codului în care numărul de conflicte de implementare software iar controlul versiunilor va fi menținut la minimum;
  • asigurarea securității executării codului în mediu - inclusiv codul creat de un dezvoltator necunoscut sau parțial de încredere;
  • furnizarea unui mediu de rulare a codului pentru a aborda problemele de performanță în medii bazate pe scripturi sau interpretare;
  • unificarea muncii dezvoltatorilor în aplicații complet diferite: atât în ​​aplicații Windows, cât și în aplicații web;
  • utilizarea standardelor industriale în toate domeniile schimbului de date și, ca urmare, asigurarea compatibilității codului creat în .NET Framework cu alte programe.

NET Framework servește ca mediu pentru susținerea, dezvoltarea și rularea aplicațiilor distribuite care se bazează pe componente (controale).

Aplicațiile (programele) pot fi dezvoltate în diferite limbaje de programare care suportă această tehnologie.

NET Framework oferă:

  • utilizarea în comun a diferitelor limbaje de programare;
  • securitatea și portabilitatea programelor;
  • model de programare generală bazat pe platforma Windows.

2. Care sunt principalele componente ale .NET Framework?

Din punct de vedere al programării, .NET Framework constă din două componente principale:

  • mediu de execuție a limbajului comun CLR (Common Language Runtime);
  • biblioteca clasei de bază.

Common Language Runtime (CLR) rezolvă problemele descoperirii automate a tipurilor .NET, încărcării acestor tipuri și gestionării lor. CLR se ocupă de gestionarea memoriei, întreținerea aplicațiilor, procesarea firelor și implementează numeroase verificări legate de securitate.

Biblioteca claselor de bază include definirea diferitelor primitive, care pot fi: fluxuri, API-uri grafice, implementări de baze de date, I/O fișier etc.

3. Care este principiul de funcționare al Common Language Runtime (CLR)?

Common Language Runtime (CLR) gestionează execuția codului .NET.

După compilarea unui program în C# (sau alt limbaj), este creat un fișier care conține un tip special de pseudocod sau bytecode (și nu un fișier executabil, așa cum era înainte). Acest pseudocod se numește (MSIL) sau Common Intermediate Language (CIL). Acest pseudocod este Microsoft Intermediate Language.

Scopul principal al CLR este de a transforma codul MSIL intermediar în cod executabil în timpul execuției programului.

Orice program care este compilat în pseudocod MSIL poate fi executat în orice mediu care conține o implementare a CLR. Acest lucru permite ca programele să fie portabile în cadrul .NET Framework.

Orez. 1. Procesul de conversie a codului sursă în cod MSIL (CIL sau IL) și crearea unui fișier de asamblare (*.dll sau *.exe)

După aceasta, pseudocodul se transformă în cod executabil. Acest lucru este realizat de compilatorul JIT. Compilarea JIT (just-in-time) este o compilație din mers.

CLR este responsabil pentru determinarea locului în care să plaseze ansamblul.

Tipul solicitat care este plasat în ansamblu (cum ar fi o clasă ArrayList sau alt tip) este determinat în fișierul binar (*.dll sau *.exe) prin citirea metadatelor fișierului.

CLR plasează apoi tipul citit din ansamblu în memorie.

CLR transformă apoi codul CIL în instrucțiuni adecvate care sunt adaptate platformei specifice (în funcție de computer, sistem de operare etc.). În plus, în această etapă au loc verificările de siguranță necesare.

Ultimul lucru de făcut este să executați solicitarea codul programului.

4. Ce este limbajul intermediar MSIL ( Limbaj intermediar Microsoft) sau CIL (Common Intermediate Language)?

La început, a fost numit limbajul pseudocod intermediar Limbaj intermediar Microsoft(MSIL). Mai târziu (în cele mai recente versiuni de .NET) acest nume a fost schimbat în Common Intermediate Language (CIL - Common Intermediate Language). Abrevierile MSIL, CIL și IL (Intermediate Language) înseamnă același lucru.

Limbajul intermediar CIL (sau MSIL) se formează după compilarea unui program într-un limbaj de programare care acceptă .NET Framework.

MSIL este pseudocod. MSIL definește un set de instrucțiuni care:

  • poate fi transferat pe diferite platforme;
  • nu depind de un anumit procesor.

De fapt, MSIL este limbaj de asamblare portabil

5. Ce este un ansamblu din punctul de vedere al tehnologiei .NET?

Ansamblurile sunt fișiere cu extensii *.dll sau *.exe care conțin instrucțiuni Intermediate Language (IL) independente de platformă .NET, precum și metadate de tip.

Ansamblul este creat folosind compilatorul .NET. Un ansamblu este un obiect binar mare.

Ansamblul este conceput pentru a păstra spațiile de nume. Spațiile de nume conțin tipuri. Tipurile pot fi clase, delegați, interfețe, enumerații, structuri.

Un ansamblu poate conține orice număr de spații de nume. Orice spațiu de nume poate conține orice număr de tipuri (clase, interfețe, structuri, enumerări, delegați).

6. Ce este inclus în ansambluri?

Ansamblurile conțin cod CIL (cod MSIL sau cod IL) și metadate.

Codul CIL este compilat pentru o anumită platformă numai dacă este accesat din mediul de rulare .NET.

Metadatele descriu în detaliu caracteristicile fiecărui tip care există într-o anumită unitate binară .NET.

De exemplu, la crearea unei aplicații tip Windows Aplicația Forms în C# creează un fișier Assembly.info. Acest fișier se află în subdosarul Proprietăți în raport cu folderul principal al programului. Acest fișier oferă informații generale despre ansamblu.

7. Ce este un manifest?

Manifest este o descriere a ansamblului în sine folosind metadate.

Manifestul conține următoarele informații:

  • despre versiunea actuală a ansamblului;
  • informații despre cultură (localizarea resurselor de linie și grafice);
  • lista de link-uri catre tot ansambluri externe care sunt necesare pentru buna functionare.

8. Diagrama interacțiunii dintre codul sursă, compilatorul .NET și motorul de rulare .NET.

Programatorul creează sursă aplicații într-un limbaj care acceptă tehnologia .NET (C#, C++/CLI, Visual Basic .NET etc.). Aplicația este creată într-un mediu de programare, cum ar fi Microsoft Visual Studio. Compilatorul generează un ansamblu - un fișier care conține instrucțiuni CIL, metadate și un manifest.

După rularea acestei aplicații pe un anumit computer (o anumită platformă), se lansează motorul de rulare .NET. În primul rând, una dintre versiunile (cel puțin) ale .NET Framework trebuie să fie instalată pe computer.

Dacă codul sursă utilizează biblioteci de clasă de bază (de exemplu, din ansamblul mscorlib.dll), atunci acestea sunt încărcate folosind încărcătorul de clasă.

Compilatorul JIT compilează ansamblul luând în considerare (legătura) caracteristicile hardware și software ale computerului pe care rulează aplicația.

După aceasta, aplicația rulează.

Figura 2. Relația dintre codul sursă, compilator și motorul de rulare .NET

9. Ce tipuri de ansambluri există?

Există două tipuri de ansambluri:

  • ansambluri unice;
  • ansambluri cu mai multe fișiere.

Un ansamblu care constă dintr-un singur modul (*.dll sau *.exe) se numește un singur fișier. Ansamblurile cu un singur fișier plasează toate instrucțiunile, metadatele și manifestele CIL necesare într-un singur pachet bine definit.

Un ansamblu format din multe fișiere cod binar.NET se numește multi-fișier. Fiecare dintre aceste fișiere se numește modul.

Într-un ansamblu cu mai multe fișiere, unul dintre module este cel principal (primar).

10. Ce fișier conține ansamblul principal al bibliotecii MS Visual Studio?

Ansamblul principal este localizat în fișierul „mscorlib.dll”.

11. Ce este sistem general tipuri de CTS?

CTS (Common Type System) - un sistem de tip care conține o descriere completă a tuturor tipurilor de date posibile și a constructelor de program care sunt acceptate de CLR de runtime de limbaj comun. De asemenea, descrie modul în care aceste entități pot interacționa între ele.

Tipurile pot fi clase, interfețe, structuri, enumerații, delegați.

12. Care este scopul specificației pentru limbaj comun CLS?

După cum știți, nu toate limbajele de programare care sunt compatibile cu .NET pot suporta funcționalitatea sistemului de tip CTS. În acest scop, este utilizată specificația de limbaj comun CLS (Common Language Specification).

Scopul CLS este de a descrie doar acel subset de tipuri comune și constructe de programare care sunt acceptate de absolut toate limbajele de programare care acceptă .NET.

13. Ce limbaje de programare acceptă tehnologia .NET?

În sistemul de dezvoltare a aplicațiilor MS Visual Studio, tehnologia .NET este suportată de următoarele limbaje de programare: C#, Visual Basic .NET, C++/CLI, JScript .NET, F#, J#.

Pentru a putea utiliza tehnologia .NET, trebuie să instalați software-ul pe computer Kit de dezvoltare software Microsoft .NET Framework(SDK) sau Microsoft Visual Studio de orice versiune.

14. Ce este un namespace?

Un spațiu de nume este destinat să unească un grup de tipuri care sunt legate între ele din punct de vedere semantic. Tipurile sunt plasate în ansambluri (asamblare). Tipurile înseamnă clase, delegați, interfețe, structuri și enumerări.

Exemple de nume de spații de nume:

Sistem Sistem.Date Sistem.IO Sistem.Colecţii Sistem.Threading.Sarcini

De exemplu, spațiul de nume System.Data conține tipurile principale pentru lucrul cu baze de date, iar spațiul de nume System.Collections conține tipurile principale pentru lucrul cu colecții.

15. Cum să afișați conținutul ansamblurilor, al spațiilor de nume și al tipurilor în MS Visual Studio?

Sistemul Microsoft Visual Studio are un utilitar Object Browser, care este apelat din meniul View (Figura 3).

Orez. 3. Apelarea utilitarului Object Browser

Aceasta va deschide fereastra Object Browser, care va afișa ansamblurile care sunt utilizate într-o anumită tehnologie.

Figura 4 prezintă o listă de ansambluri care sunt afișate în tehnologia „.NET Framework 4”. Este evidențiat un ansamblu numit „mscorlib”.

Orez. 4. Fereastra Object Browser cu ansamblul mscorlib.dll evidențiat

Dacă extindeți conținutul ansamblului mscorlib („ + "), atunci va fi afișată o listă cu toate spațiile de nume pentru acest ansamblu (Figura 5). După cum puteți vedea din figură, ansamblul include spațiile de nume Microsoft.Win32, System, System.Collections, System.Collections.Concurrent și multe altele.

Orez. 5. Ansamblul mscorlib și lista de spații de nume care sunt incluse în el

Oricare dintre spațiile de nume este extinsă în același mod. Spațiile de nume descriu tipuri. Tipurile descriu metode, proprietăți, constante etc.

Figura 6 arată clasa BinaryReader din spațiul de nume System.IO. Aparent, clasa implementează metode numite BinaryReader(), Close(), Dispose(), FillBuffer() și altele.

Orez. 6. Conținutul clasei BinaryReader

16. Cum se conectează un spațiu de nume într-un program C#?

Pentru a conecta se folosește spațiul de nume cuvânt cheie folosind

O zi buna. Alexey Gulynin este în legătură. În ultimul articol, am aflat despre modalități de a transmite argumente unei metode în C#. În acest articol aș vrea să vă spun din nou (mai multe în cuvinte simple), care este .Cadru netși Visual Studio. Acest articol este o continuare a descrierii Visual Studio și a articolelor .Net Framework .Cadru net este un mediu CLR (Common Language Runtime). componentă de bază a .Net Framework), care asigură executarea codului gestionat. CLR gestionează acest cod. Ce este codul gestionat? Codul scris pentru .NET Framework nu este compilat în codul mașinii final, ci într-un limbaj intermediar (așa-numitul IL - Intermediate Language). Apoi acest ansamblu este transmis utilizatorului (mașina trebuie să aibă instalat .Net Framework), încărcat în memorie și transpus comenzile IL în acțiuni care trebuie efectuate.

Ce rost are limbajul intermediar IL?

În primul rând, este independent de platformă, nu este legat de un anumit procesor.

În al doilea rând, prezența sa permite CLR să controleze funcționarea programului dvs., adică. nu-i permiteți să facă lucruri inacceptabile (de exemplu, manipularea memoriei).

A doua componentă importantă după ce CLR este Biblioteca de clasă. .NET Framework include un numar mare de clase, împărțite în spații de nume, care oferă toate funcționalitățile de bază. Aceasta este funcționalitatea pe care programul dumneavoastră o poate necesita, de exemplu, lucrul cu fișiere, rețea, procese și subsistemul grafic.

A treia componentă sunt cadre de dezvoltare (cu alte cuvinte, biblioteci de dezvoltare). Aceasta include biblioteci precum WPF (Windows Presentation Foundation), ASP.NET, Entity Framework, WCF (Windows Communication Foundation), Magazin Windows etc. De fapt, acestea sunt și clase. Diferența este că aceste clase sunt concepute pentru a rezolva probleme specifice:

  • WPF - pentru lucrul cu aplicații grafice
  • ASP.NET - pentru lucrul cu aplicații web
  • WCF - pentru lucrul cu rețeaua și crearea de aplicații distribuite (client-server).
  • Entity Framework - pentru lucrul cu baza de date.

La momentul scrierii acestui articol ultima versiune este .Net Framework 4.6

Principalul mediu de dezvoltare recomandat de Microsoft este Visual Studio. Microsoft are de obicei această situație: cum iese? o noua versiune.NET Framework, apoi după un timp apare o nouă versiune de Visual Studio. Ce este inclus în Visual Studio (de bază):

  1. Editor de text cu evidențierea codului de sintaxă
  2. Sistemul de ajutor IntelliSence (poate fi apelat automat sau prin comanda rapidă de la tastatură Ctrl + Spațiu (bara de spațiu)
  3. Compilatoare din diferite limbi
  4. Dezvoltare rapidă a aplicațiilor (RAD)
  5. Designer vizual de interfețe, diagrame
  6. Componentă pentru lucrul cu servere și baze de date
  7. Server web IIS și opțiune Express server SQL
  8. Depanare, profilere, componente care vă permit să gestionați erorile
  9. Sistemul de ajutor MSDN

În momentul scrierii acestui articol, cea mai recentă versiune este Visual Studio 2015.

Cum funcționează conceptul de programe în Visual Studio. În studio există conceptul de „Proiect” și „Soluție”. Un proiect este o unitate de compilare. Este format dintr-un set de fișiere. Întregul proiect este de obicei compilat într-un ansamblu (fișier exe sau fișier dll). Proiectele pot fi grupate în Soluție. O soluție este pur și simplu o colecție de proiecte care pot fi sau nu legate între ele (de obicei sunt).

Introducere

O PLATFORMĂ este cel puțin un mediu de execuție a unui program și... altceva care determină caracteristicile dezvoltării și execuției codului de program - paradigme de programare, limbaje de programare, multe clase de bază.

Microsoft.NET (.NET Framework) – platforma software. Conține următoarele componente principale: common language runtime (CLR) și biblioteca de clase .NET Framework (.NET FCL).

CLS (Common Language Specification) este o specificație generală pentru limbaje de programare. Este un set de constructe și constrângeri care oferă îndrumări creatorilor de biblioteci și compilatoare în .NET Framework. Bibliotecile construite conform CLS pot fi folosite din orice limbaj de programare care acceptă CLS. Limbi compatibile cu CLS (inclusiv Limbaje vizuale C#, Visual Basic, Visual C++) pot fi integrate între ele. CLS este baza pentru comunicarea interlingvistică în cadrul platformei Microsoft.NET.

CLR (Common Language Runtime) – Mediu de rulare sau mașină virtuală. Se asigură că construcția este finalizată. Componenta de bază a .NET Framework. Sub Mașină virtualăînțelegeți abstractizarea unui sistem de operare gestionat încapsulat (autonom). nivel inalt, care asigură execuția codului programului și presupune rezolvarea următoarelor sarcini:

§ managementul codului (incarcare si executie),

§ gestionarea memoriei la plasarea obiectelor,

§ izolare memoria aplicatiei,

§ verificare de securitate a codului,

§ conversia limbajului intermediar în cod mașină,

§ acces la metadate (informații extinse despre tipuri),

§ gestionarea excepțiilor, inclusiv excepțiile în mai multe limbi,

§ interacțiunea dintre codul gestionat și cel negestionat (inclusiv obiectele COM),

§ suport pentru servicii de dezvoltare (profilare, depanare etc.).

Pe scurt, CLR este un set de servicii necesare pentru a realiza o construcție. În acest caz, codul programului de asamblare poate fi fie administrat (cod, atunci când este executat, CLR, în special, activează sistemul de gestionare a memoriei), fie neadministrat (cod de program „vechi”).

CLR-ul în sine constă din două componente principale: nucleul (mscoree.dll) și biblioteca clasei de bază (mscorlib.dll). Prezența acestor fișiere pe disc este un semn sigur că s-a încercat cel puțin instalarea platformei .NET pe computer.

Nucleul runtime este implementat ca bibliotecă mscoree.dll. Când compuneți un ansamblu, acesta este încorporat în acesta informatii speciale, care la rularea unei aplicații (EXE) sau la încărcarea unei biblioteci (apelarea unui DLL dintr-un modul negestionat - apelarea funcției LoadLibrary pentru a încărca un ansamblu gestionat) face ca CLR să fie încărcat și inițializat. După ce CLR este încărcat în spațiul de adrese al procesului, se execută nucleul de rulare următoarele acțiuni:

§ găsește locul de asamblare,

§ încarcă ansamblul în memorie,

§ analizează conținutul ansamblului (identifică clase, structuri, interfețe),

§ analizează metadatele,

§ oferă compilarea codului limbajului intermediar (IL) în instrucțiuni dependente de platformă (cod de asamblare),

§ Efectuează verificări legate de asigurarea securitatii,

§ folosind firul principal al aplicației, transferă controlul către un fragment de cod de asamblare convertit în comenzi de procesor.

FCL (.NET Framework Class Library) este o bibliotecă orientată pe obiecte compatibilă cu CLS de clase, interfețe și sisteme de tip (tipuri de valori) care sunt incluse în platforma Microsoft .NET.

Această bibliotecă oferă acces la funcţionalitate sistem și este destinat ca bază pentru dezvoltarea aplicațiilor, componentelor, controalelor .NET.

Biblioteca de clase NET este a doua componentă a CLR.

NET FCL poate fi utilizat de TOATE aplicațiile .NET, indiferent de scop, arhitectură folosită pentru dezvoltarea limbajului de programare. În special, conține:

§ tipuri încorporate (elementare), prezentate ca clase (pe platforma .NET totul este construit pe structuri sau clase),

§ clase pentru dezvoltarea unei interfețe grafice cu utilizatorul (Windows Form),

§ cursuri pentru dezvoltarea de aplicatii Web si servicii Web bazate pe tehnologia ASP.NET (Web Forms),

§ clase pentru dezvoltarea protocoalelor XML și Internet (FTP, HTTP, SMTP, SOAP),

§ clase pentru dezvoltarea aplicatiilor care functioneaza cu baze de date (ADO.NET),

§ și mult mai mult.

Aplicația NET este o aplicație concepută pentru a rula pe platforma Microsoft.NET. Implementat în limbaje de programare care respectă CLS.

MSIL (Microsoft Intermediate Language, cunoscut și sub numele de IL - Intermedia Language) este un limbaj intermediar al platformei Microsoft.NET. Codul sursă pentru aplicațiile .NET este scris în limbaje de programare care respectă specificația CLS. Pentru limbajele de programare care respectă specificația CLS, se poate construi un convertor la MSIL. Astfel, programele în aceste limbi pot fi traduse în cod intermediar în MSIL. Datorită conformității CLS, traducerea codului de program scris în diferite limbi are ca rezultat un cod IL compatibil.

De fapt, MSIL este un asamblator de procesor virtual.

METADATE - la conversia codului programului în MSIL se generează și un bloc METADATE, care conține informații despre datele folosite în program. De fapt, acestea sunt seturi de tabele care conțin informații despre tipurile de date definite în modul, despre tipurile de date la care face referire acest modul. Anterior, astfel de informații erau stocate separat. De exemplu, o aplicație poate include informații despre interfețe descrise în limbajul de definire a interfeței (IDL). Metadatele fac acum parte din modulul gestionat.

Mai exact, metadatele sunt folosite pentru:

§ salvarea informațiilor despre tipuri. La compilare, antetul și fișierele de bibliotecă nu mai sunt necesare. Compilatorul citește toate informațiile necesare direct din modulele gestionate,

§ verificarea codului in timpul executiei modulului,

§ management memorie dinamică(eliberarea memoriei) în timpul execuției modulului,

§ la dezvoltarea unui program folosind instrumente standard (Microsoft Visual Studio.NET)

§ Sugestie dinamică (IntelliSense) este furnizată pe baza metadatelor.

Limbi pentru care a fost implementată traducerea în MSIL:

și multe alte limbi.

Executabil - Indiferent de compilator (și limbajul de intrare), rezultatul traducerii unei aplicații .NET este un executabil gestionat (modul gestionat). Acesta este un fișier executabil portabil standard de Windows (PE - Portable Executable).

Elementele modulului gestionat sunt prezentate în tabel.

Un modul gestionat conține cod gestionat.

Codul gestionat este un cod care rulează în CLR. Codul este construit pe baza structurilor și claselor declarate în modulul sursă care conțin declarații de metodă. Codul gestionat trebuie să aibă un anumit nivel de informații (metadate) pentru mediul de rulare. Codul C#, Visual Basic și JScript este gestionat implicit. Codul Visual C++ nu este gestionat implicit, dar compilatorul poate produce cod gestionat specificând un argument de linie de comandă (/CLR). Una dintre caracteristicile codului gestionat este prezența mecanismelor care vă permit să lucrați cu DATE GESTIONATE.

Datele gestionate sunt obiecte care, în timpul execuției codului modulului, sunt plasate în memoria gestionată (pe heap-ul administrat) și distruse de colectorul de gunoi CLR. Datele C#, Visual Basic și JScript .NET sunt gestionate implicit. Datele C# pot fi, de asemenea, marcate ca negestionate.

Asamblarea este elementul de bază al unei aplicații în .NET Framework. Modulele gestionate sunt combinate în ansambluri. Un ansamblu este o grupare logică a unuia sau mai multor module gestionate sau fișiere de resurse. Modulele gestionate din ansambluri sunt executate în Runtime Environment (CLR). Un ansamblu poate fi fie o aplicație executabilă (într-un fișier cu extensia .EXE) fie un modul de bibliotecă (într-un fișier cu extensia .DLL). În același timp, ansamblul nu are nimic în comun cu aplicațiile executabile obișnuite (în stil vechi!) și cu modulele de bibliotecă.

Declarație de adunare (Manifest) - componentă ansambluri. Un alt set de tabele de metadate care:

§ identifică ansamblul sub forma unui nume text, versiunea sa, cultura și semnătura digitală (dacă ansamblul este partajat între aplicații);

§ determină fișierele incluse (după nume și hash),

§ indică tipurile și resursele care există în ansamblu, inclusiv o descriere a celor care sunt exportate din ansamblu;

§ listează dependențele de alte ansambluri,

§ indică setul de drepturi necesare pentru ca ansamblul să funcționeze corect.

Aceste informații sunt utilizate în timpul execuției pentru a menține aplicația să ruleze corect.

Procesorul NU POATE executa codul IL. Iar traducerea codului IL este efectuată de un compilator JIT (just la timp), care este activat de CLR după cum este necesar și executat de procesor. În același timp, rezultatele compilatorului JIT sunt salvate în memorie cu acces aleator. Se stabilește o mapare între un fragment de cod IL tradus și blocul de memorie corespunzător, ceea ce permite ulterior CLR să transfere controlul către instrucțiunile procesorului scrise în acest bloc de memorie, ocolind un apel repetat către compilatorul JIT.

Mediul CLR permite colaborarea și interacțiunea componentelor software implementate în diferite limbaje de programare.

Bazat pe un bloc de metadate generat anterior, CLR asigură o interacțiune EFICIENTĂ între rularea aplicațiilor .NET.

Pentru CLR, toate ansamblurile sunt aceleași, indiferent de limbajele de programare în care au fost scrise. Principalul lucru este că respectă CLS. De fapt, CLR depășește granițele limbajelor de programare (interoperabilitate între limbi). Astfel, datorită CLS și CTS, aplicațiile .NET sunt de fapt aplicații MSIL (IL).

CLR preia multe probleme care au fost în mod tradițional în centrul atenției dezvoltatorilor de aplicații. Funcțiile îndeplinite de CLR includ:

§ verificarea și compilarea dinamică (JIT) a codului MSIL în instrucțiunile procesorului;

§ managementul memoriei, proceselor și firelor de execuție,

§ organizarea interactiunii intre procese,

§ rezolvarea problemelor de securitate (în cadrul politicii de securitate existente în sistem).

Un AppDomain este un container de asamblare logică care este utilizat pentru a izola o aplicație în spațiul de adrese al unui proces. Toate obiectele creat de aplicație, sunt create într-un anumit domeniu de aplicație. Mai multe domenii de aplicație pot exista într-un singur proces de sistem de operare. CLR izolează aplicațiile prin gestionarea memoriei în domeniul aplicației.

Codul care rulează în CLR (procesul CLR) este separat de alte procese care rulează pe computer în același timp.

Un proces normal este lansat de către sistem în spațiul de adrese alocat în mod specific procesului. CLR oferă posibilitatea de a rula mai multe aplicații gestionate într-un SINGUR PROCES. Fiecare aplicație gestionată este asociată cu propriul domeniu de aplicație (abreviat AppDomain). Pe lângă domeniul principal, mai multe domenii suplimentare pot fi create în aplicație.

Structura runtime-ului CLR este prezentată în imagine.

Proprietățile domeniului:

§ domeniile sunt izolate unele de altele. Obiectele create într-un domeniu nu sunt accesibile din alt domeniu.

§ CLR este capabil să descarce domenii împreună cu toate ansamblurile asociate cu acele domenii,

§ este posibilă configurarea suplimentară și protecția domeniului,

§ Un mecanism special de acces securizat (marshaling) este implementat pentru schimbul de date între domenii.

§ .NET Framework a dezvoltat propriul model de componente, ale cărui elemente sunt ansambluri .NET (.NET-assembly), iar pentru compatibilitatea directă și inversă cu modelul COM/COM+, CLR are mecanisme încorporate (COM Interop ) care oferă acces la obiectele COM conform regulilor .NET și la ansamblurile .NET conform regulilor COM. Cu toate acestea, aplicațiile .NET nu necesită înregistrarea componentelor în registru de sistem Windows.

Pentru a rula o aplicație .NET, este suficient să plasați cea aferentă aceasta aplicație ansambluri într-un singur director. Dacă ansamblul poate fi folosit în mai multe aplicații, atunci este plasat și înregistrat folosind un utilitar special în GAC (Global Assembly Cache).

CTS - Sistem de tip comun Sistem standard Tipuri. Acceptat în toate limbile platformei. Datorită faptului că .NET este un copil al POO, vorbim aici despre tipuri elementare, clase, structuri, interfețe, delegați și enumerari.

Sistemul de tip comun este o parte importantă a mediului de rulare, definind structura constructelor sintactice, modalități de declarare, utilizare și aplicare a tipurilor de rulare COMUNE. CTS conține informații de bază despre sistemul de tipuri GENERAL PREDEFINIT, utilizarea și gestionarea acestora (reguli de conversie a valorii). CTS joacă un rol important în integrarea aplicațiilor gestionate multilingve.

Un spațiu de nume este o modalitate de organizare a unui sistem de tipuri într-un singur grup. Există o bibliotecă lingvistică comună a claselor de bază. Iar conceptul de spațiu de nume oferă organizare și navigare eficientă în cadrul acestei biblioteci. Indiferent de limbajul de programare, accesul la anumite clase este asigurat prin gruparea lor în spații de nume comune.

Spațiu de nume Scop
Sistem
Sistem.Date Pentru a accesa baze de date
Sistem.Date.Comun
Sistem.Date.OleDb
System.Data.SqlClient
Sistem.Colecţii Clase de lucru cu obiecte container
Sistem.Diagnosticare Clase pentru codul de urmărire și depanare
Sistem.Desen Cursuri de suport pentru grafică
Sistem.Desen.Desen.2D
Sistem.Desen.Tipărire
Sistem.IO Suport I/O
System.Net Suport pentru transferul de date prin rețele
Sistem.Reflexie Lucrul cu tipuri personalizate în timpul execuției
Sistem.Reflecție.Emite
System.Runtime.InteropServices Suport pentru interacțiunea cu „codul obișnuit” – DLL-uri, servere COM, acces de la distanță
Sistem.Runtime.Remoting
Sistem.Securitate Criptografie, permisiuni
Sistem.Filetare Lucrul cu Threads
Sistem.WEB Lucrul cu aplicații web
System.Windows.Form Lucrul cu elementele Interfață Windows
System.XML Suport de date XML

Executarea executabilelor negestionate (obișnuite aplicații Windows), este furnizat direct sistem Windows. Modulele neadministrate rulează Mediul Windows ca procese „simple”. Singura cerință pe care trebuie să o îndeplinească astfel de module este să funcționeze corect în mediul Windows. Ele trebuie să funcționeze „corect” (să nu blocheze sistemul, să evite scurgerile de memorie, să nu blocheze alte procese și să folosească corect sistemul de operare în sine pentru a lucra în numele proceselor). Adică corespund cel mai mult reguli generale lucrează sub Windows.

În același timp, majoritatea problemelor de execuție corectă a unui modul negestionat (probleme de interacțiune, alocare și eliberare a memoriei) sunt probleme ale dezvoltatorilor de aplicații. De exemplu, binecunoscuta tehnologie COM este o modalitate de a organiza interacțiunea componentelor eterogene în cadrul unei aplicații.

Un obiect este, în sens larg, o zonă de memorie (stivă sau heap) alocată în timpul execuției programului pentru înregistrarea oricăror valori. Se caracterizează prin tipul (un set fix de proprietăți care determină dimensiunea zonei ocupate, metoda de interpretare a valorii, intervalul de valori, setul de acțiuni permise la manipularea unui obiect) locația în memorie (adresă).

Colectarea gunoiului este un mecanism care permite CLR să determine când un obiect nu mai este disponibil în memoria gestionată a unui program. În timpul colectării gunoiului, memoria gestionată este eliberată. Pentru dezvoltatorul de aplicații, a avea un mecanism de colectare a gunoiului înseamnă că nu mai trebuie să-și facă griji cu privire la eliberarea memoriei. Cu toate acestea, acest lucru poate necesita modificări ale stilului de programare, de exemplu, o atenție specială ar trebui acordată procedurii de eliberare a resurselor sistemului. Este necesar să se implementeze metode care eliberează resursele sistemului, controlat de aplicație.

O stivă este o zonă de memorie special organizată, concepută pentru stocarea temporară a valorilor obiectelor (variabile și constante), pentru transmiterea parametrilor la apelarea metodelor și pentru stocarea adresei de retur. Gestionarea stivei este destul de simplă în comparație cu heap. Se bazează pe modificarea valorii registrului corespunzător din partea de sus a stivei. Când dimensiunea stivei este redusă, obiectele sunt pur și simplu pierdute.

Program in C#

Un program este o secvență de propoziții construită corect (care nu ridică obiecții din partea compilatorului C#), pe baza căreia se formează un ansamblu.

În general, programatorul creează un fișier care conține declarații de clasă, care este furnizat ca intrare compilatorului. Rezultatul compilației este prezentat de traducător ca un ansamblu și este determinat de preferințele programatorului. În principiu, ansamblul poate fi de două tipuri:

§ Fișier executabil portabil (fișier PE cu extensia .exe), potrivit pentru execuția directă de către CLR,

§ Fișier de bibliotecă de linkuri dinamice (fișier DLL cu extensia .dll), destinat reutilizarii ca componentă ca parte a oricărei aplicații.

În orice caz, pe baza codului de intrare, traducătorul construiește un modul IL, un manifest și generează un asamblare. În viitor, asamblarea poate fi efectuată fie după compilarea JIT, fie poate fi utilizată ca parte a altor programe.

Tipuri de aplicații .NET

Limbajul C# poate fi folosit pentru a crea aplicații de consolă - aplicații bazate pe text care rulează într-o fereastră DOS. Cel mai probabil, astfel de aplicații vor fi folosite pentru a testa bibliotecile de clasă. Cu toate acestea, mai des veți folosi C# pentru a crea aplicații care au acces la multe dintre tehnologiile asociate cu .NET. Acest articol oferă o scurtă prezentare a diferitelor tipuri de aplicații care pot fi scrise în C#.

Crearea aplicațiilor ASP.NET

Inițial, apariția ASP.NET 1.0 a schimbat fundamental modelul de programare web. ASP.NET 4 este versiunea senior a produsului și este construit pe baza realizărilor anterioare. ASP.NET 4 introduce pași majori revoluționari care vizează creșterea productivității. Scopul principal al ASP.NET 4 este de a vă permite să construiți aplicații puternice, sigure și dinamice, folosind cât mai puțin cod posibil.

Caracteristici ASP.NET

În primul rând, și poate cel mai important, este că paginile structurat. Adică, fiecare pagină este, de fapt, o clasă moștenită clasa .NET System.Web.UI.Page, care poate suprascrie un set de metode numite în timpul ciclului de viață al unui obiect Page. (Puteți să vă gândiți la aceste evenimente ca rude specifice paginii evenimentelor OnApplication_StartȘi OnSession_Start, care a venit în fișiere global.asax în ASP clasic.) Deoarece funcționalitatea paginilor poate fi distilată în handlere de evenimente pentru scopuri specifice, paginile ASP.NET sunt mult mai ușor de înțeles.

O altă caracteristică frumoasă a paginilor ASP.NET este că pot fi create în Visual Sludio 2010, același mediu în care sunt programate logica de afaceri și componentele de acces la date utilizate de aceleași pagini ASP.NET. Proiect vizual Studio 2010, sau soluția, conține toate fișierele asociate cu aplicația. Mai mult, paginile ASP clasice pot fi depanate direct în editor. Pe vremuri, cu Visual InterDev, era o nevoie enervantă de a configura InterDev și serverul web al proiectului pentru a permite depanarea.

Pentru o mai mare claritate, caracteristica code-behind a ASP.NET vă permite să extindeți și mai mult abordarea structurată. ASP.NET vă permite să izolați funcționalitatea server-side a unei pagini dintr-o clasă, să compilați această clasă împreună cu alte pagini din DLLși plasați acest DLL într-un director sub partea HTML. Directiva @Page de la începutul paginii asociază acest fișier cu o clasă. Când browserul solicită o pagină, serverul web generează evenimente într-o clasă situată în fișierul de clasă al paginii.

Ultima, dar nu în ultimul rând, caracteristică importantă a ASP.NET care trebuie menționată este performanța crescută. În timp ce paginile ASP clasice au fost interpretate de fiecare dată când pagina a fost accesată, paginile ASP.NET au fost stocate în cache pe serverul web după ce au fost compilate. Aceasta înseamnă că toate solicitările ulterioare de pagină ASP.NET sunt mai rapide decât prima.

ASP.NET facilitează, de asemenea, scrierea paginilor care afișează formulare în browser pe care le puteți utiliza rețeaua corporativă. Viziunea tradițională a aplicațiilor bazate pe formulare este că acestea oferă o interfață de utilizator bogată, dar sunt mai dificil de întreținut deoarece rulează pe multe mașini client. Din acest motiv, oamenii se bazează pe aplicații centrate pe formulare doar atunci când au nevoie de o interfață bogată și pot oferi suport de încredere pentru utilizatori.

Formulare Web

Pentru a face proiectarea paginilor web și mai ușoară, Visual Studio 2010 oferă biblioteca Web Forms. Acest instrument vă permite să creați grafic pagini ASP.NET, la fel cum creați ferestre în Visual Basic 6 și C++Builder. Cu alte cuvinte, va trebui să trageți controalele necesare din bara de instrumente pe suprafața formularului, apoi să ajustați ușor codul formularului și să scrieți handlere de evenimente pentru controale. Când utilizați C# pentru a crea un formular web, creați o clasă C# care moștenește de la o clasă de bază Pagină, și o pagină ASP.NET care expune această clasă ca codul său. Desigur, nu trebuie să utilizați C# pentru a crea un formular web; Pentru aceasta, puteți utiliza și Visual Basic 2010 sau orice alt limbaj orientat spre .NET.

În trecut, complexitatea dezvoltării web a împiedicat unele echipe de dezvoltare să încerce să o stăpânească. Pentru a obține succes în dezvoltarea de aplicații web, trebuia să știi multe tehnologii diferite, cum ar fi VBScript, ASP, DHTML, JavaScript etc. Aplicarea conceptelor de formulare web pe paginile web a făcut construirea aplicațiilor web mult mai ușoară.

Controale ale serverului web

Controalele utilizate în formularele Web nu sunt controale în același sens în care sunt controalele ActiveX. În schimb, ele sunt etichete XML care aparțin spațiului de nume ASP.NET, pe care browserul web le transformă în mod dinamic în etichete HTML și scripturi la nivelul clientului atunci când acea pagină este solicitată. Lucrul uimitor este că un server web poate reda aceleași comenzi pe partea serverului căi diferite, generând o transformare care se potrivește cu browserul web specific care a făcut cererea. Aceasta înseamnă că acum puteți crea cu ușurință interfețe de utilizator perfecte pentru pagini web, fără a fi nevoie să vă faceți griji cu privire la modul de a face pagina să funcționeze în oricare dintre browserele disponibile - Web Forms se ocupă de asta.

Servicii Web XML

Astăzi, paginile HTML reprezintă cea mai mare parte a traficului World Wide Web. Cu toate acestea, cu XML, computerele au un format independent de dispozitiv pe care îl pot folosi pentru a comunica pe Internet. În viitor, computerele vor putea folosi XML pentru a face schimb de informații în loc să-și trimită reciproc mesaje prin linii închiriate într-un format proprietar special, cum ar fi EDI (Electronic Data Interchange). Serviciile Web XML sunt concepute pentru un mediu Web orientat spre servicii, în care computerele de la distanță oferă reciproc informații dinamice care pot fi analizate și reformatate înainte de a produce prezentarea finală pentru utilizator. Serviciile Web XML reprezintă o modalitate simplă prin care computerele pot furniza informații în formă XML altor computere de pe Internet.

În terminologia tehnică, un serviciu Web XML în .NET este o pagină ASP.NET care returnează cod XML în loc de cod HTML atunci când este solicitat de clienți. Astfel de pagini se bazează pe DLL-uri care conțin clase moștenite de la WebService. Visual Studio 2010 IDE oferă un mecanism care facilitează crearea de servicii web.

O afacere sau organizație poate prefera serviciile Web XML din două motive principale. Primul motiv este că se bazează pe HTTP; Serviciile web pot folosi rețelele existente bazate pe HTTP ca intermediari pentru a transfera informații. Un alt motiv este că, deoarece serviciile Web XML utilizează XML, formatul datelor transferate este auto-documentat, deschis și independent de platformă.

Crearea formularelor Windows

Deși C# și .NET sunt concepute special pentru dezvoltarea web, ele încă suportă așa-numitele aplicații client „groase” - de exemplu. aplicații care trebuie instalate pe mașina utilizatorului final, unde se realizează cea mai mare parte a procesării. Acesta este furnizat de biblioteca de formulare Windows.

Cu toate acestea, dacă începi să înveți platforma .NET, aș face-o nu a recomandatînveți Windows Forms și treci imediat la cea mai recentă tehnologie WPF.

Windows Presentation Foundation (WPF)

Unul dintre cele mai noi tehnologii revoluționar în natură este Windows Presentation Foundation (WPF). WPF se bazează pe utilizarea XAML pentru a construi aplicații. Abrevierea XAML înseamnă Extensible Application Markup Language - un limbaj extensibil de markup al aplicației. Acest Metoda noua Crearea de aplicații în cadrul Microsoft Framework, introdus pentru prima dată în 2006, face parte din .NET Framework 3.0, 3.5 și 4. Aceasta înseamnă că, pentru a rula orice aplicație WPF, trebuie să vă asigurați că .NET Framework este instalat pe client. mașină 3.0, 3.5 sau 4. Aplicațiile WPF sunt disponibile pentru Windows 7, Windows Vista, Windows XP, Windows Server 2003 și Windows Server 2008 (doar acestea OS vă permit să instalați .NET Framework 3.0, 3.5 sau 4).

XAML este o declarație XML utilizată pentru a crea formulare care reprezintă toate aspectele vizuale și comportamentul aplicațiilor WPF. Deoarece puteți lucra cu o aplicație WPF în mod programatic, această tehnologie reprezintă un pas în direcția programării declarative către care industria se îndreaptă astăzi. Programarea declarativă înseamnă că, în loc să creeze obiecte prin scrierea codului într-un limbaj compilat, cum ar fi C#, VB sau Java, totul este declarat folosind programare asemănătoare XML.

Servicii Windows

Serviciul Windows ( Serviciul Windows, numit inițial NT Service) este un program conceput pentru a rula în fundal în Windows NT/2000/XP/2003/Vista/7 (dar nu Windows 9x). Aceste servicii sunt utile atunci când trebuie să organizați funcționarea continuă a programelor care sunt gata să răspundă evenimentelor, fără a fi nevoie să le lansați în mod explicit din inițiativa utilizatorului. Un exemplu bun este un serviciu World Wide Web pe servere web care ascultă cererile web de la clienți.

Dezvoltarea serviciilor în C# este foarte ușoară. În spațiul de nume Sistem.Servicii.Proces Sunt disponibile clase de bază ale mediului .NET care vă permit să rezolvați majoritatea problemelor șablonului asociate cu serviciile de sistem. În plus, Visual Studio .NET vă permite să creați un proiect C# Windows Service care utilizează codul sursă C# pentru a construi un serviciu Windows.

Windows Communication Foundation (WCF)

Pe măsură ce explorați modurile în care tehnologiile Microsoft mută datele și serviciile de la un punct la altul, veți descoperi că aveți la dispoziție o mare varietate de opțiuni. solutii posibile. De exemplu, puteți utiliza ASP.NET Web Services, .NET Remoting, Enterprise Services sau MSMQ. Ce tehnologie sa aleg? Răspunsul la această întrebare este dictat de ceea ce încercați să realizați, deoarece fiecare dintre aceste tehnologii este de preferat într-o situație specifică.

Având în vedere acest lucru, Microsoft a reunit într-adevăr toate aceste tehnologii, iar în .NET Framework 3.0 și includerea sa în .NET Framework 3.5 și 4, există o singură modalitate de a muta datele - Windows Communication Foundation (WCF) . Biblioteca WCF oferă posibilitatea de a construi inițial un serviciu și apoi de a furniza acel serviciu în moduri diferite (chiar și prin diferite protocoale) prin simpla schimbare a fișierului de configurare. WCF este un nou mijloc foarte puternic de conectare a sistemelor distribuite.

Windows Workflow Foundation (WF)

Serviciul Windows Workflow Foundation (WF) a fost introdus pentru prima dată în .NET Framework 3.0, dar acum a suferit o revizuire majoră pe care mulți o vor găsi acum mult mai utilă. Veți descoperi că Visual Studio 2010 a îmbunătățit considerabil modul în care lucrați cu WF, făcând mult mai ușor să vă creați propriile fluxuri de lucru. Veți găsi, de asemenea, noi controale de flux, clasa Flowchart, precum și o serie de acțiuni noi, cum ar fi DoWhile, ForEach și ParallelForEach.