I'm working on the development of a multiuser application using a 3 tier design - a rich client, an application server & a database backend. I have the following options:
a) Build everything in Lazarus
Client: Lazarus Indy application
Application Server: Custom Lazarus Indy application
Database backend: Firebird/PostgreSQL
The client side could use the TMemDataset to send streamed data using Indy TCP components to the application server which uses Zeos to communicate with the database. The problem is TMemDataset cannot handle master/detail relationships unlike the ClientDataset in Delphi. In addition, passing data over sockets can be blocked by firewalls on the client machine & in addition, sensitive data must be encrypted before sending it over the wire. Encrypting & then decrypting data may have a negative impact on application speed.
b) Build a hybrid solution (I)
Client: A rich client based on Lazarus/Delphi
Application Server: Apache Geronimo/Glassfish
Database backend: Firebird/PostgreSQL/JavaDB (also called Apache Derby)
Database server: Apache Server
The client side will use Habari ActiveMQ Client to communicate with the application server. The problem is I've never used it before & I'm wondering about the ease of deployment of this solution. It however looks very promising & is one for the future.
c) Build a hybrid solution (II)
Client: A rich ExtPascal client
Application Server: Custom Lazarus application
Database backend: Firebird/PostgreSQL
Database server: Apache Server
The client could use CGI or FastCGI to communicate with the application server. The problem here again is that I've never tried this before but ExtPascal (based on ExtJS) looks promising & is also likely to be one for the future.
I'm open to suggestions on the best way to approach this problem. I don't want to use a browser based client side because I don't think they are good at handling data displayed in grids. It is absolutely essential for me that the client resembles a normal desktop application but its inner workings make it a web application. I want the users to have a rich desktop experience.
I know Lazarus does not have anything like DataSnap or WebSnap, so what can I use as alternatives? I've looked at the excellent FreeSpider component but like I said the grid displays are an issue for me.
I'll greatly appreciate your advice, links, articles etc.