Subject | Re: [firebird-support] fbembed: let's get it straight (was Re: FB Embedded: How does it know if it should be a server?) |
---|---|
Author | Nando Dessena |
Post date | 2004-11-17T13:39:03Z |
Helen,
as I suspected most of the confusion we have happens on the
terminology ground, not in the substance.
I have to admit that each time I happen to get involved in this kind
of discussion I am tempted to forward everything to Dmitry Y, since
when I was saying that overriding the IPServer connection string
syntax to do embedded connections would have caused confusion he
assured that wouldn't happen. It has happened on a regular basis since
then and it is happening still. Oh well...
Let's try to get a common terminology for the benefit of all. Firebird
supports several *communication protocols*. Examples:
1) Local (a.k.a. IPServer) c:\some\file\name.fdb
2) TCP/IP hostname:c:\some\file\name.fdb
3) NetBeui (a.k.a. Named Pipes) \\hostname\c:\some\file\name.fdb
4) IPX/SPX (a.k.a. Netware) hostname@c:\some\file\name.fdb
All of these are supported by the *client library* fbclient.dll.
The *embedded engine* fbembed.dll embeds a client library and a
Firebird SS engine in one file. Its client library supports 2), 3) and
4) above for connectiong to a *stand-alone Firebird server*, and in
addition supports:
5) Embedded c:\some\file\name.fdb
Since 1) and 5) share the same syntax, one of them has to give. Thus,
fbembed cannot support 1). This means that it cannot be used as a
client for a local (meaning on the same machine) stand-alone Firebird
server via the Local/IPServer protocol. It *can* be used as a client
for a local Firebird server via any other supported protocol.
Aside: when using the TCP/IP protocol with "localhost" or "127.0.0.1"
as hostname, it is conventional to say that we are using the "TCP/IP
local loopback protocol". Actully there's no such thing as a loopback
protocol per se: it's just that the TCP stack detects localhost and
127.0.0.1 and doesn't send the packets over the wire. This can be
thought of as an optimization that happens at a much lower level that
Firebird and as such, as far as the Firebird client library is
concerned, there's no difference between
localhost:somefilename
and
somehostattheotherendoftheworld:somefilename
I hope this clears things a bit. If it does, it would be useful to
publish it somewhere. If it doesn't, then it should be corrected or
things should be made clearer by themselves! :-)
Ciao
--
Nando Dessena
mailto:nandod@...
======================================================
I support Firebird, I am a Firebird Foundation member!
Join today at http://www.firebirdsql.org/ff/foundation
======================================================
as I suspected most of the confusion we have happens on the
terminology ground, not in the substance.
I have to admit that each time I happen to get involved in this kind
of discussion I am tempted to forward everything to Dmitry Y, since
when I was saying that overriding the IPServer connection string
syntax to do embedded connections would have caused confusion he
assured that wouldn't happen. It has happened on a regular basis since
then and it is happening still. Oh well...
Let's try to get a common terminology for the benefit of all. Firebird
supports several *communication protocols*. Examples:
1) Local (a.k.a. IPServer) c:\some\file\name.fdb
2) TCP/IP hostname:c:\some\file\name.fdb
3) NetBeui (a.k.a. Named Pipes) \\hostname\c:\some\file\name.fdb
4) IPX/SPX (a.k.a. Netware) hostname@c:\some\file\name.fdb
All of these are supported by the *client library* fbclient.dll.
The *embedded engine* fbembed.dll embeds a client library and a
Firebird SS engine in one file. Its client library supports 2), 3) and
4) above for connectiong to a *stand-alone Firebird server*, and in
addition supports:
5) Embedded c:\some\file\name.fdb
Since 1) and 5) share the same syntax, one of them has to give. Thus,
fbembed cannot support 1). This means that it cannot be used as a
client for a local (meaning on the same machine) stand-alone Firebird
server via the Local/IPServer protocol. It *can* be used as a client
for a local Firebird server via any other supported protocol.
Aside: when using the TCP/IP protocol with "localhost" or "127.0.0.1"
as hostname, it is conventional to say that we are using the "TCP/IP
local loopback protocol". Actully there's no such thing as a loopback
protocol per se: it's just that the TCP stack detects localhost and
127.0.0.1 and doesn't send the packets over the wire. This can be
thought of as an optimization that happens at a much lower level that
Firebird and as such, as far as the Firebird client library is
concerned, there's no difference between
localhost:somefilename
and
somehostattheotherendoftheworld:somefilename
I hope this clears things a bit. If it does, it would be useful to
publish it somewhere. If it doesn't, then it should be corrected or
things should be made clearer by themselves! :-)
Ciao
--
Nando Dessena
mailto:nandod@...
======================================================
I support Firebird, I am a Firebird Foundation member!
Join today at http://www.firebirdsql.org/ff/foundation
======================================================