Krótki i szybki przegląd frameworków

Podobne dokumenty
Wprowadzenie do framework a Symfony

Wprowadzenie do framework a Symfony

Wprowadzenie do framework a Symfony

PHP zaawansowane programowanie

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy

Aplikacje WWW - laboratorium

Program szkolenia: Symfony, nowoczesny framework PHP

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE

Specyfikacja implementacyjna aplikacji serwerowej

media Blitz wydajne sytemy szablonów

Aplikacje WWW - laboratorium

SZKOLENIE TWORZENIE SYSTEMÓW

Program szkolenia: REST i Microservices w PHP

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

MVC w praktyce tworzymy system artykułów. cz. 1

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

1 Wprowadzenie do J2EE

I.Wojnicki, Tech.Inter.

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Bazy Danych i Usługi Sieciowe

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Wprowadzenie do Doctrine ORM

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

Agenda. Wstęp Zmiany Co nowego dla web developerów? Nowości we front-end developingu Czego spodziewać się może końcowy użytkownik?

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP

Web frameworks do budowy aplikacji zgodnych z J2EE. Jacek Panachida

Aplikacje webowe z wykorzystaniem Node.js oraz Express

Zagadnienia. Konstrukcja bibliotek mysql i mysqli w PHP. Dynamiczne generowanie stron. Połączenie, zapytanie i sesja

Szkolenie wycofane z oferty

ZAKŁADOWY: ZŁ WPŁACONY KRS REGON: NIP

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

PHP revisited - odświerzenie spojrzenia na programowanie w PHP

Baza danych i ORM mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Odseparowanie kodu PHP i warstwy prezentacji od dawna było celem

MVC w praktyce tworzymy system artykułów. cz. 2

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Architektura MVC w ASP.NET. Autor wykładu: Marek Wojciechowski

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Projektowanie i implementacja wysokowydajnych aplikacji w języku

Czym jest Ruby on Rails?

Szczegółowy opis zamówienia:

Podstawy wzorca MVC MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę.

Budowanie interfejsów do baz danych

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji

URL, URI różnice i podobieństwa

Web frameworks do budowy aplikacji zgodnych z J2EE

Laboratorium 6 Tworzenie bloga w Zend Framework


I.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

REFERAT O PRACY DYPLOMOWEJ

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

PRZEWODNIK PO PRZEDMIOCIE

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Django : praktyczne tworzenie aplikacji sieciowych / Antonio Mele. Gliwice, cop Spis treści

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

Ruby i Ruby on Rails. Mateusz Drożdżyński

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL.

Database Connectivity

Ruby on Rails. Supersilnik WWW. Łukasz Włodarczyk

PHP: bazy danych, SQL, AJAX i JSON

Programowanie zorientowane obiektowo. Mateusz Kołecki

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Programowanie w Ruby

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

Organizacja zajęć BAZY DANYCH II WYKŁAD 1. Plan wykładu. SZBD Oracle

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Django oczami programisty PHP

SPRING FRAMEWORK. dr inż. Jakub Chłapioski

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

REFERAT PRACY DYPLMOWEJ. Temat pracy: Projekt i realizacja warstwy serwerowej gry internetowej

AUREA BPM HP Software. TECNA Sp. z o.o. Strona 1 z 7

Czym jest jpalio? jpalio jpalio jpalio jpalio jpalio jpalio jpalio jpalio

Forum Client - Spring in Swing

Programowanie obiektowe

Internetowa ogólnopolska baza informatycznych projektów badawczych otwartej innowacji Platforma współpracy SPINACZ 1/46

Architektura mikroserwisów na platformie Spring IO

Tworzenie aplikacji internetowych na platformie JEE i PHP analiza porównawcza

Programowanie. Dodatek - uzupełnienie wiadomości. mgr inż. Krzysztof Szwarc. Sosnowiec,

Wprowadzenie do programowania aplikacji mobilnych

Programowanie w Ruby

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Nowoczesne aplikacje internetowe oparte na Seam, JSF, EJB3, JPA, AJAX

Technologie internetowe ASP.NET Core. Paweł Rajba

Programowanie internetowe

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

Patryk Jar Meet.js, Gdańsk 11 marca 2013 r. MODULARNY JAVASCRIPT

Transkrypt:

Krótki i szybki przegląd frameworków

Framework Framework to szkielet do budowy aplikacji Definiuje on strukturę aplikacji oraz mechanizm jej działania. Dostarcza zestaw komponentów i bibliotek. Programista tworzy aplikacje poprzez rozbudowę i dostosowanie poszczególnych komponentów do wymagań realizowanego projektu, tworząc gotową aplikację.

Po co? Efektywność Poprawa jakości kodu Niezawodność Szybkość (RAD) Łatwiejsze testowanie

Czemu nie? Złożoność Wydajność

Na co zwracać uwagę? MVC Czy framework wykorzystuje architekturę modelwidok-kontroler? Baza danych Czy framework wykorzystuje różne silniki bazodanowe? ORM Czy framework obsługuję mapowanie relacyjnoobiektowe? Szablony Czy framework wykorzystuje szablony?

Na co zwracać uwagę? Caching Czy framework obsługuje mechanizmy cache owania treści? Walidacja Czy framework posiada wbudowany moduł walidacyjny? Ajax Czy framework obsługuje AJAXa? Auth Module Czy obsługa autentyfikacji jest zapewniona? Moduły Czy można rozszerzyć możliwości frameworka przez dodanie RSS readera, czy modułu PDFów?

Wzorzec MVC

<?php // Łączenie i wysyłanie zapytania $link = mysql_connect('localhost', 'myuser', 'mypassword'); mysql_select_db('blog_db', $link); $result = mysql_query('select date, title FROM post', $link);?> <html> <head> <title>list of Posts</title> </head> <body> <h1>list of Posts</h1> <table> <tr><th>date</th><th>title</th></tr> <?php // Wyświetlanie rezultatów while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "\t<tr>\n"; printf("\t\t<td> %s </td>\n", $row['date']); printf("\t\t<td> %s </td>\n", $row['title']); echo "\t</tr>\n"; }?> </table> </body> </html> <?php mysql_close($link);?> MVC Przykład: płaskie PHP na

<?php // Łączenie i wysyłanie zapytania $link = mysql_connect('localhost', 'myuser', 'mypassword'); mysql_select_db('blog_db', $link); $result = mysql_query('select date, title FROM post', $link); // Wypełnianie tablicy z danymi $posts = array(); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) $posts[] = $row; mysql_close($link); // Dołączenie widoku require('view.php');?> <html> <head> <title>list of Posts</title> </head> <body> <h1>list of Posts</h1> <table> <tr><th>date</th><th>title</th></tr> <?php foreach ($posts as $post):?> <tr> <td><?php echo $post['date']?></td> <td><?php echo $post['title']?></td> </tr> <?php endforeach;?> </table> </body> </html> Kontroler index.php Widok view.php

<?php function getallposts() { }?> //Łączenie, wysyłanie zapytania, wypełnianie tablicy posts $link = mysql_connect('localhost', 'myuser', 'mypassword'); mysql_select_db('blog_db', $link); $result = mysql_query('select date, title FROM post', $link); $posts = array(); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) $posts[] = $row; mysql_close($link); return $posts; Model model.php <?php // Dołączenie modelu require_once('model.php'); // Pobranie listy postów $posts = getallposts(); // Dołączenie widoku require('view.php');?> Kontroler index.php

function getallposts() { $link = open_connection('localhost', 'myuser', 'mypassword'); $result = query_database('select date, title FROM post', 'blog_db', $link); $posts = array(); while ($row = fetch_results($result)) { } $posts[] = $row; } close_connection($link); return $posts; function open_connection($host, $user, $password) return mysql_connect($host, $user, $password); Model model.php function close_connection($link) mysql_close($link); function query_database($query, $database, $link) { mysql_select_db($database, $link); return mysql_query($query, $link); } Warstwa pośrednia do mysql function fetch_results($result) return mysql_fetch_array($result, MYSQL_ASSOC);

Dalszy podział warstwy widoku

<h1>list of Posts</h1> <table> <tr><th>date</th><th>title</th></tr> <?php foreach ($posts as $post):?> <tr> </tr> <td><?php echo $post['date']?></td> <td><?php echo $post['title']?></td> <?php endforeach;?> </table> <?php $title = 'List of Posts'; $posts = getallposts(); include(layout.php);?> <html> <head> <title><?php echo $title?></title> </head> <body> <?php include('mytemplate.php');?> </body> </html> mytemplate.php view.php layout.php widoku Dalszy podział warstwy

Object-Relational Mapping (ORM) ORM interfejs, którego zadaniem jest tłumaczenie logiki obiektowej na logikę relacyjną (by posługiwać się relacyjnymi bazami danych w sposób obiektowy). ORM składa się z obiektów definiujących metody dostępu do danych oraz pozwalających zapisać reguły biznesowe (np. automatyczne doliczanie rabatu). Warstwa pośrednicząca = oderwanie od konkretnego silnika bazodanowego Możliwość definiowania nowych akcesorów: public function getdane() { return $this->getimie().' '.$this->getnazwisko(); } Symfony wspiera domyślnie dwa ORMy: Propel oraz Doctrine.

YAML Ain't Markup Language YAML uniwersalny język formalny przeznaczony do reprezentowania różnych danych w ustrukturalizowany sposób. Przykład: PHP $house = array( family' => array( 'name' => 'Doe', 'parents' => array('john', 'Jane'), 'children' => array('paul', 'Mark', 'Simone') ), 'address' => array( 'number' => 34, 'street' => 'Main Street', 'city' => 'Nowheretown', 'zipcode' => '12345' ) ); YAML house: family: name: Doe parents: - John - Jane children: - Paul - Mark - Simone address: number: 34 street: Main Street city: Nowheretown zipcode: "12345"

Smarty przykład użycia szablonów Smarty to system szablonów dla PHP. Najczęściej używany do odseparowania wersji treści (np. wersji językowych) Oddziela treść od back-endu Zmniejsza koszt powstawania aplikacji Działa za pomocą szablonów i mapowania ich pod określoną zawartość. Jako język szablonów korzysta z pętli, zmiennych, funkcji logicznych, itp.

Smarty przykład użycia szablonów

Mechanizm cache owania Cache przyspiesza dzaiłanie strony. Zmniejsza obciążenie (głównie bazy danych) Załóżmy, że blog wyświetla zawsze ostatnie 10 wpisów. To po co za każdym razem odpytywać bazę danych po te same 10 wpisów? Także konfigurację i inne czasochłonne obliczenia trzymamy w cache (uwaga na bezpieczeństwo!) W PHPie się to czasem akcelerator nazywa.

Mechanizm cache owania APC ioncube eaccelerator Xcache Zend Opcache Openc Source, trzyma obiekty w pamięci operacyjnej Używane np. przez Facebooka Przestarzały wspierany do 2003 r.) Przestarzały (umarł w 2012 r.) Całkiem nowy i obiecujący Optymalizuje także kod PHP Dostarczony razem z PHP (od wersji 5.5)

Przegląd Frameworków http://www.phpframeworks.com/

Cake PHP

Cake PHP Open Source Wymuszone konwencje nazewnicze, wymuszona organizacja kodu i projektu Zintegrowana obsługa CRUD, Wbudowane listy kontroli dostępu, Scaffolding, Wbudowaną kontrola i walidacja formularzy, Wsparcie dla Prototype i script.aculo.us Wsparcie mechanizmu routingu Duże wsparcie użytkowników, społeczność, tutoriale Zalety: tutoriale, przykłady, silne narzędzia do generowania kodu, pluginy, wsparcie przez IRC Wady: wymuszanie nazewnictwa, wydajność

Zend http://webhosting.pl/frameworki.php.przeglad.pieciu.najpopularniejszych.narzedzi.dla. programistow.www

Zend OO, do tego Open Source Obsługuje MVC W trzy i trochę modułów (obsługa baz danych, Web services, wsparcie RAD (Rapid Application Development)) Modularny nie trzeba używać głównego silnika Wymagana znajomość wzorców projektowych Duża społeczność, świetna dokumentacja Aktualnie na SourceForge i Google Code znajduje się w sumie około 400 projektów bazujących na tej platformie i do tej pory została ona pobrana ponad 10 milionów razy Zalety: elastyczność, wsparcie społeczności, zapewniony rozwój, bardzo dobra dokumentacja Wady: stopień komplikacji, wymaga dużo czasu do opanowania

Symfony

Cechy platformy Symfony Bazuje na wzorcu projektowym MVC Niezależność od systemu bazodanowego Programowanie zorientowane obiektowo Łatwość w instalacji oraz konfiguracji na większości platform Zgodność z najlepszymi standardami oraz wzorcami budowy aplikacji internetowych Walidacja formularzy i treści Wbudowany mechanizm zarządzanie sesjami Łatwość rozbudowy oraz możliwość integracji z innymi bibliotekami Wykorzystanie technologii scaffoldingu. Wbudowana internacjonalizacja (i18n) Wbudowana ochrona przed atakami CSRF oraz XSS

Laravel

Laravel RESTful Routing Korzysta z ORMa (Eloquent) Korzysta z szablonów (Elade) Łatwe skalowanie (JSON API, RESTful, itp.) Oparty na niektórych elementach Symfony Composer Duże wsparcie społeczności Wsparcie dla refactoringu

Yii

Yii Szybkie Modułowa budowa pozwala na dołączanie tylko potrzebnych rzeczy. Do tego cache działa. Podobno AJAX też jest szybki. Bezpieczny Wbudowane walidatory wejśca, wyjścia, SQLa. Wbudowane zabezpieczenia przed SQL injection i XSS. Profesjonalny

CodeIgniter

CodeIgniter Malutki. Zajmuje tylko 500kB. Przejrzysta dokumentacja Kompatybilny z większością hostingów (wymaga PHP>= 5.1.6) Brak restrykcji co do konwencji nazw Łatwy w użyciu korzysta z MVC, ale go nie narzuca Wysoka wydajność Brak wielgachnych bibliotek Bezbolesna konfiguracja Można, ale nie trzeba korzystać z szabalonów

Phalcon Napisany w C :)

Phalcon ODM for Mongo Flash Messages Template Engine (Volt) Cache DI/IOC Pagination Events Management Annotations Encryption Security HTTP Request / Response Translations / Cookies Assets Management Escaping / Filtering Universal Auto-Loader Forms Builder / Logging Validation CLI

Wydajność

Wydajność

Wydajność

Kiedy stosować framework? Jeśli tworzymy prostą aplikację/stronę internetową składającą się z kilku(nastu) podstron, korzystającą w niewielkim stopniu z bazy danych, bez konieczności tworzenia szczegółowej dokumentacji wykorzystaj lekki framework Jeśli tworzona aplikacja jest bardziej złożona, posiada rozbudowaną warstwę reguł biznesowych i będzie potencjalnie w przyszłości wzbogacana o nowe możliwości zdecydowanie framework Jeśli tworzysz statyczną wizytówkę, z 2-3 podstronami, bez wodotrysków i zarządzania użyj raczej czystego PHP (albo nawet tylko HTML + JS)