Subject | Re: [firebird-support] Re: FB install questions. |
---|---|
Author | Eddie Bush |
Post date | 2004-03-11T18:48:07Z |
Larry,
I'm not an expert, but I've been fooling with this stuff over the past week or so inside of Delphi using the IBX/IBO components. This is the only method I have used for building interbase/firebird applications - have not done any ESQL with Delphi. Here is how I understand the different distributions:
Embedded Server:
A fully-functional server that is invoked through the client DLL. The client DLL (in this case fbembedded.dll - you will rename it appropriately for distribution) looks at where you're connecting.
Local Connect:
If you specify a local connection string, the DLL acts like a client - and server too. Those databases you open in this manner are opened exclusively by the server piece of the DLL - no other client can connect to those databases. You can still open multiple databases though.
Remote Connect:
If you specify a host in your connection string, the DLL acts just like a normal gds32.dll or fbclient.dll - it just plays the role of client. All databases opened this way are opened just like you had gds32.dll or fbclient.dll installed for real.
Distribution:
All you do to distribute an app that uses the embedded server is include the appropriately renamed fbclient.dll (named to gds32.dll or fbclient.dll), firebird.conf, firebird.msg, and add the intl and udf directories, placing fbintl.dll and fbudf.dll (if you need them) in each, respectively. (straight out of README_embedded.txt from the embedded distro doc directory).
Regular Classic / Super-Server:
Connecting (Local/Remote):
I'm not certain, but I believe local and remote connects work the same here. You're probably not going to specify a local connect string unless you're on the machine that has the server running though, since there would not be a server to handle things :-)
Distribution:
This is a little more complex. Either you need to include the entire setup of your choice and have your installation program "manually" kick off the installation or you will wind up using a Merge Module to have this done. My preference would be the merge module as there are many handy checks that get done for you - it simplifies the task of distribution.
If your application is working with a database that is kept in the application's directory or some subdirectory thereof (what I'm calling "database-desktop"), and you intend for client instances and database instances to have a 1:1 ratio, the embedded server is probably the way to go. If, however, you expect to install your client application on a number of machines and have them all hit a central database (a n:1 ratio) you want to install the server on one machine and distribute the client piece with your application (ie. non-embeddes server).
Note that you could distribute the embedded DLL in place of the client if you anticipate needing to connect to databases that are always local in addition to connecting to a server-managed database on another machine.
Is that clear as mud? Y'all please line me out if I'm incorrect. That's how I understand it.
I got the impression from part of your comments that you were trying to do ESQL. The EmbeddedSQL.pdf doco describes how you would do that in C/C++. I work with Delphi though and MUCH prefer the component-driven approach (I've had the ... dubious honor of writing some ESQL/C for other RDBMSs). This is something Helen was hinting at. Of course, if you don't have a visual development environment, you're probably not going to be using components :-)
I believe you could do ESQL/C with either server distribution (you could hit either a local or remote database with it using the embedded or regular client). Someone please correct me if I am wrong.
Maybe if you told us what development tools you have to work with someone would have better suggestions for how you might proceed. I know you're frustrated - I would be in your place.
(sorry for the novelette)
Regards,
Eddie Bush
I'm not an expert, but I've been fooling with this stuff over the past week or so inside of Delphi using the IBX/IBO components. This is the only method I have used for building interbase/firebird applications - have not done any ESQL with Delphi. Here is how I understand the different distributions:
Embedded Server:
A fully-functional server that is invoked through the client DLL. The client DLL (in this case fbembedded.dll - you will rename it appropriately for distribution) looks at where you're connecting.
Local Connect:
If you specify a local connection string, the DLL acts like a client - and server too. Those databases you open in this manner are opened exclusively by the server piece of the DLL - no other client can connect to those databases. You can still open multiple databases though.
Remote Connect:
If you specify a host in your connection string, the DLL acts just like a normal gds32.dll or fbclient.dll - it just plays the role of client. All databases opened this way are opened just like you had gds32.dll or fbclient.dll installed for real.
Distribution:
All you do to distribute an app that uses the embedded server is include the appropriately renamed fbclient.dll (named to gds32.dll or fbclient.dll), firebird.conf, firebird.msg, and add the intl and udf directories, placing fbintl.dll and fbudf.dll (if you need them) in each, respectively. (straight out of README_embedded.txt from the embedded distro doc directory).
Regular Classic / Super-Server:
Connecting (Local/Remote):
I'm not certain, but I believe local and remote connects work the same here. You're probably not going to specify a local connect string unless you're on the machine that has the server running though, since there would not be a server to handle things :-)
Distribution:
This is a little more complex. Either you need to include the entire setup of your choice and have your installation program "manually" kick off the installation or you will wind up using a Merge Module to have this done. My preference would be the merge module as there are many handy checks that get done for you - it simplifies the task of distribution.
If your application is working with a database that is kept in the application's directory or some subdirectory thereof (what I'm calling "database-desktop"), and you intend for client instances and database instances to have a 1:1 ratio, the embedded server is probably the way to go. If, however, you expect to install your client application on a number of machines and have them all hit a central database (a n:1 ratio) you want to install the server on one machine and distribute the client piece with your application (ie. non-embeddes server).
Note that you could distribute the embedded DLL in place of the client if you anticipate needing to connect to databases that are always local in addition to connecting to a server-managed database on another machine.
Is that clear as mud? Y'all please line me out if I'm incorrect. That's how I understand it.
I got the impression from part of your comments that you were trying to do ESQL. The EmbeddedSQL.pdf doco describes how you would do that in C/C++. I work with Delphi though and MUCH prefer the component-driven approach (I've had the ... dubious honor of writing some ESQL/C for other RDBMSs). This is something Helen was hinting at. Of course, if you don't have a visual development environment, you're probably not going to be using components :-)
I believe you could do ESQL/C with either server distribution (you could hit either a local or remote database with it using the embedded or regular client). Someone please correct me if I am wrong.
Maybe if you told us what development tools you have to work with someone would have better suggestions for how you might proceed. I know you're frustrated - I would be in your place.
(sorry for the novelette)
Regards,
Eddie Bush
----- Original Message -----
From: barfingdog2004
To: firebird-support@yahoogroups.com
Sent: Thursday, March 11, 2004 5:51 AM
Subject: [firebird-support] Re: FB install questions.
--- In firebird-support@yahoogroups.com, "Eddie Bush" <eabush@s...> wrote:
> Larry,
>
> If you're trying to build a "desktop database" sort of application,
you probably wanted Firebird-1.5.0.4290_embed_win32.zip. That's the
distribution for the embedded server.
Thanks Eddie:
It sounds like I've come full circle. I
started with the embedded zip, loaded the
server zip for the include files, have now
run the installer, selecting the super
server, but to not start the service.
What does the installer bring to the
table? Does it add goodies a newbie
like me, using the embedded server, will
find useful? Or should I uninstall
firebird and use the zip kits?
I haven't had this assumption confirmed.
As you have seen, my assumptions can be way
off base.
Laptop application, non-technical users
who need the simplest installation possible.
That's a good use of the embedded server,
right?
Thanks
Larry
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.611 / Virus Database: 391 - Release Date: 3/7/2004
[Non-text portions of this message have been removed]