(III) Web – Profs.Info.Uaic.Ro/~ Web Busaco
Total Page:16
File Type:pdf, Size:1020Kb
Tehnologii Web / busaco ~ / programare Web (III) dezvoltarea aplicațiilor Web profs.info.uaic.ro cu limbajul și mediul PHP Dr. Sabin Sabin Buraga Dr. Dr. Sabin Corneliu Buraga – profs.info.uaic.ro/~busaco/ / busaco ~ „E mediocru ucenicul / care nu-și depășește maestrul.” profs.info.uaic.ro Leonardo da Vinci Dr. Sabin Sabin Buraga Dr. pentru a pentru Cum folosim un server de aplicații folosim un server dezvolta o aplicație Web o aplicație ? Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ server de aplicații web / busaco ~ / Scop: eficientizarea proceselor de dezvoltare a aplicațiilor Web de anvergură profs.info.uaic.ro Dr. Sabin Sabin Buraga Dr. server de aplicații web / busaco ~ / Integrat în unul/mai multe servere Web profs.info.uaic.ro de asemenea, poate oferi propriul server Web sau mediu de execuție Dr. Sabin Sabin Buraga Dr. server de aplicații web / busaco ~ / Poate încuraja sau impune o viziune arhitecturală privind dezvoltarea de aplicații Web profs.info.uaic.ro situație tipică: MVC ori variații Dr. Sabin Sabin Buraga Dr. (re)vezi prezentarea anterioară server de aplicații web / busaco ~ / Simplifică maniera de invocare de programe (script-uri) ale unei aplicații Web profs.info.uaic.ro generarea de conținut dinamic pe partea de server Dr. Sabin Sabin Buraga Dr. server de aplicații web / busaco ~ / Aspecte de interes: limbaj(e) de programare profs.info.uaic.ro API-ul de bază stocare persistentă a modelelor de date interacțiune Web cookie-uri și sesiuni medii de dezvoltare + cadre de lucru, componente,… Sabin Buraga Dr. caracteristici particulare server de aplicații web / busaco ~ / Limbaj(e) de programare oferind suport pentru una sau mai multe paradigme: profs.info.uaic.ro imperativă obiectuală funcțională reactivă concurentă Sabin Buraga Dr. paralelă … server de aplicații web / busaco ~ / Limbaj(e) de programare statice – exemple: C#, Java, Rust profs.info.uaic.ro versus dinamice – e.g., JavaScript, PHP, Python, Ruby Dr. Sabin Sabin Buraga Dr. server de aplicații web / busaco ~ / Limbaj(e) de programare procesate prin interpretare (Perl, Python, Ruby) profs.info.uaic.ro și/sau compilare (C, C++, Rust) uzual, se preferă generarea de cod intermediar: IL (Intermediate Language) – C#, Erlang, Java, Scala,… Dr. Sabin Sabin Buraga Dr. server de aplicații web / busaco ~ / Limbaj(e) de programare procesate prin interpretare (Perl, Python, Ruby) profs.info.uaic.ro și/sau compilare (C, C++, Rust) uzual, se preferă generarea de cod intermediar: IL (Intermediate Language) – C#, Erlang, Java, Scala,… Dr. Sabin Sabin Buraga Dr. mai recent, în momentul rulării: Just-in-Time (JIT) în contextul Web: JavaScript, PHP 8, TypeScript server de aplicații web / busaco ~ / API de bază contribuie la „puterea” limbajului și profs.info.uaic.ro a serverului de aplicații (via funcții/clase predefinite) Dr. Sabin Sabin Buraga Dr. server de aplicații web / busaco ~ / API de bază contribuie la „puterea” limbajului și profs.info.uaic.ro a serverului de aplicații (via funcții/clase predefinite) securitate, consistență, acces la resursele mediului de operare/rulare, Sabin Buraga Dr. asigurarea independenței de platformă etc. server de aplicații web / busaco ~ / Stocare persistentă în baze de date relaționale – folosind SQL profs.info.uaic.ro Dr. Sabin Sabin Buraga Dr. server de aplicații web / busaco ~ / Stocare persistentă în baze de date relaționale – folosind SQL profs.info.uaic.ro exemple: ADO.NET pentru ASP.NET Java – JDBC (Java DataBase Connectivity) PHP – funcții/module predefinite, plus biblioteci Sabin Buraga Dr. incorporate (SQLite + mysqli) sau diverse extensii avansat server de aplicații web / busaco ~ / Stocare persistentă în baze de date relaționale – folosind SQL profs.info.uaic.ro ORM (Object-Relational Mapping): șablonul Data Mapper Go – framework-ul Xorm Java – specificația JPA (Java Persistence API) Dr. Sabin Sabin Buraga Dr. + implementări: EclipseLink, Hibernate, OpenJPA,… Node.js – biblioteca Sequelize PHP – framework-uri: Cycle ORM, Doctrine, Propel, RedBean etc. avansat server de aplicații web / busaco ~ / Stocare persistentă în baze de date relaționale – folosind SQL profs.info.uaic.ro Active Record – șablon arhitectural utilizat în cadrul ORM pentru a încapsula într-o clasă o tabelă sau un view exemple: active_record, TypeORM (module Node.js), Castle Project (.NET), Sabin Buraga Dr. DBIx::Class (Perl), Django ORM și Orator (Python), Play Framework (Java, Scala), Rails (Ruby) server de aplicații web / busaco ~ / Stocare persistentă pe baza modelelor arborescente: XML profs.info.uaic.ro date (semi)structurate transformări în alte formate: XPath, XSLT procesări: DOM, SAX, SimpleXML etc. validări de date: DTD, XML Schema, RELAX,… Sabin Buraga Dr. interogări: XQuery cursurile viitoare avansat server de aplicații web / busaco ~ / Stocare persistentă recurgând la alte paradigme non-relaționale profs.info.uaic.ro (bazate pe grafuri și/sau cheie—valoare) distribuite la nivel de Internet, scalabile – NoSQL github.com/erictleung/awesome-nosql nosql.mypopescu.com/kb/nosql Dr. Sabin Sabin Buraga Dr. exemplificări: Cassandra, MarkLogic, MongoDB, Neo4j, OpenLink Virtuoso, Redis server de aplicații web / busaco ~ / Interacțiune Web facilitată de controale specificate profs.info.uaic.ro în cadrul codului-sursă invocat la nivel de server Dr. Sabin Sabin Buraga Dr. server de aplicații web / busaco ~ / Interacțiune Web facilitată de controale specificate profs.info.uaic.ro în cadrul codului-sursă invocat la nivel de server se pot emula câmpuri din formularele HTML și/sau oferi noi controale interactive – e.g., calendar, slideshow,… Dr. Sabin Sabin Buraga Dr. generare de cod procesabil la nivel de client (front-end) componente Web (HTML + CSS + JavaScript) executate de browser avansat server de aplicații web / busaco ~ / Interacțiune Web exemplificări: profs.info.uaic.ro ASP.NET (<asp:control> – e.g., FileUpload, ListBox, Table,...) framework-ul PRADO (PHP) formidable, form-data, forms – module Node.js platforma Java: specificația JSF (Jakarta Server Faces) Dr. Sabin Sabin Buraga Dr. server de aplicații web / busaco ~ / Interacțiune Web încurajarea folosirii de machete de vizualizare (templates) profs.info.uaic.ro pe baza unui procesor specific Web template system Dr. Sabin Sabin Buraga Dr. server de aplicații web / busaco ~ / Interacțiune Web Web template system profs.info.uaic.ro utilizând specificații de prezentare a conținutului (Web template), datele persistente (e.g., preluate dintr-o bază de date sau fișiere) sunt folosite de un procesor (template engine) Sabin Buraga Dr. pentru a genera documente HTML ori alte reprezentări în alte formate <!-- macheta HTML --> <h1 class="profile">User profile: [@username]</h1> <img src="[@photoURL]" alt="photo"/> <div class="identity">[@firstNameimplementare] [@lastName]</div> / <div class="location">[@location]</div> User profile: Tux Tuxy Pinguinesscool busaco ~ // program PHP: procesarea machetei / $profile = new Template ('templates/profile.tpl'); Romania $profile->set ('username') = 'Tux'; $profile->set ('photoURL') = 'imgs/tux.svg'; $profile->set ('firstName') = 'Tuxy'; $profile->set ('lastName') = 'Pinguinesscool'; $profile->set ('location') = 'Romania'; profs.info.uaic.ro exemplu: specificația de prezentare a conținutului (HTML template – .tpl) include nume de variabile – aici, de forma [@variabilă] – ce vor fi înlocuite cu valorile efective Sabin Buraga Dr. preluate din program în urma rulării componentei de procesare a machetelor de vizualizare server de aplicații web / busaco ~ / Interacțiune Web Web template system profs.info.uaic.ro la nivel de server Apache FreeMarker (Java), Blade (PHP), Haml (Ruby), Mustache (C++, JS, PHP, Python, Scala,…), Pug (Node.js), Sabin Buraga Dr. Razor (.NET), Smarty (PHP), Tonic (PHP), XSLT (XML) server de aplicații web / busaco ~ / Interacțiune Web Web template system profs.info.uaic.ro la nivel de client disponibile pentru JavaScript: doT, EJS, Handlebars, Mustache.js, Nunjucks,… Sabin Buraga Dr. github.com/sorrycc/awesome-javascript#templating-engines avansat server de aplicații web / busaco ~ / Interacțiune Web managementul cookie-urilor și sesiunilor profs.info.uaic.ro via structuri/tipuri de date – diverse exemplificări: clasa HttpSession (ASP.NET), interfața HttpSession (servlet-uri Java), HTTP::Session (Perl), session (Flask – framework Python), web.session (web.py), HttpFoundation (componentă Symfony – framework PHP), Sabin Buraga Dr. clasa SessionComponent (CakePHP), tabloul session (Ruby on Rails), play.mvc.Http.Cookie (Play pentru Java/Scala), sessions (Gorilla – Go) cookie-parser și express-session (module Node.js pentru Express) server de aplicații web / busaco ~ / Interacțiune Web transfer asincron de date via suita de tehnologii Ajax profs.info.uaic.ro vezi cursurile viitoare eventual, via framework-uri/module/clase adiționale Sabin Buraga Dr. avansat server de aplicații web / busaco ~ / Suport acordat ingineriei software stimularea/impunerea folosirii unor șabloane de proiectare (arhitecturale, comportamentale, structurale, profs.info.uaic.ro vizând procesările concurente și/sau distribuite și altele) AMI (asynchronous method invocation), broker, CBD (components-based development), DAO (data access object), DDD (domain-driven design), DTO (data transfer object), façade, Sabin Buraga Dr. MOM (message-oriented middleware), microservice, MV*, publish-subscribe, SOA (service-oriented architecture), singleton,… proiectare / busaco ~ / profs.info.uaic.ro exemplificare: anti-șablonul Spaghetti Code uzual, specific aplicațiilor