Microsoft.NET-plattform. Översikt över arkitektur och funktioner

God dag. Alexey Gulynin är i kontakt. I den förra artikeln lärde vi oss om sätt att skicka argument till en metod i C#. I den här artikeln skulle jag vilja berätta igen (mer med enkla ord), vilket är .Net Framework och Visual Studio. Den här artikeln är en fortsättning på Visual Studio-beskrivningen och artiklarna .Net Framework .Net Frameworkär en CLR-miljö (Common Language Runtime). kärnkomponenten i .Net Framework), som säkerställer exekvering av hanterad kod. CLR hanterar denna kod. Vad är hanterad kod? Kod skriven för plattformen. NET Framework kompileras inte till slutlig maskinkod, utan till ett mellanspråk (det så kallade IL - Intermediate Language). Därefter överförs denna sammansättning till användaren (maskinen måste ha .Net Framework installerat), laddas in i minnet och översätter IL-kommandon till åtgärder som måste utföras.

Vad är poängen med mellanspråk IL?

För det första är den plattformsoberoende, inte knuten till en specifik processor.

För det andra tillåter dess närvaro CLR att styra driften av ditt program, dvs. låt henne inte göra några oacceptabla saker (till exempel minnesmanipulation).

Andra viktiga komponenten efter CLR är Klassbibliotek. .NET Framework innehåller ett stort antal klasser, uppdelade i namnområden, som tillhandahåller all grundläggande funktionalitet. Detta är den funktionalitet som ditt program kan kräva, till exempel att arbeta med filer, nätverket, processer och det grafiska undersystemet.

Tredje komponentenär Development Frameworks (med andra ord utvecklingsbibliotek). Detta inkluderar bibliotek som WPF (Windows Presentation Foundation), ASP.NET, Entity Framework, WCF (Windows Communication Foundation), Windows Store, etc. I själva verket är dessa också klasser. Skillnaden är att dessa klasser är designade för att lösa specifika problem:

  • WPF - för att arbeta med grafiska applikationer
  • ASP.NET - för att arbeta med webbapplikationer
  • WCF - för att arbeta med nätverket och skapa distribuerade (klient-server) applikationer
  • Entity Framework - för att arbeta med databasen.

Vid tidpunkten för att skriva denna artikel senaste versionenär .Net Framework 4.6

Den huvudsakliga utvecklingsmiljön som rekommenderas av Microsoft är Visual Studio. Microsoft har vanligtvis denna situation: hur blir det? ny version.NET Framework, sedan kommer en ny version av Visual Studio efter ett tag. Vad som ingår i Visual Studio (grundläggande):

  1. Textredigerare med syntaxkodmarkering
  2. IntelliSence hjälpsystem (anropas automatiskt eller genom en kombination Ctrl-tangenter+ Mellanslag (mellanslag)
  3. Kompilatorer från olika språk
  4. Rapid Application Development (RAD)
  5. Visuell designer av gränssnitt, diagram
  6. Komponent för att arbeta med servrar och databaser
  7. Alternativ för IIS-webbserver och SQL-server Express
  8. Debuggers, profilerare, komponenter som låter dig hantera fel
  9. MSDN hjälpsystem

När detta skrivs är den senaste versionen Visual Studio 2015.

Hur konceptet med program fungerar i Visual Studio. I studion finns konceptet ”Project” och ”Solution”. Ett projekt är en sammanställningsenhet. Den består av en uppsättning filer. Hela projektet är vanligtvis sammanställt till en assembly (exe-fil eller dll-fil). Projekt kan grupperas i Solution. En lösning är helt enkelt en samling projekt som kan eller kanske inte är relaterade till varandra (vanligtvis är de det).

En av huvudprinciperna för .NET kan uttryckas på följande sätt: "Ändra vad du vill, med alla medel." .NET-plattformen är en helt ny modell för att skapa Windows-applikationer. Låt oss kort lista de viktigaste bestämmelserna i .NET.

  • Alla möjligheter till interaktion med befintlig kod. COM-binärer fungerar bra med .NET-binärer.
  • Komplett och absolut interlingual interaktion. Till skillnad från klassisk COM stöder .NET arv på flera språk, hantering av undantag på flera språk och felsökning på flera språk.
  • En vanlig runtime-miljö för alla .NET-program, oavsett vilket språk det skrevs på. Och det som är viktigt är att alla språk använder samma uppsättning inbyggda datatyper.
  • Ett basklassbibliotek som döljer all komplexitet som är förknippad med att använda API-anrop och tillhandahåller en komplett objektmodell för alla programmeringsspråk som stöder .NET.
  • Du kan glömma de intrikata COM-strukturerna! Gränssnitt IClassFactory, IOkänd, IDL-kod och variantdatatyper är inte tillgängliga i .NET-program.
  • Verkligen förenklaren. I .NET behöver du inte registrera typer i registret. Dessutom tillåter .NET olika versioner samma DLL-modul kan lugnt samexistera på samma dator.

Fördelar

  1. Hela .NET-plattformen är baserad på en enda objektorienterad modell. Vad betyder det? Faktum är att alla tjänster, gränssnitt och objekt som plattformen tillhandahåller utvecklaren kombineras till en enda klasshierarki. Med andra ord, allt du kan behöva när du skapar applikationer för .NET-plattformen kommer alltid att finnas till hands. Dessutom är allt detta grupperat mycket bekvämt och intuitivt.
  2. En applikation skriven på alla .NET-kompatibla språk är plattformsoberoende (helst). Varför idealiskt? Faktum är att en applikation skriven, säg, i C#, inte beror på plattformen som den kommer att köras på, utan beror på tillgängligheten av .NET-plattformen. Men du måste erkänna att det är mycket lättare att porta .NET-arkitekturen till vilket system som helst en gång, och sedan köra absolut vilken .NET-applikation som helst utan problem. Men för närvarande har .NET-plattformen endast porterats till Windows-familjen av operativsystem, inklusive MS Windows-mobilsystem.
  3. I .NET-plattformen ingår den sk. en "sopsamlare" som frigör resurser. På så sätt skyddas applikationer från minnesläckor och behovet av att frigöra resurser. Detta gör programmeringen enklare och säkrare.
  4. .NET-applikationer använder metadata, vilket hindrar dem från att använda systemregistret Windows.
  5. Alla .NET-applikationer är autonoma, i den meningen att de inte är beroende av andra program, i synnerhet på operativsystemet. Att installera en applikation skriven på ett av .NET-språken kan göras genom att helt enkelt kopiera filer (med undantag för att skapa genvägar i Start och andra ställen).
  6. .NET-applikationer använder säkra typer, vilket förbättrar deras tillförlitlighet, kompatibilitet och plattformsoberoende funktionalitet.
  7. En applikation skriven på vilket .NET-språk som helst interagerar med en enda felhanteringsmodell, vilket avsevärt förenklar denna tråkiga process.
  8. Applikationer skrivna på olika språk kan enkelt interagera. Serverdelen kan till exempel skrivas i C# och klientdelen i Visual Basic.
  9. .NET-applikationer kan certifieras för säkerhet. Detta är en funktion i den mellanliggande koden som alla .NET-applikationer konverteras till.
  10. Absolut alla fel behandlas av undantagsmekanismen. Detta undviker den friktion som ibland uppstod vid programmering under Win32.
  11. Återanvändning av kod har blivit ännu bekvämare. Detta beror på att mellanspråket MSIL är oberoende av programmeringsspråket. Du kan till exempel skriva ett program i C# och skriva en patch för det i t.ex. J#.

Brister

Någon mjukvaruprodukt har sina nackdelar, och det har också .NET-plattformen. Du måste känna dem också.

  1. Som ofta är fallet kommer bekvämlighet på bekostnad av hastighet, och det är vad som hände med .NET. Applikationer skrivna för .NET-plattformen är långsammare, det är ett faktum. I vissa fall kan hastigheten sjunka med 15 %, vilket ibland är oacceptabelt (till exempel när man skapar 3D-applikationer där de slåss om varje FPS). Förseningar i exekvering är associerade med mellanspråket MSIL, eftersom det också tar tid att kompilera det till en körbar fil. Naturligtvis kompileras applikationen inte på en gång, utan i delar, jämnt som programmet körs.
  2. Inte alla språk kan skapa .NET-applikationer. Faktum är att .NET från början var "skräddarsydd" för C/JAVA-liknande språk. Detta har skapat vissa svårigheter med att skapa .NET-kompilatorer för andra språk (särskilt exotiska och högt specialiserade). Som ett resultat var vissa funktioner tvungna att lösas på icke-triviala sätt, vilket hade en negativ inverkan på prestandan. Men gradvis försvinner denna nackdel, eftersom Kompilatorutvecklare har insett vikten av .NET-plattformen och försöker göra anständiga verktyg för sina språk.
  3. FrameWork-biblioteket krävs. Denna nackdel elimineras med utgång Windows Vista, eftersom Detta bibliotek är inbyggt i systemet som standard.

Du kan vara uppmärksam på att .NET har fler fördelar än nackdelar. Naturligtvis är detta inte en återspegling av verkligheten. Detta indikerar en bra marknadsföringskampanj utförd av Microsoft.

.NET Framework är en av komponenterna Windows-system. Det låter dig skapa och använda nästa generations applikationer. Syftet med plattformen .NET Framework :

  • skapande av en holistisk objektorienterad programmeringsmiljö tillåter olika implementeringsalternativ: koden kan lagras och exekveras lokalt; utföras lokalt och distribueras över Internet; eller utförs på distans;
  • tillhandahålla en kodexekveringsmiljö där antalet distributioner är i konflikt programvara och versionskontrollen kommer att hållas till ett minimum;
  • säkerställa säkerheten för kodexekvering i miljön - inklusive kod skapad av en okänd eller delvis betrodd utvecklare;
  • tillhandahålla en kodruntimemiljö för att hantera prestandaproblem i skript- eller tolkningsbaserade miljöer;
  • förening av utvecklarnas arbete i helt andra applikationer: som i Windows-applikationer, och i webbapplikationer;
  • användningen av industristandarder inom alla områden av datautbyte och, som ett resultat, säkerställande av kompatibiliteten för kod skapad i .NET Framework med andra program.

Anteckning: Microsoft .NET Initiative. Kompatibilitet, tillförlitlighet och återanvändning komponenter. .NET Framework. Common Language Runtime Environment (CLR). Pseudomaskinspråk CIL (styrs av assembler). JIT-kompilator. Programmeringsspråk. Församlingar. Metadata. Sophämtare. .NET Framework Class Library

Problem med att utveckla moderna informationssystem

Integrationsproblem

  • Moduler skrivna på olika språk, med olika API:er (eller API-versioner) eller olika datarepresentationsformat;
  • Program utvecklade för olika plattformar inom ett enda mjukvarupaket;
  • System som använder olika mjukvarumodeller.

Integreringsproblem med äldre kod är särskilt vanliga. Vid lösning av integrationsproblem uppstår inkompatibilitetsproblem.

Portabilitetsproblem

I allt högre grad krävs program för att stödja flera plattformar (till exempel möjligheten att arbeta med programmet på Windows- och Mac OS-plattformarna).

Versionsproblem

Windows-utvecklare är medvetna om ett versionskompatibilitetsproblem som kallas DLL-helvetet. Detta "helvete" inträffar när komponenter installerade för en ny applikation ersätter komponenter i den gamla applikationen. Som ett resultat börjar det gamla programmet att fungera felaktigt eller slutar fungera.

Resurshantering

Ett av problemen med programmering är hantering och korrekt frigivning av resurser, filer, minne, skärmutrymme, nätverksanslutningar, databasresurser etc. Felaktig hantering av dessa resurser kan leda till felaktig programkörning.

Typ säkerhet

När de nämner ett typsäkerhetsproblem menar de felaktig hantering av datatyper: försök att komma åt minnesområden utanför typens gräns, försök att anropa metoder som inte finns på typen, eller försök att anropa en metod som tar typ A som en parameter och skicka den som ett parameterobjekt typ B.

Felhantering

När man utvecklar Windows-applikationer med Win32 API returnerar vissa funktioner undantag, andra returnerar statuskoder och andra returnerar HRESULTS. Det finns alltså ingen konsekvent mekanism för att hantera fel och det är möjligt att ignorera vissa undantag, vilket gör koden osäker.

Dessa och andra utvecklingsproblem informationssystem Microsoft .NET-plattformen hjälper till att lösa detta problem.

Lösa problem med att utveckla informationssystem i .NET

Ett sätt att lösa problemet med heterogenitet är att utveckla och stödja standard mjukvarugränssnitt, vilket underlättar uppgiften att överföra applikationer till servrar på olika plattformar. Däremot kan applikationer använda databaser, kommunikation och andra tjänster vars gränssnitt inte är komponenter i programmeringsspråket eller miljön. En annan metod som används av tillverkare för att lösa problemet med heterogenitet är att stödja standardprotokoll. System som stöder samma protokoll kan kommunicera med varandra, även om de förlitar sig på olika maskinarkitekturer och operativsystem.

Teknologi. NET är en metod för programvaruutveckling och distribution som använder allmänt använda standarder som HTTP och XML för att möjliggöra programkompatibilitet och ge tillgång till många programvarutjänster över Internet. Teknik inkluderar. NET Framework är en plattform för utveckling och exekvering av applikationer som förenklar och snabbar upp utvecklingen och stödjer helt objektorienterad programmering för webben, eliminerar många typer av de vanligaste programvarufelen, tillhandahåller ett gemensamt API för alla språk.

Vad utgör Microsoft .NET

NET Framework - infrastruktur för applikationsutveckling. Dess huvudkomponenter är Common Language Runtime och ett klassbibliotek. NET Framework Class Library.

Common Language Runtime

Common Language Runtime (CLR) - en gemensam språkkörning som abstraherar tjänster operativsystem och exekvera hanterade applikationer, vars alla åtgärder måste godkännas av CLR.

All kod för .NET-plattformen konverteras av CLR till CIL mellankod. Därför kan utvecklare enkelt integrera kod skriven för .NET i olika programmeringsspråk. Allt som kan göras på ett .NET-kompatibelt språk (med sällsynta undantag) kan göras på vilket annat språk som helst. Kod på dessa språk kompileras till kod på ett språk - CIL.

CLR sitter ovanpå operativsystemet och tillhandahåller en virtuell miljö för hanterade applikationer. Koden för .NET-plattformen exekveras antingen av CLR eller tillåts exekveras utanför den.

Koden för CLR är i form av Common Intermediate Language (CIL) pseudo-maskinspråkkommandon. Dessa instruktioner kompileras till maskinkod för lämplig processortyp just-in-time vid körning. Vanligtvis kompileras en metod en gång, första gången den anropas. Resultatet cachelagras sedan i minnet för att undvika förseningar vid upprepade samtal. JIT-kompilatorn optimerar kod specifikt för processorn på vilken koden exekveras.

Genom att konvertera CIL-instruktioner till processorinstruktioner verifierar JIT-kompilatorn koden för typsäkerhet.

Det är praktiskt taget omöjligt att utföra ett kommando som kommer åt ett minnesområde som kommandot inte har behörighet att komma åt. En hanterad applikation eliminerar problemet med felinitierade pekare genom att förhindra att en typ konverteras till något den inte är, vilket är en typsäkerhetsöverträdelse. CLR tillåter inte att metoder anropas med en förstörd stackram.

Resurser som tilldelas med hanterad kod frigörs av sophämtaren. Med andra ord, programmeraren allokerar bara minne, men frigör det inte - CLR gör detta. Sopsamlaren håller reda på alla referenser till föremål skapad av programmet, och förstör dessa objekt när minnet de upptar behövs någon annanstans. Detta löser problemet med minnesläckor i hanterade kodapplikationer.

Kodverifiering är också grunden för CLR:s förmåga att köra flera applikationer inom en enda process. Processen är uppdelad i virtuella fack - applikationsdomäner. Detta förbättrar effektiviteten i minnet som allokerats till processer. Applikationsdomäner är inte mindre säkra än processer eftersom deras gränser inte kan överträdas av hanterade applikationer.

.NET Framework Class-bibliotek (FCL)

.NET innehåller klassbibliotekssammansättningar. NET Framework Class-bibliotek (FCL), som innehåller definitioner av flera tusen typer, som var och en tillhandahåller viss funktionalitet. Uppsättningar av "relaterade" typer samlas i separata namnutrymmen. Systemnamnrymden innehåller alltså en basklass, Object, från vilken alla andra typer slutligen härleds.

Således, varje enhet i. NET är ett objekt med sina egna fält och metoder.

Dessutom innehåller System typer för heltal, tecken, strängar, undantagshantering, konsolinmatning/utdata, en grupp typer för säker konvertering från en typ till en annan, dataformatering, generation slumpmässiga siffror och utföra matematiska operationer. Alla applikationer använder typer från systemnamnområdet.

För att ändra en befintlig FCL-typ kan du skapa din egen härledda typ. Du kan skapa dina egna namnutrymmen. Allt detta kommer att strikt följa de principer som plattformen föreslår. NETTO

Här är några av de vanligaste namnrymden och kort beskrivning typer som finns där.

Grundläggande FCL-namnrymder
Namnutrymme Innehåll
System Grundläggande datatyper och hjälpklasser
System.Samlingar Hashtabeller, variabla arrayer och andra behållare
System.Data ADO .NET-klasser för dataåtkomst
System.ritning Klasser för grafikutdata (GDI+)
System.IO Fil och Stream I/O-klasser
System.Net Klasser att arbeta med nätverksprotokoll, till exempel med HTTP
System.Reflektion Klasser för att läsa och skriva metadata
System.Runtime.Remoting Klasser för distribuerade applikationer
System.ServiceProcess Klasser för att skapa Windows-tjänster
System.Trådning Klasser för att skapa och hantera trådar
System.Web HTTP-stödklasser
System.Webbtjänster Klasser för att utveckla webbtjänster
System.Web.Tjänster. Klasser för att utveckla webbtjänstklienter Protokoll
System.Web.UI Huvudklasser som används av ASP .NET
System.Web.UI. WebControls ASP .NET-serverkontroller
System.Wndows.Forms Klasser för GUI-applikationer
System.Xml Klasser för att läsa och skriva in data i XML-format

Alla hanterade applikationer använder

Därför att. NETTO Framework är en kraftfull plattform för applikationsutveckling, den gör det möjligt att utveckla applikationer av helt andra typer.

Skrivbordsapplikationer (applikationer som körs på lokal dator användare);

· webbapplikationer (applikationer som körs inom en webbserver och är tillgängliga för användaren via en webbläsare under HTTP/HTTPS-protokollet);

· webbapplikationer med rika gräns-snittet(applikationer som levereras till användaren via HTTP/HTTPS-protokollet i webbläsaren och körs på klientsidan);

· webbtjänster (programkod som körs på serversidan och kan anropas från klienten för att ta emot data eller utföra en operation);

· mobilapplikationer (applikationer som körs på mobila enheterÅh).

För var och en av följande typer av applikationer i kompositionen. NETTO Framework det finns motsvarande tekniker som låter dig skapa applikationer. Dessutom,. NETTO Framework innehåller vanliga bibliotek som kan användas i olika typer applikationer. Dessa bibliotek inkluderar följande bibliotek:

· för att arbeta med strängar;

· för att arbeta med matematiska funktioner;

· för att arbeta med grafik;

· tillgång till data;

· för att arbeta med filer och andra in-/utdataoperationer;

· att utföra kryptografiska operationer;

· att organisera datasynkronisering mellan datakällor;

· Och enorm mängd andra bibliotek.

Låt oss ta en översikt över varje typ av applikation. Som nämnts ovan, för varje typ av applikation inom plattformen. NETTO Ramar det finns speciella projektmallar.

Desktop-applikationer skiljer sig genom att de startas direkt på användarens dator. Detta är den vanligaste typen av applikation. Skrivbordsapplikationer har vanligtvis tillträde till användarens datorresurser, som t.ex hårddisk, ljudutrustning etc. Fördelarna med denna typ av applikation inkluderar interaktivitet användargränssnitt och möjligheten att använda applikationen oavsett nätverksanslutning Internet och andra resurser. Men för att sådana applikationer ska fungera måste de installeras på den lokala dator.

Desktopapplikationer kan delas in i tre typer - fönsterapplikationer, konsolapplikationer och tjänster. Windows. Fönsterprogram har ett grafiskt gränssnitt. Konsolapplikationer brukar se ut kommandoraden, A gränssnitt Sådana applikationer är textuella snarare än grafiska. Till sist, tjänsterna Windows har inget användargränssnitt alls, utan fungerar i bakgrunden.

Att bygga applikationer med ett grafiskt gränssnitt med fönster inom plattformen. NETTO Ramteknik kan användas Windows Formulär (tillgängliga från. NETTO Framework 1.0) och Windows Presentation Foundation(tillgänglig från. NETTO Framework 3.0). Den senaste tekniken är nyare och mer lovande.


Webbapplikationer De skiljer sig från stationära sådana genom att de arbetar på distans på en webbserver. Användare använder funktionerna hos webbapplikationer via webbläsare och protokoll HTTP/HTTPS. Fördelen med den här typen av applikationer är att det inte finns något behov av att installera dem på dator varje användare – ansökan måste installeras på webben server, varefter den blir tillgänglig för alla användare. Nackdelen med sådana applikationer är dock den begränsade förmågan att bygga användargränssnitt. Detta händer pga gräns-snittet baseras på format HTML, CSS och JavaScript, som är ganska begränsade. Därför är funktionaliteten hos användargränssnitt vanligtvis ganska begränsad.

Eftersom webbapplikationer har en allvarlig nackdel - begränsad kapacitet Av bildandet av användargränssnittet - dök upp ny typ ansökningar kallas rika internetapplikationer eller Internetapplikationer med ett rikt användargränssnitt (Rich Internet Applications, RIA). Ideologin för dessa applikationer är att i webbläsare särskild integration tillägg(plugin), som kan visa ytterligare innehållstyp. Efter detta, när användareöppnar sidan i webbläsaren, den överförs till klientsidan programkod, som fungerar i detta tillägg. Eftersom i det här fallet all kod körs på klientsidan har utvecklare fler alternativ Av skapa användargränssnitt.

Det finns flera tekniker tillgängliga för att bygga denna typ av applikation. En av de mest kända teknikerna är Adobe-tekniken Flash. Dessutom finns det också teknik Microsoft Silverlight, vilket gör att du enklast kan integrera med andra teknologier inom ramverket. NETTO Ram.

En annan typ av applikation är tjänster(eller webbtjänster). Tjänster är en viss programkod som finns på servern och körs Av begäran från användaren. Du kan till exempel skapa en uppsättning tjänster Av arbetar med data från databaser, lagrad på servern. Vanligtvis kommer andra typer av applikationer (skrivbordsapplikationer, webbapplikationer, etc.) åt tjänster för att utföra någon operation på servern eller hämta data från servern.

Inom plattformen. NETTO Ramverk det finns ett antal tekniker som gör att du kan skapa tjänster. Den äldsta tekniken är ASP..NET webb Tjänster. Det låter dig skapa enkla webbtjänster som fungerar Av protokoll HTTP/HTTPS. Vidareutveckling var tekniken Windows Communication Foundation(WCF). Denna plattform är det mest kraftfulla och flexibla verktyget som stöder olika typer kanaler ( HTTP, TCP, namngivna rör, etc.) och utökar utvecklarens möjligheter avsevärt Av skapande av tjänster.

Det finns också ytterligare grenar av WCF-projektet - det här är WCF Syndikering Tillägg (WCF REST) ​​och VÄSEN.NET-data Tjänster. Dessa projekt är utformade för att göra det möjligt att enkelt bygga dataåtkomsttjänster.

Slutligen är den sista typen av applikation mobilapplikationer. Mobila applikationer arbeta inom mobila enheter baserade på operativsystemet Windows Mobile . Det finns också implementeringar för en delmängd av funktioner för mobila enheter. NETTO Framework, som kallas. NET Compact Ram.

Alltså hela utbudet av teknologier inom plattformen. NETTO Ramverk kan representeras av följande diagram.

Dela