2012-10-26 8 views
5

Sfondocomunicazione a due vie con gli oggetti lato server per lo sviluppo web-application

Il mio background è oggetto di alta scala orientata middleware e le applicazioni di sviluppo per dispositivi embedded e desktop con C++. Ora dobbiamo creare un'app web su vasta scala per la nostra startup.


Domanda

richiesta-risposta basata e attuali framework web-sviluppo basati continuo elettorali sembra molto primitiva, inefficiente.

Sto cercando completamente orientato agli oggetti lato server e programmazione basata su eventi. Ecco un esempio,

C'è un oggetto persistente di nome employeeManager sul server

metodi di questo oggetto,

empList getAllEmployeeList(); 
empList getEmployeeOfDepartment(string strDept); 
/*Some more */ 

eventi di questo oggetto

employeeAdded(empID); 
employeeEdited(empID); 
employeeRemoved(empID); 
/*Some more */ 

Ora, javascript lato client dovrebbe essere in grado di chiamare i metodi di questo oggetto (lato server) e dovrebbe essere in grado di ricevere eventi di questo oggetto. Possiamo avere risultati della chiamata al metodo in modalità asincrona. Il framework dovrebbe anche fornire un modo in modo che la vista (o la pagina html-js) possa registrarsi per gli eventi lato server richiesti.

C'è qualche framework che funziona su questa metodologia. Qualcosa di simile sopra al socketIO? Qualche framework che fornisce una buona RPC a due vie tra client javascript e sever side object?

+0

Questo potrebbe essere più facile rispondere se hai detto che tipo di stack di server stai lavorando - per esempio https://github.com/SignalR/SignalR aiuta a spingere gli eventi lato server ai client JS (tra gli altri) in a. Stack basato su NET. – JcFx

+0

@JcFx, grazie mille per la risposta. No. Per favore, andrò con Java o Javascript per la programmazione del server. – SunnyShah

+0

La metà del divertimento sta costruendo quella parte del sistema da zero - o forse sono solo io :) Ho paura che non conosca sistemi pre-costruiti da fare di quello che chiedi, ma sto guardando per vedere cosa le persone hanno avanzato - è una buona domanda. Da +1 a xyu per indicare cosa avrei iniziato. – Pebbl

risposta

2

provare la seguente combinazione:

Nodo + socket.io + Backbone.Model + un po 'di immaginazione.

Penso che il pezzo mancante sia una struttura simile al modello che può essere utilizzata sia lato server che lato client. Il modello deve sincronizzare lo stato tra server e client.

Ecco un articolo che trovo molto interessante e forse è possibile utilizzare la tecnica descritta?

L'articolo:

http://blog.andyet.com/2011/feb/15/re-using-backbonejs-models-on-the-server-with-node/

2

NodeJS e sockets.io. Questi possono aiutare a raggiungere l'effetto desiderato.

+0

Sì, ma il problema è che finiremo per scrivere una buona quantità di boilerplate per questo. Fornisce un modo per poter creare uno stub sul lato client javascript che gestisce internamente tutte le comunicazioni dell'oggetto lato server? – SunnyShah

+0

Forse la definizione della funzionalità per ogni tipo di oggetto lato server in una classe js può fare qualcosa di simile, ma un gestore globale per tutti i tipi - non lo so. Dipende dalle funzionalità necessarie – undefined

2

Meteor è un quadro basato Node.js che utilizza sock.js per la comunicazione websocket e MongoDB per un database che è orientato orizzontalmente per applicazioni scalabili. Meteor farà praticamente di tutto per te quando si tratta della sincronizzazione client-server - non dovrai scrivere alcun codice per la sincronizzazione del database. Il risultato è un codebase minimo con la logica della tua applicazione in luogo del req/resp overhead.Puoi dare un'occhiata agli esempi qui: http://meteor.com/examples/leaderboard

1

Se hai familiarità con C++, potresti voler dare un'occhiata a G-WAN. Hanno un ottimo esempio usando Comet (quello che stai cercando), e ci sono anche i wrapper Node.JS.

G-WAN consente anche applet sul lato client scritte in qualsiasi lingua sia necessaria. Quindi, per te, C++, potrebbe essere proprio quello che stai cercando.

Questo è un server di applicazioni Web molto scalabile. Da tutti i benchmark che ho visto, Node.JS non si adatta bene alla concorrenza elevata (potrei sbagliarmi su questo, se lo sono, per favore fatemelo sapere e forniscimi le informazioni). Detto questo, ho fatto le cose in modo molto simile a quello di cui stai parlando. Tutto quello che dovevo fare era scrivere un wrapper molto semplice per tradurre da JS in qualunque lingua fosse in quel momento (per me l'ho fatto con PHP, MivaScript, SMT e C).

Ma la chiave (per me) utilizzava Comet per ridurre il polling non necessario del server.

1

Se si desidera un linguaggio RPC con più linguaggi, è possibile trovare utile Apache Thrift. Credo che ci sia un client Javascript (ma non l'ho mai usato). Potresti costruire un framework RPC su Socket.IO come molti altri hanno sottolineato, ma sembra come dipingere un gatto per sembrare una mucca ... cioè divertente, ma non particolarmente produttivo

Sono sicuro che tu ho già, o ho qualche vincolo legacy, ma nel caso non lo avessi prenderei un secondo per pensare se RPC sia davvero il modello che vuoi usare. RPC estrae in modo poco chiaro l'esistenza della latenza di rete e, in quanto tale, genera alcune assunzioni traballanti nelle basi della tua app. C'è uno critique of RPC piuttosto breve e leggibile in generale (da AST non meno) che potrebbe valere la pena di essere letto.

Problemi correlati