102
Panel diskusija Usporedba web frameworka

Panel diskusija - usporedba Web frameworka (IT Showoff)

Embed Size (px)

DESCRIPTION

Kod izrade web projekta postoje razne mogućnosti odabira frameworka na kojem će se projekt bazirati. Mi smo odlučili izdvojili pet glavnih frameworka te oko njih izgraditi kvalitetnu panel diskusiju.Vjerujemo da većina developera koji će sudjelovati na IT Showoff konferenciji su barem u jednom trenutku svoje karijere radili web site ili web aplikaciju na nekom od odabranih frameworka. Isto tako, vjerojatnost da su koristili, i temeljito isprobali sve njih, je vrlo mala. Zato nam je cilj putem kompetentnih stručnjaka pokušati publici prenijeti iskustva vezana za pojedine tehnologije, njihova osnovna svojstva, prednosti i mane.Panelisti su svi od reda pravi majstori svog zanata, te će usporedno proći važna svojstva svakog frameworka i usporediti ga s drugima.

Citation preview

Page 1: Panel diskusija - usporedba Web frameworka (IT Showoff)

Panel diskusijaUsporedba web frameworka

Page 2: Panel diskusija - usporedba Web frameworka (IT Showoff)

Uvod

Page 3: Panel diskusija - usporedba Web frameworka (IT Showoff)

Ideja

• Svi su se susreli s nekim tehnologijama

• Rijetko tko je probao sve• Dovesti top stručnjake za svaku

tehnologiju

Page 4: Panel diskusija - usporedba Web frameworka (IT Showoff)

Ekipa

Page 5: Panel diskusija - usporedba Web frameworka (IT Showoff)

Mislav Marohnić / Rails

• Rails Core• Programiranje kao hobi i posao• Povijest: C++ (faks), PHP

(standardno)• Radio uglavnom za web startupe

Page 6: Panel diskusija - usporedba Web frameworka (IT Showoff)

Stjepan Zlodi / Django

• 24 sata digital Rođen u godini čovjekovog prvog

poznatog spuštanja na Mjesec Računalima se počeo baviti u

Orwellovoj godini Razvio sklonost prema RAD-u Produktivna lijenost

Page 7: Panel diskusija - usporedba Web frameworka (IT Showoff)

Hrvoje Hudoletnjak / .NET

• Novatec• Visual Basic -> ASP -> ASP.NET (c#)• Izrada poslovnih aplikacija na

internet platformi (RIA, SOA, ...)• Silverlight• MVC + HTML/Javascript• TDD, DDD, Agile

Page 8: Panel diskusija - usporedba Web frameworka (IT Showoff)

Goran Jurić / Zend Framework

• NCL Media Grupa• Prvu stranicu napravio 1998.godine• PHP-om se bavi > 8 godina • Zend Framework prati od v 0.1• Sa v1.5 započeo razvoj CMS-a za

potrebe kompanije

Page 9: Panel diskusija - usporedba Web frameworka (IT Showoff)

Zoran Regvart / Spring

• CROZ• Z80 asm/Basic, Pascal , C/C++ , PHP,

Java, Ruby, Python, C#• PHP/HTML freelancer (davno)• arhitekt @ Croz d.o.o.

www.croz.hr (predugo)

Page 10: Panel diskusija - usporedba Web frameworka (IT Showoff)

Moderator

Page 11: Panel diskusija - usporedba Web frameworka (IT Showoff)

Tomislav Car

• Infinum• ex.PHP• svašta non web (Java Micro Edition,

Flash)• Danas: Ruby on Rails

Page 12: Panel diskusija - usporedba Web frameworka (IT Showoff)

Programski jezik

Page 13: Panel diskusija - usporedba Web frameworka (IT Showoff)

Programski jezik / Rails

• Ruby dynamic & strongly typed sintaksa dizajnirana da sadrži što manje

“interpunkcije” (npr. zagrada, točke-zarez)

među nekoliko najkorištenijih skriptnih jezika na svijetu (osim u našim krajevima)

započet 1995 puts “hello world”

Page 14: Panel diskusija - usporedba Web frameworka (IT Showoff)

Programski jezik / Django

• Python 1991. Guido van Rossum I objektno i strukturirano i funkcionalno Održavajte razmak Čitljivost na razini pseudo koda Baterije uključene Vrti se na svim (glavnim) platformama

Page 15: Panel diskusija - usporedba Web frameworka (IT Showoff)

Programski jezik / .NET

• C# Statički, objektni, kompajlirani, managed▪ V3: LINQ (funkcijske karakteristike)▪ V4: dynamic (dinamički tipovi)

Common Language Runtime Predstavljen 2001

Page 16: Panel diskusija - usporedba Web frameworka (IT Showoff)

Programski jezik / .NET

• Uz C#VB.NET F# IronPython IronRuby ...

Page 17: Panel diskusija - usporedba Web frameworka (IT Showoff)

Programski jezik / ZF

• PHP dynamically typed C-like sintaksa ($, {}, ;) Kreiran 1995 (Personal Homepage Tools) 2000 – PHP 4 (Zend Engine) 2004 – PHP 5 (novi objektni model) 2009 – PHP 5.3 (namespaces, late static

binding, lambda račun,…)

<?php echo “Hello World”;?>

Page 18: Panel diskusija - usporedba Web frameworka (IT Showoff)

Programski jezik / Spring

• Java objektno-orijentirani statički prevedeni (compiled) u bytecode interpretiran u virtualnoj mašini (JVM)

[JIT!] garbage collector

Page 19: Panel diskusija - usporedba Web frameworka (IT Showoff)

Programski jezik / Spring

• ideja je izbjeći tipične programerske pogreške

• ~15 godina, Open Source (GPL) verzija 6 od 2006, zadnji update prošli

mjesec verzija 7 ove godine (invokedynamic,

closures, fork/join)

Page 20: Panel diskusija - usporedba Web frameworka (IT Showoff)

Framework

Page 21: Panel diskusija - usporedba Web frameworka (IT Showoff)

Framework / Rails

• Objavljen 2004• MVC, REST• convention over configuration• open source• cross-platform• razvojna okolina

napredni tekstualni editor Postoje i IDE-u, ali nisu toliko popularni

Page 22: Panel diskusija - usporedba Web frameworka (IT Showoff)

Performanse / Rails

• zadovoljan performansama• pruža puno mehanizama za

skalabilnost• ako nečime nisam zadovoljan, to

promijenim/popravim (Rails core contributor)

Page 23: Panel diskusija - usporedba Web frameworka (IT Showoff)

Framework / Rails

• Template sustav sličan PHP<html><%= ruby_code_here %></html>

• AJAX helpers Prototype.js/jQuery

• Ugrađena podrška za XSS CSRF SQL injection

Page 24: Panel diskusija - usporedba Web frameworka (IT Showoff)

Framework / Django

2003. 2005. - prva objava Open source (MIT) Linux, Mac, Windows, FreeBSD,

Solaris... Okruženje više razine, čisti,

pragmatični dizajn Modularnost

Page 25: Panel diskusija - usporedba Web frameworka (IT Showoff)

Framework / Django

• Skalabilnost• Cache – na razini aplikacije, procedura,

dijelova template koda• memcached, baza, memorija, datotečni sustav

• Odvojeni statični i dinamični dijelovi aplikacije

• Sigurnost• urls.py – prva linija obrane• SQL injections• XSS, CSRF

• django.contrib

Page 26: Panel diskusija - usporedba Web frameworka (IT Showoff)

Framework / Django

• MTV• Models • Templates• Views

• URL-s• Regex• Imenovanja• {% url ima_ime %}

Page 27: Panel diskusija - usporedba Web frameworka (IT Showoff)

Framework / Django

• Razvojna okolina• Python, Django, napredan editor• Ugrađeni razvojni web poslužitelj

• manage.py• syncbd, inspectdb, loaddata - dumpdata, shell, dbshell,

makemessages – compilemessages, sqlflush, sqlreset

• Posebni alati• django-command-extensions• django-debug-toolbar

Page 28: Panel diskusija - usporedba Web frameworka (IT Showoff)

Forma / Django

Page 29: Panel diskusija - usporedba Web frameworka (IT Showoff)

Forma / Django

Page 30: Panel diskusija - usporedba Web frameworka (IT Showoff)

Framework / ASP.NET

• 2001. v1, 2010 v4• WebForms, MVC, REST-style

(OpenRasta)• konfiguracija ili/i konvencija• Open source, MS licenca• Windows (IIS)• Implementacija CLI specifikacije

Mono, veći dio .NET Framoworka radi na Linuxu (MVC radi)

Page 31: Panel diskusija - usporedba Web frameworka (IT Showoff)

Framework / ASP.NET

• visoke performanse, jednostavan multithreading

• Osmišljen na skalabilnost• Veliki framework, pokriva enterprise

scenarije WCF, WF, WPF, Azure

• MVC pogodan za web2.0 Stackoverflow.com: 1 mil. hits / dan – 1

web server, 1 db server MySpace.com

Page 32: Panel diskusija - usporedba Web frameworka (IT Showoff)

Framework / ASP.NET

• View engines: WebForms, Spark, nHaml, nVelocity, ...

• ASP.NET AJAX, jQuery• Security

XSS, CSRF, SQL injection – većim dijelom ugrađeno u framework

U v4 automatska enkodiranje za html

Page 33: Panel diskusija - usporedba Web frameworka (IT Showoff)

Framework / ZF

• Razvoj započet 2006 godine• MVC paradigma, ali i set nezavisnih

komponenti• Puno više konfiguracije (od

konvencije)• Zahtijeva PHP 5.2.0 ili noviji • open source (New BSD licenca)

▪ svi kontributori potpisuju CLA

Page 34: Panel diskusija - usporedba Web frameworka (IT Showoff)

Performanse / ZF

• Hello world benchmark

• Opcode cache (APC) neophodan

Framework Req/s

PHP 1320

Cake 1.1.19 118

Symphony 1.1.0 67.41

Zend Framework 1.6 77.85

Page 35: Panel diskusija - usporedba Web frameworka (IT Showoff)

Performanse / ZF

• Zend_Cache Frontend: Core, File, Class,

Frontend_Output, Page Backend: File, APC, Xcache,Memcached,

Sqlite, TwoLevels

Page 36: Panel diskusija - usporedba Web frameworka (IT Showoff)

Skalabilnost / ZF

• Skalabilnost Podrška za pohranu sessiona u

memcached ili bazu podataka Zend_Db nema podršku za rad sa više

instanci baze podataka (master – slave replikacije)

Dijelove frameworka je moguće prilagoditi (i pojednostaviti) bez diranja core-a

Page 37: Panel diskusija - usporedba Web frameworka (IT Showoff)

Templating / ZF

• View & Layout Two-Step View Pattern

• Zend_View je moguće zamijeniti sa implementacijom po želji Smarty?

• ZendX_Jquery komponenta• Podrška za escape-anje prilikom

ispisa• View Helperi

Page 38: Panel diskusija - usporedba Web frameworka (IT Showoff)

Framework / Proljeće

• ~2002/3 g. trenutna verzija 3.0

• Open Source, Apache License 2.0• Plain Old Java Objects (POJO)• Inversion Of Control (IOC),

Dependency Injection (DI)• Aspect-oriented programming (AOP)• Konfiguracija i konvencije

Page 39: Panel diskusija - usporedba Web frameworka (IT Showoff)

Spring Web Stack

Spring Core

Spring MVC

Spring Web Flow

Spring JavaScript

Spring Security

Spring FacesSpring BlazeDS

Integration

Page 40: Panel diskusija - usporedba Web frameworka (IT Showoff)

Framework / Spring

• jedna od komponenti Spring Framework-a

• izgrađen nad JEE standardima i best practices

• Servlet (standalone) i Portlet varijante (portal)

• Representational State Transfer (REST)

• Konvencija naspram konfiguracije

Page 41: Panel diskusija - usporedba Web frameworka (IT Showoff)

Framework / Spring

• Podrška za view tehnologije templateing (od JSP, freemarker, Facelets

do Tiles, Sitemesh) razni output-i (PDF, Excel, RTF, XML,

JSON...)• za AJAX @MVC support ili DWR

(potpunije)• (Spring) Security

Autentikacija / Autorizacija (RBAC) ACL

Page 42: Panel diskusija - usporedba Web frameworka (IT Showoff)

Obrada podataka / Spring

• custom validatori, bean validation (JSR-303)

• fleksibilne validacijske poruke• podrška za bindanje i transformaciju

podataka (spring taglib, property editors, type converters)

Page 43: Panel diskusija - usporedba Web frameworka (IT Showoff)

Framework / Spring

• nasljeđuje izvrsne performanse JVM-a / JEE-a

• horizontalna i vertikalna skalabilnost (jasno ovisi o aplikaciji)

• development proces je izuzetno produktivan

• application serveri se bave resursima (connection pool, transaction management, clustering, load balancing)

Page 44: Panel diskusija - usporedba Web frameworka (IT Showoff)

Obrada podataka / Form

<html><body> <form:form modelAttribute="account" method="post"> <p> <form:label for="name" path="name" cssErrorClass="error">Name</...> <form:input path="name" /> <form:errors path="name" /> </p> <p> <form:label for="balance" path="balance" cssErrorClass="error">Balance</...> <form:input path="balance" /> <form:errors path="balance" /> </p> <p> <input type="submit" /> </p> </form:form></body></html>

Page 45: Panel diskusija - usporedba Web frameworka (IT Showoff)

Obrada podataka / Modelpublic class Account {

private Long id;

@NotNull@Size(min=1, max=25)private String name;

@NotNull@NumberFormat(style=Style.CURRENCY)private BigDecimal balance = new

BigDecimal("1000");

// getteri setteri...}

Page 46: Panel diskusija - usporedba Web frameworka (IT Showoff)

Obrada podataka / Controller@Controller@RequestMapping(value = "/account")public class AccountController {

@Autowired private AccountDao dao;

@RequestMapping(method = RequestMethod.POST) public String create(@Valid Account account, BindingResult result) { if (result.hasErrors()) { return "account/createForm"; }

dao.create(account);

return "redirect:/account/" + account.getId(); }

@RequestMapping(value = "/account/{id}" method = RequestMethod.GET) public Account create(Long id) { return dao.read(id); }}

Page 47: Panel diskusija - usporedba Web frameworka (IT Showoff)

Pristup bazi podataka

Page 48: Panel diskusija - usporedba Web frameworka (IT Showoff)

Baza podataka / Rails

• ORM ActiveRecord

• Nije nužan, po novome je relativno jednostavno ugraditi drugi ORM DataMapper, Sequel, MongoMapper...

• MySQL, PostgreSQL, SQLite• druge relacijske baze podržane kroz

adaptere instalirane dodatno

Page 49: Panel diskusija - usporedba Web frameworka (IT Showoff)

Baza podataka / Rails

• podrška za validacije• laka izgradnja kompleksnih HTML

forma

Page 50: Panel diskusija - usporedba Web frameworka (IT Showoff)

Baza podataka / Django

PostgreSQL, MySQL, SQLite, Oracle Django ORM SQLAlchemy, Storm

Firebird, MS-SQL, DB2 CouchDB, MongoDB Migracija

django-evolution, south, dmigrations

Page 51: Panel diskusija - usporedba Web frameworka (IT Showoff)

Rad s podacima / Django

Page 52: Panel diskusija - usporedba Web frameworka (IT Showoff)

Baza podataka / .NET

• ORM od MSa Entity Framework , Linq2SQL

• Open Source Nhibernate, ActiveRecord, SubSonic, ...

• Komercijalni LLBGen, LightSpeed, ...

• Baze MSSQL, Oracle, MySQL, PostgreSQL, SqlLite,... (L2S

samo MSSQL, EF i Oracle)• LINQ podržavaju svi:

Var comments = from c in db.Comments where c.Post.Author == „John Doe” select c;

Page 53: Panel diskusija - usporedba Web frameworka (IT Showoff)

Baza podataka / .NET

• Automatska client i server validacija• DynamicData Scaffolding framework• Templating engine za kreiranje View-

ova prema danom modelu• MVC data binderi, custom binderi

(Castle)

Page 54: Panel diskusija - usporedba Web frameworka (IT Showoff)

Baza podataka / ZF

• Zend_Db – Database abstraction layer Lazy loading konekcija na bazu Parametrizirani upiti Transakcije Profiler Paginator

• Zend_Db_Table Table & Row Data Gateway Pattern

• MySQL, Sqlite, MsSQL, Oracle, Postgres

Page 55: Panel diskusija - usporedba Web frameworka (IT Showoff)

Baza podataka / ZF

Page 56: Panel diskusija - usporedba Web frameworka (IT Showoff)

Baza podataka / ZF

• Validacija podataka vezana uz forme• Zend_Form

Elementi Dekoratori Validatori

• Nažalost ne postoji mogućnost automatskog kreiranja administracije (CRUD) iz modela

• Doctrine kao ORM

Page 57: Panel diskusija - usporedba Web frameworka (IT Showoff)

Baza podataka / Spring

• od JDBC (osnovni Java API)• do Hibernate (fullblown ORM)• Konzistentni API / Exception handling• Template Method Pattern pristup• Deklarativni transaction

management

Page 58: Panel diskusija - usporedba Web frameworka (IT Showoff)

Spring + Hibernate

@Repositorypublic class HibernatePersonDao extends HibernateDaoSupport implements AccountDao {

public void create(Account account) { getHibernateTemplate().save(account); }

public Account read(Long id) { return getHibernateTemplate().load(Account.class, id); }

public void update(Account account) { getHibernateTemplate().update(account); }

public void delete(Account account) { getHibernateTemplate().delete(account); }}

Page 59: Panel diskusija - usporedba Web frameworka (IT Showoff)

Testing

Page 60: Panel diskusija - usporedba Web frameworka (IT Showoff)

Testing / Rails

• Rails ohrabruje testing• unit testing (models), functional

testing (controllers), performance testing

• 3rd party alati za ubrzavanje testova• jednostavna sintaksa

osnovni test se može napisati u 2-3 linije• ovisno o testing frameworku, testovi

mogu biti vrlo opisni (pri čitanju)

Page 61: Panel diskusija - usporedba Web frameworka (IT Showoff)

Testing / Django

test.py u svakoj aplikaciji doctest

pythonic unittest

JUnit like django.test.client.Client

jednostavni web klijent

Page 62: Panel diskusija - usporedba Web frameworka (IT Showoff)

doctest

Page 63: Panel diskusija - usporedba Web frameworka (IT Showoff)

unittest

Page 64: Panel diskusija - usporedba Web frameworka (IT Showoff)

django.test.client.Client

Page 65: Panel diskusija - usporedba Web frameworka (IT Showoff)

Testing / .NET

• MSTest, nUnit, xUnit• MSpec, NSpec, Nbehave

ala Ruby Cucumber • Test Runners, CI• Mocking i Stubing:

Moq, Rhino Mocks, Type Moq• IoC/DI (StructureMap, Unity, AutoFac,

Castle Winsdor,...) Za bolji dizajn i arhitekturu (SOLID

principi)

Page 66: Panel diskusija - usporedba Web frameworka (IT Showoff)

Testing / ZF

• Prošireni PHPUnit (Controller_Test_Case) PHPUnit test case sa dodacima za

testiranje MVC dijelova frameworka Inspekcija DOM-a koristeći CSS

selektore:

$this->assertQueryCount('form#loginForm', 1);

• Zend_Test_PHPUnit_Db

Page 67: Panel diskusija - usporedba Web frameworka (IT Showoff)

Testing / Spring

• podrška za Junit ali slobodno je koristiti neki drugi

(TestNG)• unit testing• function testing (+populacija (in

memory) baze)• svi moderni alati za testiranje

mocks, stubs, coverage...

Page 68: Panel diskusija - usporedba Web frameworka (IT Showoff)

Reusability

Page 69: Panel diskusija - usporedba Web frameworka (IT Showoff)

Reusability / Rails

• pluginovi• “Rails Engines” - vertical slices• extra mounted frameworks

Page 70: Panel diskusija - usporedba Web frameworka (IT Showoff)

Reusability / Django

Django projekt se sastoji od aplikacija Dobro koncipirane aplikacije se mogu

koristiti u bilo kojem projektu Modeli, template, url-ovi… Primjer projekta: pip install -r

requirements.txt Middleware Template tagovi

Page 71: Panel diskusija - usporedba Web frameworka (IT Showoff)

Reusability / .NET

• ASP.NET Custom Controls – resuable• MVC Html Helpers• Veliki broj open source i

komercijalnih biblioteka gotovih komponenti CodePlex.com

Page 72: Panel diskusija - usporedba Web frameworka (IT Showoff)

Reusability / ZF

• Controller Pluginovi ,action i view helperi se nalaze u vlastitom “namespace-u”

• Postoji podrška za module no nisu baš najsretnije riješeni

Page 73: Panel diskusija - usporedba Web frameworka (IT Showoff)

Reusability / Spring

• mnogi Java projekti nude integriraciju sa Spring Framework-om (npr.:) validacije (Hibernate Validation) AJAX (DWR) WS-* / SOAP (Apache CXF)

• generalno, dobar dio kôda se generalizira i iskoristi na slijedećem projektu razni util-*, validation-*, conf-* i sl.

Page 74: Panel diskusija - usporedba Web frameworka (IT Showoff)

Razvoj

Page 75: Panel diskusija - usporedba Web frameworka (IT Showoff)

Razvoj / Rails

• troškovi razvoja mali• Ruby profesionalci su često skupi• Ruby programeri slabo dostupni u

Hrvatskoj i Sloveniji

Page 76: Panel diskusija - usporedba Web frameworka (IT Showoff)

Učenje / Rails

• dokumentacija Railsa je u početku bila jedna od velikih mana, ali danas je jako dobra

• “learning curve” - lagan• community je obilan kvalitetnim

blogovima i screencastovima

Page 77: Panel diskusija - usporedba Web frameworka (IT Showoff)

Razvoj / Django

Troškovi razvoja Razvojni alati od 0 kn Produkcijska okolina od 0 kn

Troškovi programera Isplati se platiti više

Dostupni programeri Malo ih je Laka prilagodba

Page 78: Panel diskusija - usporedba Web frameworka (IT Showoff)

Učenje / Django

Learning curve– Potrebna predznanja

Dokumentacija– http://docs.djangoproject.com– http://djangobook.com/– http://diveintopython.org/

Zajednica– http://djangopeople.net/

Page 79: Panel diskusija - usporedba Web frameworka (IT Showoff)

Razvoj / .NET

• Visaul Studio Express 2008 – besplatan Vrhunski, najbolji IDE ;) Resharper, CodeRush, ... MonoDevelop na Linuxu

• MS SQL Server Express – besplatan• Hosting:

Shared: od 5$/mj (hr: cca 200-300 kn/god) VPS: od 15$/mj BizSpark, WebSpark programi (besplatne

licence)

Page 80: Panel diskusija - usporedba Web frameworka (IT Showoff)

Učenje / .NET

Potrebno poznavati OOP ASP.NET

mogućnost Mouse Driven Developmenta ASP.NET WebForms za Windows

programere MSDN Library

300 namespaceova, 14 000 klasa, 70 000 metoda

Specijalizacija za web, win, data, ... Mnoštvo video tutoriala

(www.asp.net)

Page 81: Panel diskusija - usporedba Web frameworka (IT Showoff)

Razvoj / ZF

• Zend Studio 399$ (godinu dana)

• Još uvijek relativno mali broj programera s naprednim poznavanjem frameworka

• Za razliku od drugih PHP frameworka iza ZF-a stoji kompanija Symphony i Solar su više-manje one-

man band projekti

Page 82: Panel diskusija - usporedba Web frameworka (IT Showoff)

Učenje / ZF

• Krivulja učenja je dosta strma Neophodno dobro poznavanje OOP-a

• Dokumentacija Solidna, ali mogla bi biti i bolja Ponekad neophodno zaviriti i ispod haube

• IDE: Zend Studio, Netbeans, ... Autocomplete!

• Community Blogovi, mailing lista, Confluence wiki

Page 83: Panel diskusija - usporedba Web frameworka (IT Showoff)

Razvoj / Spring

• razvoj je nešto sporiji u početku (ukoliko se ne nasljeđuje znanje) primjeri sa predhodnog projekta npr.

• na tržištu postoji puno Java programera nažalost vrlo malo gurua

• Java developeri voze dobra kola napunjena manekenkama

Page 84: Panel diskusija - usporedba Web frameworka (IT Showoff)

Učenje / Spring

• u CROZ-u za 2-3 tjedna developer je produktivan naravno ovisno o predznanju - inhouse tečaji,

mentorstvo• barem 3 state-of-the-art razvojna alata

Eclipse (SpringSource Tool Suite), Idea, NetBeans

• nevjerojatno (za developere) ažurna i potpuna dokumentacija

• pregršt blog-ova, izvrstan forum, plativi support

Page 85: Panel diskusija - usporedba Web frameworka (IT Showoff)

Top lista nadrealista

Page 86: Panel diskusija - usporedba Web frameworka (IT Showoff)

Top 5 + / Rails

1. “opinionated”2. RESTful konvencije3. form builder4. ActiveRecord5. caching helpers

Page 87: Panel diskusija - usporedba Web frameworka (IT Showoff)

Top 5 - / Rails

1. nije za sve aplikacije2. do nedavno su se koristile loše

JavaScript prakse3. nije dobar za početnike u web

developmentu4. “skriva” neke mogućnosti relacijskih

baza5. nije optimalan za izgraditi aplikaciju

na “legacy” bazama

Page 88: Panel diskusija - usporedba Web frameworka (IT Showoff)

Top 5 + / Django

1. Kompletno rješenje2. Kvaliteta izrade3. Admin4. URL-ovi5. Dokumentacija

Page 89: Panel diskusija - usporedba Web frameworka (IT Showoff)

Top 5 - / Django

1. Slaba podrška kod hosting providera2. (Pre)dinamični razvoj3. Mali broj raspoloživih programera4. Ne postoji Django IDE5. Ne ide bez komandnije linije

Page 90: Panel diskusija - usporedba Web frameworka (IT Showoff)

Top 5 + / .NET

1. C# (OOP, LINQ, dynamic)2. Visual Studio 2010 + Resharper3. Brzina i skalabilnost4. RAD: WebForms vs MVC5. Silverlight

Page 91: Panel diskusija - usporedba Web frameworka (IT Showoff)

Top 5 - / .NET

1. Kompleksna konfiguracija, malo konvencije

2. Over-engineered3. Zatvorenost frameworka - tight

coupling4. MSDN vs ALT.NET: 5. Slaba navika open source-anja

Page 92: Panel diskusija - usporedba Web frameworka (IT Showoff)

Top 5 + / ZF

1. Prilagodljivost2. Velik broj komponenti i podržanih

servisa3. Razdrađena podrška za caching4. Backward compatibility5. Baratanje formama

Page 93: Panel diskusija - usporedba Web frameworka (IT Showoff)

Top 5 - / ZF

1. Podrška za drop-in module2. Punokrvi ORM (Doctrine u 2.0)3. Generiranje admin sučelja4. Neke komponente nisu održavane5. Službena podrška za Dojo ?!?

Page 94: Panel diskusija - usporedba Web frameworka (IT Showoff)

Top 5 + / Spring

1. Loose coupling (DI, POJO) = Maintainability

2. REST podrška u v33. Auto konfiguracija (konvencije)4. Spring Roo = Rails kakav bi

Springovci napisali5. Web Flow = podrška za kompleksne

forme, wizardi, tokovi ekrana

Page 95: Panel diskusija - usporedba Web frameworka (IT Showoff)

Top 5 - / Spring

1. Količina tehnologije / frameworka / opcija / troslovnih akronima za pohvatati

2. Hosting? (AppEngine)3. Sloboda developera da brljavi (ako

uspoređujemo sa striktnim konvencijama drugih frameworka)

4. @Hell - više anotacija nego kôda5. XML hell - više XML-a negko kôda

(manjak primjene konvencija)

Page 96: Panel diskusija - usporedba Web frameworka (IT Showoff)

Završna misao

Page 97: Panel diskusija - usporedba Web frameworka (IT Showoff)

Rails

• stavite framework na probnu vožnju na nekom konkretnom problemu.

• ne vjerujte popularnosti, samo dojmu koji steknete u tom pokusu.

Page 98: Panel diskusija - usporedba Web frameworka (IT Showoff)

Django

• Django je cjelovito rješenje, ali bilo koji modul se može zamijeniti bez da se ostatak konstrukcije sruši

• Django je moćno jednostavan. Za sve ostalo...

$ python>>> import this

Page 99: Panel diskusija - usporedba Web frameworka (IT Showoff)

ASP.NET

• Framework prilagođen za enterprise korporativne scenarije i za web 2.0 start-upove

• RIA sa Silverlightom• Slušati zajednicu, pridonositi,

pokušati pratiti izdavanje novih frameworka

Page 100: Panel diskusija - usporedba Web frameworka (IT Showoff)

Zend Framework

• Odabir frameworka je dugoročna investicija

• Odličan izbor za sve koji traže fleksibilnost i sigurnost

• Mogućnost korištenja dijelova frameworka kao zasebnih komponenti je veliki plus

• Još uvijek nisam požalio

Page 101: Panel diskusija - usporedba Web frameworka (IT Showoff)

Spring

• de facto Java standard za razvoj (i web) aplikacija

• enterprise grade što zapravo znači best-practices

Page 102: Panel diskusija - usporedba Web frameworka (IT Showoff)

Pitanja publike