2011-08-25 14 views
6

Prima di tutto quello che voglio è piuttosto complesso, almeno per me, ma d'altra parte sembra eccitante.Client web based in tempo reale per l'app delphi. COME?

Ho un software scritto in delphi e voglio un client web based in tempo reale.

I requisiti:

  • Sul lato client puro JavaScript
  • interfaccia lucido (GWT, SmartGWT)
  • connessione asincrona tra il server e il client. Ajax push, Long Polling, Comet, WebSocket?

Sul lato server

  • scala-capacità

Sul lato Delphi credo che avrei potuto utilizzare ICS da Overbyte, per gestire le richieste. So che THttpAppSrv dal pacchetto ICS può facilmente servire contenuti semplici, ma che dire di Websocket, o come posso fare un lungo polling con esso?

Cosa ne pensi, è una buona combinazione (GWT, SmartGWT sul lato client e ICS sul lato delphi), c'è qualche progetto di esempio là fuori, o c'è qualche altra soluzione?

Aggiornamento Grazie per i commenti utili, penso di avvicinarmi alla soluzione. È bello sapere che GWT può usare un server personalizzato, tuttavia penso che Arnaud abbia ragione, GWT con il proprio server Jetty è una soluzione completa, ma sfortunatamente non per me. :) Penso di aver bisogno di un server scritto in delphi, che possa comunicare con GWT RPC.

Update 2 ho accettato la risposta di Arnaud Bouchez, che mi sembra la migliore per la domanda iniziale, ma penso che ci sia una soluzione migliore (se si modificano i requisiti di un po ') per la creazione di un client in esecuzione nel browser per un applicazione delphi. Faccio solo un piccolo commento qui, per condividere l'idea. Finalmente ho usato un server node.js e l'ho collegato alla mia app delphi con l'aiuto di ZMQ.

+0

GWT + GWT + RPC + Jetty (o Tomcat, JBoss, GlassFish, WebSphere ...) possono essere facilmente integrati con Delphi. Se si hanno sviluppatori Java in giro che possono creare il livello Web dell'applicazione utilizzando questi strumenti e quindi integrare il livello aziendale Delphi su interfacce sincrone o asincrone, è possibile combinare il meglio di entrambi i mondi. Per un ulteriore incremento delle prestazioni, prendi in considerazione soluzioni di caching come [memcached] (http://memcached.org/) che hanno [Delphi] (http://code.google.com/p/delphimemcache/) e client Java disponibili. Aggiornamento – mjn

+0

: se sei interessato, posso creare un esempio di integrazione GWT/Delphi completo come parte dei documenti che ho scritto per le mie librerie di comunicazione Delphi/Java e pubblicarlo con il codice sorgente Java completo. – mjn

+0

@mjn Thx. Sì, mi interessa. Un semplice esempio con un widget SmartGWT sul lato client, e lo stesso nel lato delphi, async connesso sarebbe molto apprezzato. – balazs

risposta

3

Informazioni sul server HTTP sul lato Delphi, prendere in considerazione l'utilizzo di kernel mode http.sys server fornito da Microsoft a partire da XP. Dovrebbe essere più veloce di ICS.

Per la parte AJAX, dare un'occhiata a Op4JS o fino a venire ElevateDBBuilder.

Ciò che è eccezionale con queste soluzioni è che è possibile scrivere codice Pascal oggetto e che questo codice verrà tradotto in JavaScript. Non ancora finito, ma vale la pena aspettare un po 'per il loro tempo di rilascio.

Ovviamente esistono più soluzioni AJAX classiche, come IntraWeb o ExtPascal. Entrambi implementano il proprio server web.

Informazioni su GWT, AFAIK sono librerie java, profondamente collegate al mondo Java. Non sarai in grado di farlo funzionare con Delphi.

Edit su GWT:

GWT è un framework completo client-server.

Se si va con GWT, ho il sospetto che terminerai con una completa riscrittura Java dell'applicazione ad un certo punto. Oppure ti mancherà l'interesse per il GWT come framework. È la vostra scelta.

Preferisco fare affidamento su un approccio più standard, utilizzando JSON per la comunicazione, ad esempio, come facciamo con il nostro framework.

+0

Grazie per i link, questi sono ottimi strumenti, ma non ho bisogno di scrivere codice Pascal oggetto, piuttosto che tradurlo in javascript, piuttosto comunicare tramite websocket o longpolling tra client e server. In realtà GWT convertirà il codice java in javascript. – balazs

+0

@balazs Quindi vuoi scrivere la parte client in tutto Java? Ma GWT utilizza un meccanismo RPC basato su Java Servlet per fornire accesso alle risorse lato server. Quindi dovresti scrivere anche la parte server in Java (o emularlo con Delphi - ma suona duro). Ho modificato la mia risposta per commentare più approfonditamente con GWT. –

+0

Alcuni chiarimenti su GWT: * GWT non fornisce "il proprio server HTTP" o richiede che il server HTTP sia basato su Java * GWT può utilizzare JSON come protocollo, quindi non dipende da Java Servlet sul lato server – mjn

0

Avete controllato Intraweb? Non l'ho usato estesamente da solo - ma sembra essere abbastanza popolare per le web app Delphi.

Ho realizzato diverse app Web utilizzando TWebBroker con IIS o Apache. È asincrono e consente di effettuare facilmente la porta/condividere il codice Delphi con l'altra applicazione. E sosterrebbe le chiamate Ajax.

1

Delphi, javascript puro sul lato client e interfaccia lucida? Stai parlando di Unigui!

+0

non proprio, non voglio riscrivere l'intera app, è oltre mezzo milione di righe. Voglio solo aggiungere un lato client. Ma hai ragione, Unigui è molto promettente, forse lo userò in un altro progetto. – balazs

1

Ho lavorato su PHP, ASP e Cold Fusion prima e volevo fare (quasi) lo stesso con Delphi. Ho iniziato con xxm. Ha Delphi e il codice HTML negli stessi file e (ri) compila una libreria quando si preme refresh in un browser. Ho creato gestori per queste librerie in modo da poterle eseguire in IIS, Apache, InternetExplorer, Firefox o direttamente da un'implementazione HTTP basata su Delphi. (Ho iniziato a lavorare su un gestore http.sys, ma ci vorrà molto più lavoro.)

Inoltre, in relazione alla tua domanda, volevo streaming, volevo che quello che ho prodotto sarebbe stato trasferito APPENA POSSIBILE al client di ascolto, in modo da poter eseguire pagine a esecuzione prolungata, polling lungo e simili. Per quanto riguarda GWT e altri script lato client, ho utilizzato con successo prototipi e jquery.