Selezione della tecnologia per un prodotto dinamico

0

Stiamo costruendo un prodotto per il dominio degli acquisti in JAVA.

Di seguito sono riportati i principali requisiti tecnici.

  1. Platform Independent
  2. Indipendente dal database
  3. Indipendente dal browser

Nei requisiti funzionali il prodotto è di natura molto dinamica. Il motivo principale per cui il processo di approvvigionamento in tutto il mondo è diverso da cliente a cliente.

In breve, abbiamo bisogno di un motore di flusso di lavoro dinamico e un motore di template dinamico. Il motore del flusso di lavoro con cui possiamo definire qualsiasi tipo di flusso di lavoro e il motore di template ci consente di definire qualsiasi tipo di strutture dati e, in base alla definizione, può ottenere l'input dell'utente attraverso il flusso di lavoro.

Abbiamo sviluppato questo prodotto per quasi 2 anni. È passato molto tempo prima che possiamo scendere con la dinamica dei requisiti.

Fino ad ora abbiamo sviluppato un flusso di lavoro di base e un motore di template e che è in uso presso uno dei client.

Abbiamo utilizzato le seguenti tecnologie.

  1. GWT-Ext (Front End Framework)
  2. Ibernazione (livello database)

Nel frattempo abbiamo riscontrato alcuni problemi con GWT-Ext (principalmente compatibilità con i browser) e l'ottimizzazione del database a causa della sottoclassificazione in ibernazione.

Per risolvere il problema di GWT-Ext, che una comunità morente, abbiamo deciso di passare a SmartGWT. In SmartGWT abbiamo affrontato problemi legati al caricamento e ora siamo in grado di finalizzare che GWT 2.3 sarà la strada da percorrere in quanto la libreria è ricca e le prestazioni sono al top.

Siamo in grado di finalizzare quasi il front e il middle layer di GWT-Spring.

In ibernazione, abbiamo riscontrato problemi principali con la sottoclassing a causa del fatto che lanciava query astronomiche e talvolta smetteva di attivare qualsiasi query per 5-10 secondi o poteva essere di circa 30 secondi e quindi riprendere di nuovo. Pochi giorni fa sono arrivato a un articolo relativo a ORM.

Sono uno sviluppatore SQL tradizionale .Net e ho sempre lavorato con database relazionale. Leggendo questo articolo, l'ho trovato anche in relazione ai problemi che ho di fronte. Non sono ancora completamente convinto di utilizzare l'ibernazione e questo articolo ha appena supportato la mia opinione.

Di seguito sono riportate le domande per le quali sto cercando una risposta.

  1. Dovremmo andare con Hibernate in caso di requisiti di database dinamici e il carico dei dati sarà pesante in futuro? Come possiamo suddividere i dati, come possiamo unire efficacemente i dati, come possiamo ottimizzare le query? Se la risposta è no, come otteniamo l'indipendenza dal database?
  2. La nostra scelta è correlata a GWT e Spring o è necessario modificare anche questo?
  3. Dovremmo utilizzare qualsiasi altro database di coppie di valori chiave se i dati sono di natura dinamica ed è molto difficile renderli relazionali?
posta Kuntal Shah 21.06.2011 - 12:12
fonte

1 risposta

2

L'indipendenza del browser è relativamente facile da ottenere e, se si tratta di un'applicazione Web, l'indipendenza dalla piattaforma non è un problema (a meno che non si intenda la piattaforma di distribuzione) e java lo fornisce in larga misura.

L'indipendenza del database è una questione completamente separata. In 20 anni di software di scrittura non sono stato in grado di crearlo correttamente. E, TBH, una volta che hai un prodotto di successo, e i clienti sono disposti a pagare per questo, allora in realtà non importa molto.

In qualche misura appoggio i commenti di tdammers. Ed è da questo aspetto che vorrei davvero difendere non usare alcuno strumento ORM. Per tutto ciò che richiede una persistenza dei dati complessa e diversificata, gli strumenti ORM non ti daranno ciò che ti serve. Stai molto meglio con uno strato di accesso ai dati correttamente implementato. Ciò ti darà la flessibilità di refactoring e sottoclasse come e quando necessario e di ottimizzare le query del database nei posti giusti.

    
risposta data 21.06.2011 - 17:33
fonte

Leggi altre domande sui tag