|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Apr 2004
Messaggi: 56
|
[MVC] perche? (e soprattutto come separare i layers) - lunghetto
Ciao a tutti, premetto che ho ripreso Java dopo anni di C/C++ embedded e C# e che ci lavoravo la bellezza di 6 anni fa, quindi -chiaramente- le mie opinioni sono totalmente opinabili e sicuramente non corrispondenti alla realta', proprio da questo ho deciso di scrivere questo post.
Da poco ho inziato a lavorare con Jsf/Spring/Hibernate, su un'applicazione che ha necessita di essere distribuita su n application servers, molto grande, molto modulare (almeno nei desideri dell'analista ma va beh...). Ora, io ho sempre lavorato limitandomi a separare gui/logica/db come insegnato da millenni ormai, realizzando query sql piu'o meno complesse, elaborando i vari risultati, validando etc, tutto questo con servlet/JSP. Niente di eccezionale insomma. Si preparava l'analisi con use cases e uml si implementava la parte di business col db, si disegnava la gui e via andare. Attualmente vedo (per esempio) Spring e Hibernate, belli, potenti flessibili, -strani-. Ipotizzo una cosa banale, una semplice maschera CRUD con lista, schifosamente standard, (oggi) non voglio stare 2 ore a scrivere codice ridondante o molesto, -non voglio replicare le informazioni soprattutto-, per esempio le primary keys voglio che siano read-only in modifica e editabili per un nuovo record. Ma per questo devo conoscere i metadati del db, che sono gestiti var livelli sotto da Hibernate, ma sono dati che l'application server conosce, non vorrei dover riscrivere nella logica dell'interfaccia tutto questo comportamento (imho abbastanza comune). Con Spring (prendo questo perche'e'l'unico che conoscicchio, ma non credo sia molto diverso da altri) dovrei farmi un'altro bean che gestisce questi metadati con altri pojos, con altro xml, con altra logica, etc. etc. Altra cosa, La logica di business, ho il mio pojo, ipotizzo un pattern stile Value Object, con il mio vo che rotola tra gui e persistenza, la logica non puo'essere messa sul lato gui, non puo'essere messa sul lato hibernate. Va messa sul pojo??? Si dovranno fare delle classi che dato il Pojo vi applichino delle operazioni, sto impazzendo??? (prob.si...) Il Control di MVC, prendo Jsf perche'e quello che ho appena visto (male), qual'e' la sua ragion d'essere in una applicazione tipo gestionale? Capisco un sito web, ma... Ripeto che non conosco assolutamente bene questo enorme mondo, e per questo che chiedo a chi gia'bazzica tutto questo, le mie idee attuali sono dovute banalmente al fatto che sono tornato su questi ambienti da poco piu'di un mese, quindi non mi trucidate |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Se la tuo opinione è che tutto il carrozzone enterprise fa schifo hai il mio voto.
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Apr 2004
Messaggi: 56
|
Tendenzialmente...
Mi sembra quantomeno strano di dover costruire tutto sto po'po' di roba per la minima cosa, ovvero, se aggiungo un campo al sistema devo andare a ritoccare:
1) Il file hbm di hibernate (se non uso le annotations di hib. ) 2) La classe Entity di hibernate 3) La classe VO 4) La copia dei parametri da entity a vo e viceversa 5) Aggiungere il campo nei vari ed eventuali findBy 6) Modificare l'hsql delle ricerce di cui al punto 5 (si in effetti avere solo un dialetto sql per tutto male non e',anche se le join sono un tantino contorte rispetto ad un sano sql standard... rimpiango Oracle 8...) 7) La gui In piu',sara'che sono pesantemente legato all'approccio C/C++ non amo molto la reflection...giusto per motivazioni prestazionali, non per altro.. Ripeto, probabilmente e'una mia impressione ma mi sembra un tantino eccessivo... attendo (e spero in) smentite |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Guarda, sfondi una porta aperta. Potremmo star qui a darci pacche sulle spalle per delle giornate intere.
Vorrei darti un'opzione B ma non c'è. Sono "soluzioni" software che nell'ambiente enterprise devi usare quindi rassegnati e vai. Va precisato però che Java e Java EE in comune hanno solo un pezzo del nome. |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Apr 2004
Messaggi: 56
|
Fantastico, quindi niente simpatiche soluzioni out-of-the box... a parte imporbabili tentativi di automatizzare la generazione della persistenza e quant'altro dal modello UML (si intende questo con MDA? si lo so, ma google usa troppa CO2 per ricerca :P ), ma... mai provato il mistico AndroMDA... che ti genera pure la gui, che pero'ha una lista di dipendenze un po, come dire 'inconsistente' (e se qualcuno e'riuscito a usarlo con Jsf mi dica come perche' io ho dichiarato la resa incondizionata...), fatta col caro dolce Maven, che pero'fa ingrandire i progetti in maniera brutale (basta aggiungere la dependency... mettiamoci questo plugin) mi sembra di vedere rotolare a valle la qualita'del codice... non delle librerie intendiamoci, saran fatte benissimo, ma di solito cerco sempre di minimizzare codice e dipendenze (anche per non spararmi ad ogni release), e ogni mattina, quando sbatto 50 Mb su JBoss (di librerie, piu' altri 15 di applicativo) insomma mi sento un po'come se fossi diventato un enrome ippopotamo sovrappeso con problemi di gotta...
Continuo a sottolineare che spero di trovare qualcuno che mi critichi...e mi dica che sto sbagliando tutto... e PGI-Bis, grazie per il supporto morale, almeno non mi sento piu'solo |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Lungi da me essere scambiato per un esperto...
Anche io, ma solo per scopi 'didattici', stavo cercando di capirci qualcosa su questi design. Credo di aver capito che fin quando un progetto dev'essere gestito e manutenuto da una sola persona, adottare questi design non ha molto senso. Davvero è come prendere un lanciarazzi per sparare ad una mosca (citazione) In un team abbastanza vasto dove ci sono competenze specifiche e comunicazione fra i vari componenti del progetto, credo possa semplificare le cose, almeno per progetti molto ampi.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
JSF e Hibernate, nella mia modestissima opinione sono lammerda.
Se li devi usare perchè sei costretto dall'ambiente in cui lavori, posso risponderti solo con un "I feel your pain". Se invece hai possibilità di movimento, ti dò un paio di framework alternativi che fanno le cose come devono essere fatte. http://www.stripesframework.org/ (un web framework action-based, l'ho usato un pò, figo) http://wicket.apache.org/ (un altro web framework, ma component-based. Mai usato, ma ne parlano tutti molto bene) https://activeobjects.dev.java.net/ (un ORM fatto come dio comanda, non come hibernate...è moooolto più semplice) http://code.google.com/p/google-guice/ (un framework per dependency injection senza quella merda di xml, se ti serve)
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Ciao, rispolvero il thread che avevo seguito, e che avevo messo tra i sottoscritti per i vari framework segnalati da shinya
Come è andata a finire all'autore del thread con jsf/hibernate nel progetto in cui lavora? Me lo sono chiesto perchè anch'io lavoro da un pò con jsf e sebbene lavori con le vecchia versione 1.0 devo dire che non sono così malaccio..per fare qualche form, mostrare tabelle di risultati e cosette "tipo gestionale" non sembra malaccio; tra le altre cose sono costretto ad utilizzare RAD di ibm come ide (una sorta di eclipse potenziato e più pesante) e devo dire che vi sono dei tag ibm abbastanza comodi. Finora l'impressione non è negativa e leggendo in giro, le JSF 2.0 (al momento in versione RC) promettono molto bene. Quote:
Torniamo sempre ai soliti discorsi..lavorando come dipendenti di qualcuno è difficile imporre l'uso di alcune tecnologie piuttosto che altre. Se lavorassi come libero professionista allora si potrebbe anche prendere in considerazione (fino ad un certo punto però) l'uso di framework alternativi. ciao
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:50.




















