BACKGROUND
Stiamo costruendo un'applicazione di trading Java (SE) che monitorerà i dati di mercato e invieremo messaggi commerciali basati sui dati di mercato e anche sui parametri di configurazione definiti dall'utente.
Stiamo pianificando di fornire all'utente un thin client, costruito in .NET (WPF) per la gestione dei parametri, il controllo del comportamento del server e la visualizzazione dello stato corrente del trading. Il client non ha bisogno di aggiornamenti in tempo reale; aggiornerà invece la vista una volta ogni pochi secondi (o qualunque intervallo sia configurato dall'utente).
Il client ha circa 6 diverse operazioni che deve eseguire con il server, ad esempio:
- CRUD con parametri di configurazione
- query sottoinsieme dei dati
- ricevere gli aggiornamenti delle posizioni attuali dal server
È possibile che la maggior parte delle diverse operazioni (eccetto per la ricezione di dati) siano solo diversi modi di gestire i parametri di configurazione, ma per noi è troppo presto per essere sicuri.
Per connettere il client al server, abbiamo preso in considerazione l'utilizzo di:
- Servizio Web SOAP
- Servizio RESTful
- costruzione di un'API basata su TCP / IP (testo o xml) personalizzata (meno preferita - ma usiamo questo approccio con altre applicazioni che abbiamo)
Nella migliore delle ipotesi, i pro e i contro dei vari tipi di servizi Web sono:
SOAP
pro: totalmente automatizzato in .NET (e Java), la modifica dell'interfaccia lato server non richiede modifiche al codice nel livello di comunicazione, basta eseguire l'aggiornamento sul riferimento del servizio Web per rigenerare le classi.
con: più overhead nel livello di comunicazione inviando più testo, ecc. Non usiamo il contenitore J2EE quindi forse non funziona così bene con J2SE
REST
pro: peso più leggero, meno dati. Ha un buon supporto .NET e Java. (Non ho alcuna esperienza reale con questo, quindi non so quali altri benefici ha.)
con: il client non sarà automaticamente consapevole se ci sono nuove operazioni o proprietà aggiunte (?), quindi il livello di comunicazione deve essere aggiornato dallo sviluppatore se cambia l'interfaccia del server.
con: (entrambi gli approcci) Il server non può realmente inviare aggiornamenti al client a intervalli regolari (?) (Tuttavia, non ci preoccuperemo se il client interroga il server per ottenere gli aggiornamenti.)
DOMANDA
Quali sono le tue opinioni sulle opzioni sopra o sui suggerimenti per altri modi di collegare le 2 parti? (Idealmente, non vogliamo mettere molto lavoro nel livello di comunicazione, perché non è la parte più significativa dell'applicazione quindi più disponibile e automatizzato, meglio è.)