View Full Version : Tecnologie per il web, quale scegliere?
Ciccio17
14-12-2010, 19:48
Salve,
con il mio team ci troviamo di fronte alla scelta della tecnologia da utilizzare per un servizio da offrire su web e stiamo quindi valutando pro e contro di alcune alternative: php, j2ee o .net.
Quale scegliere e perchè?
Mi piacerebbe sentire qualche considerazione - magari qualche esperienza diretta - anche da parte vostra.
Qualche ipotesi di partenza:
-in tutti e 3 i casi dovremmo fare un periodo piu o meno lungo di formazione e studio della tecnologia in questione
-ipotizziamo un utilizzo commerciale, quindi anche nel caso di php+mysql avremmo i costi delle licenze (da quantificare)
-ovviamente cerchiamo una soluzione scalabile e manutenibile, niente "accrocchi"
-non mi interessano proclami del tipo "a morte M$, viva l'open-source..."
grazie a chi vorrà dare un contributo
bye
Kralizek
14-12-2010, 19:56
alla fine tutte le tecnologie da te elencate, chi più chi meno, copre dal punto di vista tecnico i requisiti da te esposti.
Il problema è sulle licenze e sulla capacità di trovare hosting decenti.
da quel che so hosting java sono rarissimi. asp.net meglio. php il campione.
lato sviluppo: java ha eclipse che è buono. .net ha visual studio che reputo il migliore. php, notepad :trollface: .
integrazione: imho vince a man basse .net. lo stesso know-how ti permette di lavorare su web, mobile e con silverlight le RIA sono ad un tiro di schioppo. php è limitato al web. java, forte del suo "compile once, run everywhere", ti permetterebbe di girare la tua applicazione web su un cellulare, ma poi devi vedere se ti serve veramente (ok scusate la trollata).
librerie terze: java e php sono molto forti perchè ci sono miliardi di librerie OS. .NET ha una base direttamente da MS e tanti progetti satellite che sono port da Java.
documentazione: non conosco gli altri ma per .net, il sito msdn è molto completo e google ritorna sempre una quantità di blog/articoli molto utili a risolvere quasi la totalità dei problemi.
tomminno
15-12-2010, 07:58
Secondo me la risposta è: dipende da che tipologia di sito dovete realizzare, se è solo un sito o qualcosa che deve integrarsi in un sistema più grande.
Per la mia esperienza, j2ee vale la pena usarlo solo per progetti molto grandi (tra l'altro dovendo interrogare un webservice io non ho trovato il modo di passare la soap authentication...), in tutti gli altri casi con .net fai molto prima e non senti la mancanza di niente, oltretutto hai il vantaggio di avere un unico ambiente ben integrato.
Per php ormai l'ho abbandonato da un pezzo, c'è un caos di librerie e quello che cerchi è sempre in quella che non hai adottato fin dal principio...
Secondo me la risposta è: dipende da che tipologia di sito dovete realizzare, se è solo un sito o qualcosa che deve integrarsi in un sistema più grande.
Per la mia esperienza, j2ee vale la pena usarlo solo per progetti molto grandi (tra l'altro dovendo interrogare un webservice io non ho trovato il modo di passare la soap authentication...), in tutti gli altri casi con .net fai molto prima e non senti la mancanza di niente, oltretutto hai il vantaggio di avere un unico ambiente ben integrato.
Per php ormai l'ho abbandonato da un pezzo, c'è un caos di librerie e quello che cerchi è sempre in quella che non hai adottato fin dal principio...
Come non concordare con tomminno.
Dipende, sempre e solo dipende.
Per la mia posso dirti che, PRIMA di guardare il linguaggio (e quale tecnologia usare), guarda il BDMS; lascia da parte MySQL e concentrati su qualcosa di più decente (PostgreSQL e FireBird sono due ottime alternative OS e ovviamente gratuite; se vuoi invece pagare, SQL Server è il top sicuramente); questo perché alla base di una Web App di successo c'è una Base di Dati di successo e con MySQL (soprattutto con MyISAM partiresti già con il gesso ai piedi).
Struts2 (Java) è una ottima scelta; JDBC ti permette di gestire tutte le connessioni alle principali basi di dati. Forse è meno immediato degli altri da imparare, però garantisce robustezza e flessibilità.
ASP.NET (MVC) con .NET 4 non l ho mai usato (mi sto avvicinando ora) e ti assicuro che VS è una favola di IDE; più semplice da imparare rispetto Struts2 e come sopra è corredato da una serie impressionante di librerie; il Visual Web Developer 2010 Express è anche gratuito.
PHP? Per PHP c'è Netbeans (per rispondere al fatto che non ci siano IDE) che è ottimo; il problema come cita appunto tomminno è la mancanza di librerie/framework complete.
O vai di symfony, CodeIgniter o Zend (anche se quest'ultimo lo considero il peggiore FW PHP sul mercato); ma comunque alcune cose dovrai andare a scrivertele e/o prenderle altrove. Se vuoi buttarti su PHP io consiglio CI (CodeIgniter) tutta la vita.
cdimauro
15-12-2010, 13:08
Aggiungerei anche Python con Django, che sta avendo un notevole impulso grazie a Google e al suo Google App Engine. ;)
DioBrando
15-12-2010, 14:28
Come non concordare con tomminno.
Dipende, sempre e solo dipende.
Per la mia posso dirti che, PRIMA di guardare il linguaggio (e quale tecnologia usare), guarda il BDMS; lascia da parte MySQL e concentrati su qualcosa di più decente (PostgreSQL e FireBird sono due ottime alternative OS e ovviamente gratuite; se vuoi invece pagare, SQL Server è il top sicuramente); questo perché alla base di una Web App di successo c'è una Base di Dati di successo e con MySQL (soprattutto con MyISAM partiresti già con il gesso ai piedi).
Struts2 (Java) è una ottima scelta; JDBC ti permette di gestire tutte le connessioni alle principali basi di dati. Forse è meno immediato degli altri da imparare, però garantisce robustezza e flessibilità.
ASP.NET (MVC) con .NET 4 non l ho mai usato (mi sto avvicinando ora) e ti assicuro che VS è una favola di IDE; più semplice da imparare rispetto Struts2 e come sopra è corredato da una serie impressionante di librerie; il Visual Web Developer 2010 Express è anche gratuito.
PHP? Per PHP c'è Netbeans (per rispondere al fatto che non ci siano IDE) che è ottimo; il problema come cita appunto tomminno è la mancanza di librerie/framework complete.
O vai di symfony, CodeIgniter o Zend (anche se quest'ultimo lo considero il peggiore FW PHP sul mercato); ma comunque alcune cose dovrai andare a scrivertele e/o prenderle altrove. Se vuoi buttarti su PHP io consiglio CI (CodeIgniter) tutta la vita.
Struts dubito la stessa integrazioni con i tool di sviluppo Java al pari di Visual Studio+MVC.
Il primo incontro effettivo con .NET è stato ASP.NET ma devo dire che MVC è tutta un'altra cosa. Il pattern rivisitato del Model-View-Controller funziona davvero bene.
La curva d'apprendimento è secondo me un po' più ripida rispetto ad usare ASP.NET ma si evita a monte di fare porcherie da spaghetti-coding.
Oltretutto nella terza release che è appena giunta alla RC2 spariscono elementi sintattici (che io trovo piuttosto odiosi) permettendo di costruire le viste ancora più rapidamente.
Per un'applicazione verticale .NET è fortemente consigliato, poi bisogna capire che necessità avete voi anche in termini di numero di utenti e transazioni...
Struts dubito la stessa integrazioni con i tool di sviluppo Java al pari di Visual Studio+MVC.
Eclipse.
DioBrando
15-12-2010, 15:16
Eclipse.
Eclipse ha un sistema di versioning pari a TFS su Visual Studio/.NET?
mmm mi permetto di dubitare :)
Ed il GUI designer? Ero rimasto a quell'obbrobrio che montava di default con promesse di porting di Matisse da Netbeans...
tomminno
15-12-2010, 15:16
La curva d'apprendimento è secondo me un po' più ripida rispetto ad usare ASP.NET ma si evita a monte di fare porcherie da spaghetti-coding.
Lo spaghetti code lo trovi nell'MVC e non in ASP.NET classico, in quanto nell'MVC devi scrivere codice insieme ad html cosa che non avviene mai con ASP.NET.
Scrivere spaghetti code in ASP.NET classico è un pò come usare goto in C#: è qualcosa di profondamente malsano.
Il vantaggio dell'MVC sta in applicativi un pò più complessi dove la mancanza dell'ereditarietà delle pagine aspx si fa sentire, per cui tramite l'MVC sei in grado di dirottare su una Vista differente la richiesta mentre con ASP.NET classico il punto di partenza è la pagina.
Eclipse ha un sistema di versioning pari a TFS su Visual Studio/.NET?
mmm mi permetto di dubitare :)
Ed il GUI designer? Ero rimasto a quell'obbrobrio che montava di default con promesse di porting di Matisse da Netbeans...
GUI Designer per una Web Application? :D
Il sistema di versioning non l ho mai usato su Eclipse, non saprei dirti.
DioBrando
15-12-2010, 15:27
Lo spaghetti code lo trovi nell'MVC e non in ASP.NET classico, in quanto nell'MVC devi scrivere codice insieme ad html cosa che non avviene mai con ASP.NET.
Scrivere spaghetti code in ASP.NET classico è un pò come usare goto in C#: è qualcosa di profondamente malsano.
Il vantaggio dell'MVC sta in applicativi un pò più complessi dove la mancanza dell'ereditarietà delle pagine aspx si fa sentire, per cui tramite l'MVC sei in grado di dirottare su una Vista differente la richiesta mentre con ASP.NET classico il punto di partenza è la pagina.
con MVC separi però logicamente i controlli dalle viste cosa che nelle pagine aspx non facevi.
Non solo, puoi definire anche un banale usercontrol che viene innestato.
Di fatto una "pagina" diventa un insieme di componenti, definiti una volta e richiamati n.
Quello che poi riguarda il livello di presentazione, mi riferisco agli stili, lo releghi al sistema di template della MasterPage, anche qui definito una volta sola (a meno di casi particolari e di override di stili). JQueryUI tra l'altro è pienamente supportato in VS2010.
Con la terza release poi le mescolanze sintattiche sono ridotte ancora più all'osso.
Boh francamente se ripenso a PHP, framework o non framework, un codice così pulito e leggibile io me lo sognavo la notte.
DioBrando
15-12-2010, 15:30
GUI Designer per una Web Application? :D
no vabbè mi riferisco al tool in generale :D
anche perché mi immagino non so un domani un team che sviluppa una web application potrebbe portarla su dispositivo mobile.
E se eventualmente decidesse di farlo in Silverlight si troverebbe già con buona parte della pappa pronta perchè preparata in precedenza :)
Expression Blend tra l'altro sta venendo su piuttosto bene
Il sistema di versioning non l ho mai usato su Eclipse, non saprei dirti.
TFS nel 2010 è già integrato. Associazione ai workitem, checkin,checkout con la possibilità di risolvere conflitti di codice, comparare file, fare merge, recuperare versioni precedenti. Tanta roba.
TFS nel 2010 è già integrato. Associazione ai workitem, checkin,checkout con la possibilità di risolvere conflitti di codice, comparare file, fare merge, recuperare versioni precedenti. Tanta roba.
IEP questo lo sapevo... sto vedendo se è possibile creare una app asp.net mvc in remoto... direttamente su vps windows server; che tu sappia è fattibile? Colgo l'occasione perché mi sto avvicinando al mondo .NET per le web app da poco :cool:
DioBrando
15-12-2010, 16:01
IEP questo lo sapevo... sto vedendo se è possibile creare una app asp.net mvc in remoto... direttamente su vps windows server; che tu sappia è fattibile? Colgo l'occasione perché mi sto avvicinando al mondo .NET per le web app da poco :cool:
Oddio io sto usando da un mesetto eh non è che... :D
beh via remoto, noi ci colleghiamo a TFS Server su macchine di produzione Oracle/SQLServer attualmente. In realtà mescolo spesso e volentieri anche con macchine virtuali più che altro perché se il db va aggiornato in un dato periodo molto frequentemente poi dover ogni volta aggiornarlo pena la non compilazione della build è una rottura infinita...
La figata (ma qui avrei bisogno del collega certificato a breve in Azure) sarebbe invece fare il deploy "in the cloud" con appunto i servizi che ti espone Microsoft.
In questo modo non hai alcun bisogno di settare la macchina con particolari configurazioni ma ti devi solo sbattere nel file di configurazione che immagino sia l'equivalente del webconfig ASP.NET/MVC.
Immagino almeno...
Prova a dare un occhio alla sezione "How Do I" di MSDN :)
Ciccio17
15-12-2010, 16:59
Innanzitutto grazie per i contributi (anche a chi è sospeso :) )
Stiamo ipotizzando una piattaforma per diverse migliaia di utenti (diciamo ordine di 10^5). Chiaramente adesso sono soltanto stime, ma l'obiettivo è quello e l'architettura va progettata di conseguenza. ;)
Nel team abbiamo, divise a vario titolo, skill su:
- j2ee (personalmente ho fatto due tesi, per quello che possono valere, con spring+mvc+hibernate, ma non ci smanetto da un pò...)
- .net (stavolta in ambito lavorativo, quindi roba più seria).
- php (nel team ci sono coloro che hanno fatto questo (www.f1project.org) browser game, di cui c'è anche un topic (http://www.hwupgrade.it/forum/showthread.php?t=1443909) su questo forum)
Detto questo, ci stiamo orientando sul mondo MS perchè riteniamo possa offrire un supporto ed una infrastruttura maggiore a medio-lungo termine. Altre tecnologie (qualcuno diceva python+django) le stiamo escludendo perchè richiederebbero troppo tempo di apprendimento, che non abbiamo, essendo nel gruppo tutti (o quasi) lavoratori e già organizzarci il lavoro così è molto difficile.
khelidan1980
15-12-2010, 22:31
no vabbè mi riferisco al tool in generale :D
anche perché mi immagino non so un domani un team che sviluppa una web application potrebbe portarla su dispositivo mobile.
E se eventualmente decidesse di farlo in Silverlight si troverebbe già con buona parte della pappa pronta perchè preparata in precedenza :)
Expression Blend tra l'altro sta venendo su piuttosto bene
TFS nel 2010 è già integrato. Associazione ai workitem, checkin,checkout con la possibilità di risolvere conflitti di codice, comparare file, fare merge, recuperare versioni precedenti. Tanta roba.
Subversive(plugin di eclipse per svn, per cvs ha gia integrato tutto ma sinceramente non lo mai usato, per cvs ho usato solo wincvs) fa tutto questo ovviamente, sono operazioni base, poi per la gestione/deploy del progetto se ci metti maven puoi fare di tutto di più!
DioBrando
21-12-2010, 12:50
Innanzitutto grazie per i contributi (anche a chi è sospeso :) )
Stiamo ipotizzando una piattaforma per diverse migliaia di utenti (diciamo ordine di 10^5). Chiaramente adesso sono soltanto stime, ma l'obiettivo è quello e l'architettura va progettata di conseguenza. ;)
Nel team abbiamo, divise a vario titolo, skill su:
- j2ee (personalmente ho fatto due tesi, per quello che possono valere, con spring+mvc+hibernate, ma non ci smanetto da un pò...)
- .net (stavolta in ambito lavorativo, quindi roba più seria).
- php (nel team ci sono coloro che hanno fatto questo (www.f1project.org) browser game, di cui c'è anche un topic (http://www.hwupgrade.it/forum/showthread.php?t=1443909) su questo forum)
prego :)
[QUOTE]
Detto questo, ci stiamo orientando sul mondo MS perchè riteniamo possa offrire un supporto ed una infrastruttura maggiore a medio-lungo termine. Altre tecnologie (qualcuno diceva python+django) le stiamo escludendo perchè richiederebbero troppo tempo di apprendimento, che non abbiamo, essendo nel gruppo tutti (o quasi) lavoratori e già organizzarci il lavoro così è molto difficile.
aggiornaci sullo sviluppo, a me almeno interessa.
Si sa mai che vengano fuori tips utili su MVC&co :)
TFS nel 2010 è già integrato. Associazione ai workitem, checkin,checkout con la possibilità di risolvere conflitti di codice, comparare file, fare merge, recuperare versioni precedenti. Tanta roba.
Eclipse supporta diversi tool per il version control, direttamente o tramite plugin (subversion, mercurial, git).
Per quel che riguarda i task e bug tracking ci sono plugin che permettono di interfacciarsi a vari software (trac, redmine, etc.).
Ci sono anche dei tool aggiuntivi dedicati allo sviluppo web, ma non li conosco perchè lavoro su altro.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.