ASP.NET
ASP.NET
Tehnologii Web
Gilbert Gratiant
asp.net: istoric
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: istoric
ASP Active Server Pages (1996)
extensie ISAPI suport pentru realizarea de aplicatii Web interactive
Dr. Sabin Buragawww.purl.org/net/busaco
conectivitate cu bazele de date si alte tehnologii Microsoft e.g., COM Common Object Model
asp.net: istoric
ASP.NET
parte integranta din .NET Framework independenta de limbajul de programare
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: caracterizare
Model abstract pentru programarea Web pe partea de server, bazat pe Web Forms
interactiune Web condusa de evenimente (event driven programming) componente Web executate la nivel de server (proprietati & evenimente)
suport pentru procesari stateful cu stare (ViewState)
Dr. Sabin Buragawww.purl.org/net/busaco
Class Library
acces de nivel inalt la resurse e.g., surse de date fisiere, baze de date, XML, conexiuni de retea
poate fi rulat si cod unmanaged (ce nu poate fi controlat de CLR) de pilda, vechile aplicatii native Windows (scrise, de exemplu, in C ori C++)
un assembly este examinat de CLR pentru a-i cunoaste tipurile de date si resursele vazute ca un ansamblu de functionalitati necesare executiei de cod
avansat
model comun de programare pentru acces la surse de date eterogene, provenite din obiecte .NET, baze de date, documente XML
avansat
interogarile asupra datelor sunt permise direct in limbajul de programare via .NET Framework la nivel de CLR, folosind constructii declarative in stilul SQL/XQuery
avansat
avansat
avansat
Dr. Sabin Buragawww.purl.org/net/busaco
avansat
XNode
XObject XContainer XElement
avansat
avansat // cream un doc. XML via constructiile functionale oferite de LINQ XNamespace sp = "http://www.antologie.info"; // adresa spatiului de nume XDocument doc = new XElement( // instantiem un document XML new XElement (sp + "antologie", new XAttribute ("stare", "ciorna"), new XElement (sp + "poem", new XElement (sp + "titlu", "Aproape vid"), new XElement (sp + "vers", "Un singur vers.")), new XElement (sp + "poem", new XElement (sp + "titlu", "Alt poem"), new XElement (sp + "vers", "Primul vers"), new XElement (sp + "vers", "Al doilea vers"))));
avansat
avansat
avansat
tipul rezultatului poate fi dat explicit sau poate fi dedus de compilator la momentul compilarii via var
avansat
Dr. Sabin Buragawww.purl.org/net/busaco
XDocument proiecte = XDocument.Load ("projects.xml"); var proiecteA = from p in proiecte.Descendants ("project") // preluam proiectele where (String)p.Attribute ("class") == "A orderby (String)p.Element ("stud") // sortate dupa numar studenti select (String)p.Element ("title"); // selectind doar titlul acestora // afisam titlul proiectelor de clasa 'A' foreach (var proiect in proiecteA) Console.WriteLine (proiect);
avansat
avansat
asp.net: caracterizare
Beneficiaza de facilitatile .NET Framework:
CLR (Common Language Run-time) biblioteci de clase dedicate garbage collector siguranta executiei
Dr. Sabin Buragawww.purl.org/net/busaco
necesita prezenta unui server Web compatibil cu IIS (e.g., ASP.NET Development Server)
asp.net: caracterizare
Ofera o stiva stratificata pentru dezvoltarea aplicatiilor Web:
strat de prezentare + controale Web
cadru de lucru la nivel de pagina (page framework) servicii de nivel scazut (de sistem)
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: caracterizare
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: caracterizare
Fiecarui control avind runat="server" ii corespunde o instanta a unei clase specifice, responsabila cu modul de redare & interactiune (look & feel) al acestuia
ii e asociat un identificator unic via atributul id
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: caracterizare
La momentul rularii (run-time), codul-sursa dintr-o pagina .aspx este transformat intr-o instanta a unei clase .NET derivata din Page
o pagina ASP.NET in rulare un obiect
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: caracterizare
Interactiunea Web este asigurata de controale la nivel de server apartinind System.Web.UI
controale HTML
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: caracterizare
Controale HTML
clasice le emuleaza pe cele din HTML au asociate diverse proprietati: InnerText, InnerHtml, Value, Attributes a se consulta System.Web.UI.HtmlControls
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: caracterizare
Controale Web la nivel de server
ofera facilitati suplimentare privind interactiunea e.g., calendar, tree view, data grid etc. , fiind mult mai versatile
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: dezvoltare
Stratul de prezentare:
se ofera o pleiada de controale de interactiune Web (predefinite + create de programator: custom controls)
exemple: <asp:DropDownList>, <asp:Literal>, <asp:Table>, <asp:Wizard>, <asp:Xml>
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: dezvoltare
Stratul de prezentare:
modul de redare e unul adaptiv (dupa tipul de browser Web) generare de marcaje XHTML + JavaScript in functie de navigator
Dr. Sabin Buragawww.purl.org/net/busaco
interactiunea are loc intr-un element <form runat="server"></form> utilizat pentru propagarea starii aplicatiei Web
asp.net: dezvoltare
Stratul de prezentare exemple:
o eticheta menita a reda un text: <asp:Label ID="Mesaj" runat="server"></asp:Label> buton care invoca pe partea de server o actiune: <asp:Button ID="ButonProc" runat="server" Text="Proceseaza" OnClick="ButonProc_Click" ToolTip="Contorizeaza elementele unui document XML" /> un control pentru upload-ul unui fisier: <asp:FileUpload ID="Fisier" runat="server" />
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: dezvoltare
Stratul de prezentare:
orice este inclus intr-o pagina ASP.NET va fi procesat ca un control validarea datelor poate fi realizata via controalele de validare (validation controls) CompareValidator, CustomValidator, RangeValidator, RegularExpressionValidator, RequiredFieldValidator
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: dezvoltare
Stratul de prezentare:
exemplu de utilizare a unui validator <%-- valideaza valoarea numerica a controlului ani --%> <asp:CompareValidator runat="server" id="valideazaAni" ControlToValidate="ani" ValueToCompare="16" Operator="GreaterThanEqual" Type="Integer" ErrorMessage="Varsta trebuie sa fie de minim 16 ani." />
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: dezvoltare
Page Framework
ciclul de viata al unei pagini depinde de diverse evenimente ce pot fi tratate via cod-sursa exemple: Init, Load, LoadComplete, Unload unei pagini i se pot asocia secvente de cod (code behind) si directive de personalizare
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: dezvoltare
Page Framework
fiecare pagina poate fi redata conform unei teme vizuale (via fisiere .skin si .css) redarea poate avea loc conform unui sablon (prototip) specificat via pagini master
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: dezvoltare
Page Framework
zone din pagina pot interactiona diferit cu utilizatorul
Dr. Sabin Buragawww.purl.org/net/busaco
managementul acestora se realizeaza prin Web Parts exista suport pentru integrarea cu servicii SharePoint
asp.net: dezvoltare
Page Framework directive uzuale:
@Import indica un spatiu de nume @Master indica o pagina master @OutputCache controleaza modul de caching al continutului generat @Page defineste atribute la nivel de pagina
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Culture="ro-RO" %>
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: dezvoltare
Stratul sistem:
Aplicatiile Web pot fi configurate la nivel de: sistem fisierul machine.config documente XML sit Web fisierul web.config modifica setarile implicite pentru o aplicatie sau o parte a acesteia
Dr. Sabin Buragawww.purl.org/net/busaco
Se ofera si un API pentru efectuarea unor operatii la run-time Provider Model Se pot stabili si restrictii privitoare la securitate
asp.net: dezvoltare
Accesul la baze de date se realizeaza via ADO.NET
Acces obiectual la diverse surse de date (data providers): Microsoft SQL Server, ODBC, Oracle etc. vezi System.Data Controale ASP.NET pentru atasarea la date (data binding): <asp:sqldatasource>, <asp:objectdatasource>, <asp:xmldatasource>, <asp:gridview>, <asp:datalist>,
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: dezvoltare
Accesul la baze de date se realizeaza via ADO.NET
unele controale Web pot prelua date ale unei surse via atributul datasource:
<asp:BulletedList ID="listaStudentilor" runat="server" datasource="<%# GetData () %>"> </asp:BulletedList>
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: exploatare
O aplicatie ASP.NET este reprezentata din:
directorul ei virtual locatia la nivel de server Web continind toate fisierele din care este compusa fisierul global.asax include setari/cod responsabil pentru tratarea evenimentelor emise de ASP.NET sau de unele module HTTP
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: exploatare
Fiecarei aplicatii ii corespunde o instanta a clasei HttpApplication avind proprietati precum:
Application starea globala a aplicatiei Context contextul rularii Request cererea HTTP curenta Response date de raspuns HTTP trimise la client Server functionalitati pentru procesarea cererilor Session datele de tip sesiune User utilizatorul interactionind cu aplicatia
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: exploatare
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: programare
Aplicatiile ASP.NET pot fi scrise (si) in limbajul C#
pur obiectual, inspirat din C, C++, Java si Perl specificatie standardizata de ECMA
http://msdn.microsoft.com/vcsharp/programming/language/default.aspx
Dr. Sabin Buragawww.purl.org/net/busaco
avansat
asp.net: mvc
Alternativa la metoda conventionala de dezvoltare a aplicatiilor ASP.NET adopta o viziune inginereasca:
MVC (Model-View-Controller) scrierea testelor inainte de implementarea propriu-zisa TDD (Test Driven Development) extensibil mai ales pe baza interfetelor
Dr. Sabin Buragawww.purl.org/net/busaco
avansat
asp.net: mvc
Nu inlocuieste Web Forms de la ASP.NET clasic
Favorizeaza REST URL-uri structurate, intuitive asa-numitele user/SEO friendly
Dr. Sabin Buragawww.purl.org/net/busaco
www.asp.net/mvc
avansat
se ofera extenders precum Animation, AutoComplete, Calendar, DragPanel, DropDown, DynamicPopulate, ModalPopup, NumericUpDown, PasswordStrength, ResizeableControl, Slider, ToggleButton, ValidatorCallout controale noi: Accordion, Rating, ReorderList, TabContainer,
avansat
avansat
asp.net: silverlight
Pentru .NET Framework 3.0+, se ofera suport pentru RIA (Rich Internet Applications) via Silverlight www.silverlight.net
alternativa la grafica vectoriala creata prin Flash ori SVG parte din Windows Presentation Foundation multi-platforma (actualmente: Windows & Mac OS X) Moonlight via Mono, pentru Linux
Dr. Sabin Buragawww.purl.org/net/busaco
avansat
asp.net: silverlight
Via o extensie a navigatorului Web, se ofera suport pentru redarea de continuturi multimedia (vectoriale), bazate pe scenarii temporale (timeline-based animation), eventual folosind transferuri de tip streaming tehnologia de redare a continutului este XAML (Extensible Application Markup Language) dialect XML procesat de un engine Silverlight la nivel de client desktop, Web, mobil
Dr. Sabin Buragawww.purl.org/net/busaco
avansat
Dr. Sabin Buragawww.purl.org/net/busaco
avansat
asp.net: silverlight
O aplicatie Silverlight ruleaza in cadrul browser-ului, interactiunea cu utilizarea efectuindu-se via JavaScript
Dr. Sabin Buragawww.purl.org/net/busaco
avansat
asp.net: silverlight
Interactiunea cu utilizatorul se poate realiza via evenimente tratate local prin cod JavaScript comportamentul controalelor de interfata se poate face dinamic via Silverlight Software Development Kit (SDK) detalii in L. Moroney, Introducing Microsoft Silverlight, Microsoft Press, 2008 si C. Petzold, Applications = Code + Markup, Microsoft Press, 2006
Dr. Sabin Buragawww.purl.org/net/busaco
avansat
asp.net: silverlight
Interfata aplicatiei Silverlight se specifica in XAML, fiind compusa din controale interactive incapsulate de un element <Canvas>
exemple de controale: Button, Ellipse, Grid, Label, ListBox, Path, PolyLine, Rectangle, StackPanel, TextBlock etc.
Dr. Sabin Buragawww.purl.org/net/busaco
avansat
asp.net: silverlight
Conceperea interfetei se poate face cu instrumentul Microsoft Expression Blend interactiunea cu utilizatorul se poate realiza via evenimente tratate local prin cod JavaScript
Dr. Sabin Buragawww.purl.org/net/busaco
avansat
asp.net: integrare
Aplicatiile Web bazate pe ASP.NET pot beneficia de diverse tehnologii/servicii aditionale existente: Live Services disponibile in cadrul Cloud Live Operating Environment via Live Framework http://dev.live.com/
integrarea aplicatiilor Web, desktop, mobile pe baza standardelor Atom, RSS, JSON etc. mesh-enabled Web applications
Dr. Sabin Buragawww.purl.org/net/busaco
asp.net: instrumente
Dr. Sabin Buragawww.purl.org/net/busaco
Microsoft Visual Web Developer Express mediu de dezvoltare Web (ASP.NET) disponibil gratuit: http://msdn.microsoft.com/vstudio/express/
Microsoft WebMatrix sistem integrat pentru dezvoltarea facila de aplicatii Web: http://www.microsoft.com/web/webmatrix/
Eclipse.NET plug-in Eclipse pentru .NET http://sourceforge.net/projects/eclipsedotnet Mono implementare open source (independenta de Microsoft) a .NET disponibila pe sisteme Unix/Linux si Windows http://mono-project.com/
resurse
D. Esposito, Programming Microsoft ASP.NET 2.0. Core Reference, Microsoft Press, 2006 C. Petzold, .NET Book Zero: www.charlespetzold.vom/dotnet S. Robinson et al., Professional C#, Wiley, 2004 P. Pialorsi, M. Russo, Introducing Microsoft LINQ, Microsoft Press, 2007 L. Moroney, Introducing Microsoft Silverlight, Microsoft Press, 2008 S. Buraga, Tehnologii XML, Polirom, 2006 L. Alboaie, S. Buraga, Servicii Web, Polirom, 2006
Dr. Sabin Buragawww.purl.org/net/busaco
resurse
Situl ASP.NET oficial: www.asp.net/ Acces la cod-sursa: codeplex.com/aspnet .NET Framework Developer Center: http://msdn.microsoft.com/netframework/ GotDotNet: www.gotdotnet.com/ OReilly OnDotNET: www.ondotnet.com/ Silverlight: www.silverlight.net/
Dr. Sabin Buragawww.purl.org/net/busaco
rezumat