Încă de la apariția .Net, de la .NET Compact Framework la Silverlight, de la Windows Phone la aplicații Windows Store, programatorii au avut de a face cu versiuni fragmentate de .NET. Deși toate ar trebuit să aibă un asa-zis runtime „comun” ajungeau de fapt să e un subset diferit de .Net pentru fiecare platforma din suita Microsoft. 

Ce este .NET Core?

Într-adevăr fiecare din ele are și va avea întotdeauna capabilități diferite, dar a avea o bază comună pentru toate în loc de subseturi foarte bine de nite este un mare plus. Faptul că putem avea aplicații desktop sau mobile și putem folosi componente care să se integreze perfect pe oricare dintre ele, face din .NET un mediu de dezvoltare din ce în ce mai atractiv, și totodată rezolva multe din problemele de versionare și compatibilitate apărute de-a lungul vremii. 

01_1

.Net Core nu încearcă (deocamdată) să înlocuiască .Net framework-ul pe care îl știm cu toții, dar aduce o serie de beneficii:

  • Open source
  • Un singur .NET pentru toate platformele (Microsoft sau în afara Microsoft) 
  • Nu necesita install-uri la nivel de mașină 
  • Mic, rapid, modular și extensibil 
  • În mediul .NET, Core v-a primi primul update-uri/patch-uri 

01_2

Are un nou model de configurare pentru aplicații bazat pe Json, folosește perechi cheie-valoare, eliminând astfel clasicul web.config.

Modelul de hosting AspNet nu asculta direct requesturile, ci se bazează pe o implementare HTTP a unui server, ce prefațează interfețe care pot compuse într-un Http-Context. Include suport pentru a rula în varianta clasica în IIS, sau în afara IIS (self-hosting) folosind Kestrel – un web server open-source, scris cu ajutorul Libuv, o librărie multi-platforma cu focus pe operațiile asincrone I/O, care targeta inițial Node.js.

Este format dintr-un subset de librarii numite „CoreFX” și un runtime mic și optimizat numit „CoreCLR”, distribuite ca pachete individuale prin NuGet.

Unul din beneficiile majore aduse de .NET Core este portabilitatea. Poți împacheta și deploya CoreCLR împreună cu aplicația, eliminând astfel dependenta de versiunea de framework instalata pe server. De asemenea poți hosta mai multe aplicații simultan, pe același server chiar dacă targheteaza versiuni diferite de framework, și nu mai ești forțat să upgrade zi toate aplicațiile simultan.

Concepte noi

project.json 

– este una din componentele principale ale unui proiect ASP Core care înlocuiește web.config-ul din versiunile anterioare de .Net. Conține proprietăți legate de metadata (version, autori, opțiuni de compilare), dependințe ( folosite de NuGet), se pot specifica opțiuni de buibuild, opțiuni de pubpublish.

DNX (Dot Net Execution Environment ) 

  • SDK și un mediu de runtime care are tot ce este necesar pentru a construi și a rula aplicații .Net pentru Windows, Mac și Linux. A fost construit pentru a rula aplicații ASP.NET cross-platform și poți targeta versiunea completa asp net și cea light reprezentata de .NET Core.
    – Hosteaza CLR-ul
    – Executa aplicația
    – Este entry-point

Dnx451 – este versiunea completa de .net care se instalează odată cu Visual Studio

DnxCore – este versiunea care funcționează cross-platform-lightweight, cu mai puține features.

Middleware

– Componente reutilizabile asamblate în pipeline-ul aplicației care gestionează cereri și răspunsuri. Sunt scrise în clase separate; Implementează metode de extensie în IApplicationBuilder; Într-o aplicație clasica ASP.NET Core vom avea mai multe componente middleware configurate, ca de exemplu: (Static Files Midddleware, Authentication Middleware, MVC)

01_3

Startup.cs 

  • Este definită de programator; Îți poți defini middleware-urile care vor forma pipeline-ul
  • Are o metoda Main și alte metode pe care le apelează DNX-ul
  • Înlocuiește Global.asax

xproj 

  • este un fișier specific Visual Studio folosit behind the scenes
  • înlocuiește csproj-ul împreună cu project.json

Pachete din NuGet, NPM și Bower 

Știm cu toții că NuGet este principalul tool folosit de programatorii .NET pentru a instala cat mai ușor diverse pachete/librarii, fie ele server-side sau client-side. Uneori pentru pachetele client-side exista multe dependințe, configurări care dau bătăi de cap celor mai puțin experimentați dintre noi, iar integrarea cu Visual Studio a celor mai comune tool-uri din lumea dezvoltarii web nu a fost întotdeauna cea mai simpla. Microsoft le face parte integranta din IDE și încurajează folosirea lor extensiva.

NPM (Gulp și Grunt) 

  • Rulează pe node.js
  • Poți scrie task-uri în javascript
  • Poți folosi task runners
  • Nu mai e necesar să faci register la bundles( pentru minification)
  • Sunt integrate în Visual Studio

.NET Core include doar librăriile și funcțiile minimale și comune absolut necesare unei aplicații pentru a rula cross-platform (Mac, Linux, Windows), altfel spus „plătești” doar pentru ce folosești. Acest lucru nu poate decât să ne bucure întrucât au apărut deja teste care arata că suporta cu 2300% mai multe requesturi pe secunda mai mult decât „vechiul” ASP.NET 4.6.

01_4