[SOLVED] Best Firebird Direct Access Component lazarus / 16-Databases ---------------------------------------------------------------------- DeBritto · 2016-06-22 17:29 Hi Folks, What is the best Free Pascal 3.0/Lazarus 1.6 open source Firebird 2.5 (3.0) Direct Access Component? Why is better? My priority is Client/Server performance in a high latency network. Best regards ---------------------------------------------------------------------- d.ioannidis · 2016-06-23 07:58 Quote from: DeBritto on June 22, 2016, 07:29:37 pmHi Folks, What is the best Free Pascal 3.0/Lazarus 1.6 open source Firebird 2.5 (3.0) Direct Access Component? Why is better? My priority is Client/Server performance in a high latency network. Best regards   If, by high latency network, you mean slow Internet connections, between your clients and a FirebirdSQL server ( in a classic 2tier C/S model ), I personally will advise you against doing that, with FirebirdSQL up to 2.5 version.   FirebirdSQL's on-wire protocol, is not optimized for that usage scenario ( at least until version 2.5 ) and of course you have to think the security of the packets which can not be encrypted on those versions . If you can, use FirebirdSQL 3. Many of those problems have been eliminated or addressed in this version .   If you stuck with FirebirdSQL versions before 3, then you could use ZeBeDee, to gain some speed as it compresses the packets and can encrypt them but I personally would design the applications as an N-tier . In N-tier you could use mormot for the application server to leverage it's ability for speed and security hiding the FirebirdSQL behind it . Or of course any other middleware framework like RealThinClient, kbmMW.  etc . regards, ---------------------------------------------------------------------- Graeme · 2016-06-23 10:02 Quote from: DeBritto on June 22, 2016, 07:29:37 pmMy priority is Client/Server performance in a high latency network. That is a bit vague. Please explain that a bit more. If you mean "Client/Server over the Internet", then that is a terrible idea for any database server. Instead consider a 3-tier model. tiOPF (Object Persistence Framework) allows you to write Client/Server and 3-tier applications, and there is no need to change any code while switching between the two. Simply a change in a project wide compiler define, and then a recompile of your project. tiOPF manages a 3-tier model by using a generic application server which hosts its own HTTP Server (thanks to Indy 10.6). The Application Server talks to the database (like in a Client/Server environment). It then serialises the data as XML, compresses and encrypts it, and then sends it over the wire to the Client application. The same happens in the reverse. Good news is, tiOPF take care of everything. You simply need to write code as follows: var   obj: TPerson; begin   obj := TPerson.Create;   obj.OID.AsString := 123;   obj.Load;   { now do whatever you want with the TPerson instance } end; For more details on tiOPF, take a look at http://www.tiopf.com. It's source code is available on SourceForge. For an overview of what tiOPF is, and what it aimed to accomplish, read chapters 1-3 of the Concepts Document tiOPF also allows you to choose your database access components and which database server you want to store your data - again all without changing a single line of code. I've used tiOPF in commercial and personal projects for over 14 years. ---------------------------------------------------------------------- DeBritto · 2016-06-23 20:28 Hi Graeme and Dimitrios Chr. Ioannidis, Thank you so much for your very clear reply! It helps me a lot. Ok  Dimitrios Chr. Ioannidis, I'm using Firebird 2.5 but I'll start to use FB 3.0 now. Ok Graeme, You really convinced me, I'll take a serious look at tiOPF. But I'm felling that it'll take a long, long, learning curve. So, I'll finish this phase of the development with FB 3.0 in a Client/Server mode and try to adapt to 3-tier model in the future. But now I have a clue of what to do and the costs. Thank you so much