2009-05-14 12 views
25

Sto arrivando a Java da C# & ASP.NET MVC, mi piacerebbe trovare un equivalente nel mondo Java che potrei utilizzare su Google App Engine. Ho già iniziato a giocare con FreeMarker e ho anche fatto i primi passi verso la scrittura di un framework molto semplice. Idealmente non dovrei fare tutto il duro lavoro però, qualcuno deve averlo già fatto! Quindi la mia domanda è: quali strutture ci sono là fuori che mi sarebbero familiari venire da ASP.NET MVC e potrei usarle su Google App Engine per Java.MVC in un mondo Java di Google App Engine

Le cose fondamentali che vorrei sono:

  • semplice Routing-/products/view/1 viene mappato l'azione vista del regolatore di prodotti con il ProductID del 1
  • Template Engine - qualche modo di passare facilmente 'ViewData' alla vista, e dalla vista facilmente accedendo, idealmente mi piacerebbe evitare tutto ciò che è troppo XMLy (quindi perché mi piace FreeMarker).
+0

C'è anche Apache Struts: https://struts.apache.org/ – Chloe

risposta

12

Attualmente sto lavorando su un'applicazione Google App Engine utilizzando Spring MVC. È molto più maturo di ASP.NET MVC quindi non dovresti essere deluso. Come bonus aggiuntivo hai l'intero potere IoC di Spring.

Per il livello vista sto provando Velocity. È piuttosto semplice, ma devo ancora decidere se preferirò il JSP. Ho dato una breve occhiata a FreeMaker ma non mi è piaciuto quello che ho visto. Se vuoi stare lontano dai modelli XML di JSP, ti consiglio di dare a Velocity un giro.

L'unico problema che ho riscontrato con Spring su GAE è il caricamento di file. Le implementazioni di MultipartResolver si basano entrambe su una directory di file temporanea. Dopo aver scritto la mia implementazione sono tornato al caricamento senza problemi di file nei miei modelli.

+0

Fuori di interesse, stai usando Primavera 2.5 o 3.0? – thatismatt

+0

Sto usando 2.5, probabilmente passerò a 3.0 una volta che è nei repository Maven globali. – pjesi

1

JavaServer Faces (JSF) che ho sentito è simile al framework microsoft MVC. (Io uso JSF ma non ho mai usato .NET MVC). E credo che JSF 1.1 funzioni bene su Google App Engine e sospetto che le versioni più recenti di JSF funzioneranno se ci si limita a utilizzare XHTML anziché JSP come modelli. Ci sono anche alcune belle librerie che ti permettono di sfruttare un'interfaccia AJAX nel framework JSF, RichFaces è popolare. Scopri JavaServer Faces on sun.com e anche JBoss RichFaces

2

Ho anche una forte preferenza per Freemarker. Ti suggerisco di guardare il framework di Induction, il suo template engine è collegabile, ma il supporto predefinito è per Freemarker. L'induzione è un framework MVC leggero e veloce (7.7K linee) ma ha molte caratteristiche assenti nei principali framework MVC, come ad esempio:

  • il caricamento dinamico durante lo sviluppo, quando si modificano le controllori, viste o modelli
  • upload di file in modo semplice (non molto diverse che una stringa ingresso)
  • non richiede alcuna configurazione per i controller
  • capacità di analizzare le dipendenze tra i vostri modelli, viste e controllori di utilizzare l'IDE
  • regolari mappature URL espressione basato
  • miglior supporto per la gestione dei reindirizzamenti di qualsiasi framework MVC

Per quanto riguarda il problema di caricamento file generato da @pjesi, Induction consente di impostare la soglia di dimensione in cui i file vengono scritti su disco. Se è impostato abbastanza grande, non dovrebbe provare a scrivere alcun file sul disco.

Scopri i iniziare tutorial qui: http://www.inductionframework.org/getting-started-tutorial.html

8

Ci sono un paio di framework MVC che si dovrebbe prendere in considerazione (che è quello che sto facendo ora). Inizialmente, sono andato con Spring MVC (3.0) e la partenza a freddo su GAE è orrenda! Ci vogliono circa 10 secondi per iniziare (e io non sono nemmeno usando niente complessa, come la sicurezza a molla, ecc), quindi ho bisogno di usare un job cron per mantenerlo in vita. Quindi non ti consiglio di usare Spring su GAE.

Date un'occhiata alle seguenti quadri:

VRaptor

Slim3

Google Sitebricks

Per quanto riguarda il template, io uso Sitemesh - usato per un bel po 'di tempo, in modo da non vedo la necessità di cambiare.

Spero che questo aiuti!

3

quadro Giocare misura la fattura. È un moderno framework MVC per Java e ha un modulo Google App Engine per fornire compatibilità. Vedi http://www.playframework.org/modules/gae.

Un altro vantaggio di utilizzare gioco sarebbe portabilità. È possibile distribuire giocare con la sua built-in web server (opzionalmente dietro apache per la cache, bilanciamento del carico, ecc) oppure si può racchiudere in un file .war per la distribuzione ai molti application server Java (Glassfish, Tomcat, ...).