Ho guardato framework web come Rails, Grails, ecc. Sono abituato a fare applicazioni in Spring Framework con Hibernate ... e voglio qualcosa di più produttivo.Quale piattaforma web è adatta a me?
Una delle cose che ho capito è che mentre alcune delle cose in Grails sono sexy, ci sono alcuni problemi seri con esso. I controller di Grails:
1) sono implementati in modo anomalo. Non sembrano in grado di estendersi dalle super classi in fase di runtime. Ho provato questo per aggiungere azioni di base e metodi di supporto, e questo sembra far esplodere i graal.
2) si basano su un modello di parametri di richiesta obsoleto (anziché su oggetti di backing, che sono molto più belli).
3) sono difficili da testare. Gli oggetti di comando sono trattati in modo completamente diverso ... ed è MOLTO più difficile scrivere il test piuttosto che scrivere il codice del controller.
4) Gli oggetti di comando funzionano in modo completamente diverso. Sono pre-validati e rilegati, il che causa molte incoerenze rispetto al modello di parametri di base.
5) Gli oggetti di comando non sono riutilizzabili, ed è un problema nel retro riutilizzare la maggior parte delle cose dalle classi di dominio, come vincoli e campi. Questo è TRIVIAL da fare in primavera base. Perché diavolo non era banale da fare a Grails?
6) Il ponteggio generato è pura merda. Non generalizza inserti e aggiornamenti ... e in realtà copia/incolla una pila di codice in due viste: create.gsp e edit.gsp. I panorami sono enormi mucchi di dozzine di cagnolini. Ciò è ulteriormente aggravato dal fatto che utilizza parametri di basso livello e non oggetti.
I test di integrazione sono 30 volte più lenti di un test di integrazione Spring. È disgustoso.
Alcuni test di simulazione sono così difficili da scrivere e non è garantito che funzionino quando vengono distribuiti, il che ritengo scoraggino i cicli di test veloci, tdd.
La maggior parte delle cose sembra rovinare i grails mentre è in esecuzione, come aggiungere un taglib o qualcosa di veramente. Il problema di riavvio del server non è stato risolto affatto.
Sto iniziando a pensare che andare con Spring/Hibernate/Java sia l'unica strada da percorrere. Mentre c'è un costo piuttosto grande all'avvio, so che alla fine si appianerà.
Fa schifo Non posso usare un linguaggio come Scala ... perché in modo idiomatico, è così incompatibile con Hibernate.
Questa app non è nemmeno un'interfaccia utente ordinata su un database. Ne ha un po ', ma non sarà un po' molle. Ho paura mortale di Grails ora a causa di come è schifoso nel livello Controller.
Suggerimenti su cosa posso fare?
"Fa schifo Non posso usare un linguaggio come Scala ... perché in modo idiomatico, è così incompatibile con Hibernate." - interessante, vorresti approfondire? –
Fondamentalmente, poiché molti dei metodi Spring/Hibernate prendono o restituiscono un oggetto, devi fare un sacco di asInstanceOf [Bleh] nel tuo codice. C'è anche una mancata corrispondenza tra scala collezioni e collezioni java, quindi è necessario aggiungere un po 'di abbondanza per convertirli. C'è anche una performance. Quando si usano le annotazioni, scala ha bisogno di usare Array (...) attorno ad ogni parametro perché non ha un'eccezione di un elemento costruita nel systax ... il che rende alcune cose un po 'più gonfie. – egervari
perché usare un'istanza di? Perché non aggiungere informazioni sul tipo di oggetto? –