Come ... configurare un nuovo ambiente Java - in gran parte interfacce

0

Sembra che ho bisogno di configurare un nuovo ambiente Java per alcune interfacce che dobbiamo costruire.

Diciamo che il nostro sistema è X e abbiamo bisogno di interfacce con i sistemi A, B e C. Quindi scriveremo le interfacce X-A, X-B, X-C. Il nostro sistema ha un bus al suo interno, quindi la pubblicazione dalla nostra parte sarà per il bus e i processi di interfaccia prenderanno dal bus e la mappatura al sistema di destinazione.

È per un sistema basato su fornitore - quindi la maggior parte del codice base che non possiamo toccare.

Attualmente pensiamo di avere diversi processi, uno per ogni interfaccia che dobbiamo fare.

La domanda è come strutturare le cose.

Molte delle API con cui dobbiamo lavorare sono basate su Java.

Potremmo andare a EJB, ma preferiamo mantenerlo semplice, un processo per interfaccia, in modo che possiamo riavviarli individualmente.

Allo stesso modo SOA sembra eccessivo, anche se probabilmente sto mescolando i miei pensieri riguardo le implementazioni di esso rispetto ai concetti che stanno dietro ...

Attualmente penso che qualcosa di basato sulla primavera sia la strada da percorrere. In realtà, "si può usare un nuovo tipo di tecnologia se possibile", penso che forse potremmo fare in modo che le API siano più leggibili, forse come le macchine degli eventi e per rendere il codice dell'interfaccia più business- amichevole, forse anche memorizzando il codice di mappatura nel DB, come frammenti di rubino che si mescolano in ... ma questo è un lato ...

Quindi, qualsiasi commento / pensiero sull'approccio di primavera - qualsiasi cosa più aggiornata / pertinente in questi giorni.

EDIT: Guardando un JRuby ulteriormente, sono tentato di scriverlo completamente in JRuby ... nel qual caso abbiamo bisogno di qualche framework, forse alcune gemme per rendere le cose più chiare ...

Grazie in anticipo, Chris

    
posta Chris Kimpton 11.02.2011 - 11:41
fonte

1 risposta

2

La descrizione del problema sembra un lavoro per JMS (Java Messaging System). In sostanza, l'applicazione invia il messaggio appropriato alla coda JMS e puoi configurare la coda per instradare il messaggio dove vuoi, anche attraverso i processi.

Essenzialmente A, B e C hanno ciascuno un proprio client JMS. Il client JMS legge il messaggio ed esegue la sua elaborazione. Invia quindi il messaggio di risposta nel formato desiderato dalla tua applicazione. NOTA: questo è completamente asincrono quindi verrà ridimensionato in base alle esigenze. La bellezza di questa soluzione è che puoi scalare avendo più sistemi A o sistemi B, e la coda JMS dovrebbe bilanciare il carico tra i target disponibili.

Il tuo sistema X definisce come appaiono i messaggi e quali messaggi si aspetta. Se riesci a far passare i messaggi per A, B e C identici, l'unica cosa che devi cambiare è il modo in cui instradi i messaggi. Questo approccio ti consentirà di espandere aggiungendo i sistemi D, E e F quando la situazione lo richiede senza avere una quantità enorme di lavoro corrispondente in X.

Riguardo all'utilizzo della tecnologia per il gusto della tecnologia, è così che i sistemi diventano fragili e instabili. Incorporare la tecnologia quando ce n'è una chiara necessità.

    
risposta data 17.02.2011 - 16:37
fonte

Leggi altre domande sui tag