ASP.NET

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
ASP. net
software
Siglă
Tip Mediu de dezvoltare integrat
Dezvoltator Microsoft Corporation
Data primei versiuni Ianuarie 2003
Ultima versiune 4.7.1 (17 octombrie 2017 )
Sistem de operare Microsoft Windows macOS Linux (nu este listat )
Licență Licență Apache 2.0
( Licență gratuită )
Site-ul web www.asp.net/

ASP.NET este un set de tehnologii de dezvoltare de software web comercializate de Microsoft . Folosind aceste tehnologii, dezvoltatorii pot crea aplicații web și servicii web ( servicii web ).

Principiile pe care se bazează ASP.NET

Deși numele ASP.NET derivă din ASP ( Active Server Pages ) (vechea tehnologie de dezvoltare web a Microsoft ), există diferențe substanțiale între cele două. De fapt, ASP.NET se bazează, ca toate aplicațiile familiei Microsoft .NET , pe Common Language Runtime ( CLR ).

Dezvoltatorii pot scrie cod folosind oricare dintre limbajele la nivel înalt acceptate de cadrul .NET (biblioteca de clase), cum ar fi, de exemplu, Visual Basic .Net (proprietatea Microsoft), C # (pronunțat C sharp , limbă supusă o specificație de standardizare), J # ( J sharp , derivat din Java), dar și multe alte limbaje open source (și non), cum ar fi Perl și Python , acest lucru este posibil, deoarece CLR a fost standardizat la ECMA . Aplicațiile ASP.NET sunt semnificativ mai rapide și mai performante decât cele create folosind alte tehnologii de scriptare , întrucât întregul cod al site-ului este precompilat în câteva fișiere dll (adesea într-un singur fișier) gestionate de un server web .

ASP.NET își propune să simplifice migrarea dezvoltatorilor de la aplicații Windows la aplicații web, permițându-le să genereze pagini compuse din multe controale widget , foarte asemănătoare cu cele utilizate de interfața utilizator Windows.

Un control web, cum ar fi un buton sau o etichetă (etichetă), funcționează într-un mod foarte similar cu cel al omologilor lor Windows: codul asociat acestora le poate atribui anumite proprietăți și poate efectua acțiuni ca răspuns la evenimentele asociate acestora (pentru exemplu exemplu prin simpla apăsare a unui buton). Diferența este că, în timp ce comenzile Windows se desenează pe ecran, comenzile web produc blocuri de cod HTML care se inserează automat în pagină pentru a fi trimise în browserul utilizatorului final.

Paradigma de programare ASP.NET

ASP.NET este conceput pentru a încuraja dezvoltatorul să utilizeze sistematic paradigmainterfeței grafice a utilizatorului (GUI, pentru interfața grafică a utilizatorului) combinată cu așa-numita programare bazată pe evenimente ( bazată pe evenimente), adică stilul de programare din care diferitele blocuri de cod sunt executate ca răspuns la anumite evenimente sau acțiuni, pe comenzi grafice de pe desktop .

Stilul convențional al limbajelor pentru dezvoltarea aplicațiilor web s-a bazat în schimb pe tehnica de scriptare . Clasele bibliotecii Framework. NET propune, de asemenea, să combine și să interacționeze cu tehnologiile existente, cum ar fi JavaScript , pentru a atribui un caracter de persistență obiectelor software, chiar și în contextul unui mediu precum web, care este intrinsec apatrid ( server apatrid ).

Biblioteca de clase cadru. NET, implementează structura CLR (Common Language Runtime), a cărei bază este formată dintr-un compilator JIT ( just in time ). Aceasta înseamnă că codul intermediar produs, numit IL (Intermediate Language) și identic pentru toate limbajele de nivel înalt utilizate, este compilat în limbajul mașinii în momentul primei execuții. Prin utilizarea unor compilatoare diferite în timp, este posibilă reutilizarea aceluiași IL intermediar pe procesoare diferite. Această tehnică se numește Jitting . Acest tip de compilație este foarte diferit de limbaje precum Java , în care în schimb tot codul rulează pe o mașină virtuală reală, în timp ce în .NET în momentul execuției programul este de fapt în limbajul mașinii ca toate celelalte limbi.

La fel ca toate celelalte limbi din suita .NET, ASP.NET folosește, de asemenea, mecanismul automat de alocare a memoriei numit gunoi colector .

Punctele tari ale ASP.NET peste ASP

Disponibilitatea largă de controale, clase și instrumente de dezvoltare permite reducerea semnificativă a timpului de dezvoltare a modulelor software și permite dezvoltatorului să reutilizeze cu ușurință același cod în diferite aplicații. ASP.NET a simplificat în mod semnificativ capacitățile de acces la date prin ASP. De exemplu, este mult mai ușor și mai imediat să generați o pagină care conține o listă de date preluate dintr-o bază de date .

Alte avantaje sunt:

  • Codul precompilat permite aplicațiilor să ruleze mai rapid, cu un număr mai mare de erori de programare detectate și eliminate deja în curs de dezvoltare, precum și vă permite să distribuiți o aplicație web fără a fi necesar să atașați sursa.
  • Comenzile definite de utilizator vă permit să implementați cu ușurință controale foarte comune, cum ar fi meniurile .
  • Componentele COM și .NET suplimentare nu trebuie să fie înregistrate pe server prin operarea de pe consolă, ci sunt inițializate în timpul rulării de către aplicație. În acest fel, clienții furnizorului de gazdă nu trebuie să solicite înregistrarea niciunei biblioteci de pe server.
  • ASP.NET poate juca rolul orice utilizator al serverului pentru Windows în cazul în care se execută, moștenind toate privilegiile pe sistemul de fișiere .
  • Afinitatea cu grafica și stilul de programare al aplicațiilor Windows face ca trecerea între ele să fie mai intuitivă pentru programatori.
  • Disponibilitatea unui set foarte bogat de controale și biblioteci de clase permite dezvoltarea rapidă a aplicațiilor.
  • Capacitatea de a memora în cache pagini întregi, o parte din pagini sau datele aplicației îmbunătățește foarte mult performanța generală.
  • Dacă o aplicație ASP.NET nu reușește să aloce memoria de care are nevoie ( scurgeri de memorie ), atunci modulul de execuție descarcă din memorie întregul mediu izolat în care rulează aplicația critică și o reîncarcă într-o altă zonă creată special. Pentru a efectua aceste operațiuni de încărcare / descărcare (și altele care privesc aplicația în ansamblu) cadrul. NET oferă clasa AppDomain .
  • Starea sesiunii ASP.NET poate fi salvată într-o bază de date SQL server sau într-un proces separat care se află pe aceeași mașină ca serverul web sau pe cea a altei mașini. Datele și proprietățile sesiunii nu se pierd când se resetează Internet Information Services (IIS) sau când procesul ASP.NET activ este reciclat.
  • Utilizând Visual Studio .NET și IIS Server, puteți efectua depanarea pe partea de server, cu aceleași instrumente pas cu pas utilizate în majoritatea mediilor de dezvoltare a compilației.
  • Capacitatea platformei .NET CLR de a suporta multe limbi permite programatorilor să scrie cod pentru pagini web în VB.NET, C #, J # etc.

Critica la adresa ASP.NET

ASP și ASP.NET pot rula împreună în aceeași aplicație web. Această abordare permite dezvoltatorilor să migreze dintr-un mediu în altul treptat, în loc de toate simultan. Cu IIS 6.0 și versiunile anterioare, paginile scrise utilizând versiuni mai vechi ale cadrului ASP nu pot partaja aceeași sesiune fără utilizarea bibliotecilor terțe. Această limitare nu există pentru aplicațiile ASP.NET și ASP care rulează împreună sub IIS 7. În unele cazuri, ASP.NET reciclează procesul activ în timpul runtime, ocupând mai mult de 60% din memoria disponibilă. Poate fi configurat astfel încât reciclarea să aibă loc numai după un anumit număr de solicitări, după un anumit timp etc. Totuși, procedând astfel, utilizatorul poate pierde starea sesiunii curente. Dacă aplicația folosește starea sesiunii pentru a încărca informații de autentificare (practică greșită, deoarece autentificarea bazată pe cookie și calitatea de membru sunt o opțiune disponibilă deja încorporată în cadrul) și dacă aplicația este configurată pentru a utiliza sesiuni în proces, utilizatorul poate fi deconectat dacă procesul este reciclat.

Eșantion de cod

Mai jos este codul sursă care generează mesajul clasic minim:

 <% @ Page Language = "C #" %>
<HTML>
<HEAD>
<TITLE> Exemplu de pagină ASPX </TITLE>
</HEAD>
<CORP>
<DIV STYLE = "TEXT-ALIGN: CENTER" >
<% 
int mcycle ;
String mstringa = "" ;
pentru ( m ciclu = 1 ; m ciclu <= 10 ; m ciclu ++ ) {
mstring = mstring + String . Format ( "<SPAN STYLE = 'FONT-SIZE: {0} PX'> Hello world in ASP.NET </SPAN> <br />" , mcycle ) ; 
} 
Mesaj . InnerHtml = mstring ; 
%> 
<SPAN id = "Mesaj" runat = "server" /> 
</DIV> 
</BODY>
</HTML>

Numele fișierelor ASP.NET au o extensie .aspx . Directiva Page vă permite să specificați limba utilizată (în exemplul C #) și numeroase alte atribute care vă permit să descrieți proprietățile și aspectul paginii. Fiecare pagină aspx poate conține o singură directivă de pagină . Rețineți că eșantionul de linii de cod care urmează directivei Page sunt cod HTML simplu.

Sunt declarate 2 variabile: întregul mcycle și șirul numit mstring , iar o buclă for este definită pentru a afișa mesajul cu caractere de dimensiuni crescânde de la 1 la 10. Variabila mstring stochează codul HTML care urmează să fie afișat. La sfârșitul ciclului este setată proprietatea InnerHtml a obiectului Message .

Eticheta <SPAN> are atributul runat care indică faptul că elementul trebuie executat pe partea Server , așa cum este de obicei cazul aplicațiilor dezvoltate în ASP.NET.

Instrumente de dezvoltare

Există multe software-uri disponibile pentru a dezvolta aplicații ASP.NET, principalele și cele mai populare sunt:

ASP.NET 3.5

ASP.NET 3.0 nu a existat niciodată. Microsoft a folosit numele „.NET Framework 3.0” pentru a implementa un set de noi tehnologii: WPF ( Windows Presentation Foundation ), WCF ( Windows Communication Foundation ) și WF ( Windows Workflow Foundation ). Cu toate acestea .NET Framework 3.0 nu include o nouă versiune a CLR sau ASP.NET. Comparativ cu versiunea 2.0, versiunea 3.5 a ASP.NET poate fi considerată o evoluție treptată; în special, noile caracteristici sunt concentrate în trei domenii: LINQ , AJAX și Silverlight .

Siguranță

Un site web ASP.NET poate fi supus atacurilor hackerilor [1] :

  • Configurarea incorectă a opțiunilor de securitate
  • Cross-Site Request Forgery (CSRF) - Permite unui atacator să forțeze un utilizator validat și conectat să efectueze acțiuni fără consimțământul lor
  • Cross-Site Scripting (XSS)
  • Încărcarea fișierelor rău intenționate: atacatorii pot schimba extensiile de fișiere (de exemplu, din „.exe” în „.jpeg”), iar scriptul rău intenționat poate fi încărcat ca fișier imagine
  • Dezvăluirea versiunii: informațiile despre versiune pot fi utilizate de către un atacator. Ori de câte ori un browser trimite o cerere HTTP către server, ca răspuns primim un antet de răspuns care conține toate informațiile despre server
  • SQL Injection : permite atacatorilor să falsifice identificarea , modificarea datelor existente, cauzarea problemelor de respingere, cum ar fi anularea tranzacțiilor sau modificarea situațiilor financiare, obținerea tuturor datelor din sistem, ștergerea sau transformarea datelor inaccesibile și crearea sau compromiterea utilizatorilor serverului bazei de date.
  • Expunerea la date sensibile: parole, numere PAN, informații despre cardul de credit etc.
  • Autentificare defectă și gestionarea sesiunii. Dacă autentificarea și gestionarea sesiunii nu sunt implementate corect într-o aplicație web, aceasta va lăsa vulnerabil la atac. Atacatorii pot fura date din cauza:
  1. Conexiuni nesecurizate (nu folosesc SSL )
  2. Date de conectare previzibile
  3. Nu stocați acreditările într-o formă criptată
  4. Deconectare incorectă a aplicației
  • Redirecționările și redirecționările nu sunt validate. Dacă nu validăm redirecționările de pagini web, riscul unui atac crește. Acest atac este folosit în principal pentru a phishing utilizatorul acreditării sau pentru a instala malware rău intenționat.

Modele de programare

ASP.NET acceptă o serie de modele de programare pentru crearea de aplicații web [2] :

  • ASP.NET Web Form: Un cadru pentru construirea de pagini modulare din componente, cu evenimente UI procesate pe partea serverului.
  • ASP.NET MVC: Creați pagini web folosind modelul de proiectare model - vizualizare - controler.
  • Pagini Web ASP.NET: Sintaxă ușoară pentru adăugarea de cod dinamic și accesarea datelor direct în cadrul marcajului HTML [3] .
  • ASP.NET Web API: cadru pentru construirea web API pe .NET Framework [4] .
  • ASP.NET Webhook: implementează modelul webhook pentru abonarea și publicarea evenimentelor prin HTTP.
  • SignalR - Un cadru de comunicare în timp real pentru comunicații bidirecționale între client și server.

Alte extensii ASP.NET includ:

  • Handler ASP.NET: Componente care implementează interfața System.Web.IHttpHandler . Spre deosebire de paginile ASP.NET, acestea nu au fișiere de marcare HTML, evenimente și alte suporturi. Tot ce au este un fișier de cod (scris în orice limbă compatibilă .NET) care scrie unele date în răspunsul HTTP al serverului. Handlerele HTTP sunt similare extensiilor ISAPI.
  • ASP.NET AJAX - O extensie cu componente atât pentru client cât și pentru server pentru scrierea paginilor ASP.NET care încorporează funcționalitate Ajax.
  • ASP.NET Dynamic Data: o extensie de schele pentru construirea de aplicații web bazate pe date.

Conductă IIS integrată

În IIS 6.0 și versiunile anterioare, paginile scrise utilizând diferite versiuni ale cadrului ASP nu pot partaja starea sesiunii fără a utiliza biblioteci terțe. Acest lucru nu se aplică aplicațiilor ASP.NET și ASP care rulează cot la cot pe IIS 7. Cu IIS 7.0, modulele pot rula într-o conductă integrată care permite modulelor scrise în orice limbă să ruleze pentru orice cerere [5] .

Versiuni

Data Versiune
30 noiembrie 2015 4.6.1
30 aprilie 2018 4.7.2
24 aprilie 2003 1.1
21 noiembrie 2006 3.0
20 iulie 2015 4.6
19 noiembrie 2007 3.5
18 noiembrie 2015 5 RC1
18 aprilie 2019 4.8
17 octombrie 2017 4.7.1
17 octombrie 2013 4.5.1
16 ianuarie 2002 1.0
15 august 2012 4.5
12 aprilie 2010 4.0
11 aprilie 2017 4.7
11 august 2008 3.5 Service Pack 1
7 noiembrie 2005 2.0
5 mai 2014 4.5.2
2 august 2016 4.6.2

Comparație cu PHP

PHP este un concurent direct al ASP.NET. Alegerea celor două limbi are argumente pro și contra în funcție de nevoile dumneavoastră [6] [7] :

PRO ÎMPOTRIVA
PHP ASP.NET PHP ASP.NET
Este open-source, deci este gratuit și este îmbunătățit constant de un număr mare de oameni, mai degrabă decât de o singură companie Suportă toate limbajele de programare și funcționează bine cu aplicații sau C # Nu este potrivit pentru construirea de aplicații desktop Mai puțin ușor de învățat și de înțeles decât PHP
Există mai multe grupuri de asistență online pentru a ajuta la accelerarea procesului de învățare decât ASP.NET Anunțați dezvoltatorii dacă au făcut greșeli în codificare înainte de compilare Tratarea erorilor PHP este considerată slabă în comparație cu ASP.NET, deci poate dura mai mult timp pentru a descoperi o problemă Comunitate de sprijin mai mică
Mai ușor de învățat și de înțeles decât ASP.NET Acesta vine cu multe instrumente și caracteristici pentru a sprijini programatorii. Permite personalizarea care cauzează erori și codare slabă în comparație cu ASP.NET Funcționează doar pe un server Microsoft
Funcționează și pe servere Linux Crearea aplicației desktop. Fiind Open Source, codul este la îndemâna tuturor și, prin urmare, este mai expus atacurilor Mai scump datorită licenței Microsoft

Notă

  1. ^ 9 moduri în care hackerii exploatează ASP.NET - și cum să le preveniți , în comunitatea Business 2 . Adus la 28 ianuarie 2021.
  2. ^ (EN) Alegeți între ASP.NET și ASP.NET Core , pe docs.microsoft.com.
  3. ^ (RO ) Întrebări frecvente despre paginile web ASP.NET (Razor) pe docs.microsoft.com.
  4. ^ (RO) Începeți cu ASP.NET Web API 2 (C #) , de la docs.microsoft.com.
  5. ^ Cum să profitați de conducta integrată IIS 7.0 , la iis.net .
  6. ^ (EN) PHP vs ASP.NET: Top Differences for Beginners 'Understanding on Appinventiv, 28 septembrie 2018. Accesat la 30 ianuarie 2021.
  7. ^ (RO) Varun Bhagat, ASP.Net vs PHP: Care este mai bine? , pe PixelCrayons , 8 octombrie 2019. Adus pe 30 ianuarie 2021 .

Elemente conexe

linkuri externe

Microsoft Portal Microsoft : Accesați intrările Wikipedia despre Microsoft