"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam
please)> wrote in
The thing about ADO was not only to be the successor of DAO but
also to help democratize JET outside of the Access & Office world.
This is simply false. ADO was a replacement for ODBC as a generic
data interface layer to *all* data stores (not just Jet, and not
just relational database, but including all kinds of data, even
unstructured data). ADO was a good idea -- ODBC is really long in
the tooth and does not support a whole lot of things found in modern
database engines. But ADO came at the wrong time -- it was
implemented as a COM interface just before the point at which MS was
moving everything to .NET, where COM is an unsafe platform.
The promotion of ADO for Jet had *nothing* to do with Jet or Access.
It was entirely based on MS's agenda to promote a new generic data
interface layer so it could retire DAO as one of the first steps in
phasing out Jet in favor of SQL Server.
Aside form the train wreck with .NET, this never would have worked,
because SQL Server is not a good fit for replacing Jet in a whole
class of Access applications (probably the vast majority of them, in
fact). And ADO turned out not to be a great interface for Jet (and
it even had major issues with SQL Server, which is one of the
reasons MS now promotes MDB/ODBC over ADP/ADO for SQL Server
development).
When used outside of
Access, without the query engine, for example in a web site or as
with an independant application, DAO is not a very efficient
interface because it need to instantiate the DBEngine object -
which is another layer above JET
I don't think that's right at all. DBEngine is not an object outside
of Jet, it *is* Jet. That is, it's the representation of the whole
of the Jet database engine. No matter what method you use for
accessing the Jet database engine, you are going to have some object
that corresponds to DBEngine in your interface (whether you use DAO
or use the Jet DLLs directly).
also because it has not been designed to work in a multi-threads,
high-concurrency environment such as a web server or many modern
applications.
This is one definite drawback of Jet. But I don't very many people
at all who are pro-Jet and pro-DAO have ever suggested that Jet was
a good candidate for a website datastore (except for read-only or
very low user population applications). And I, for one, would never
suggest DAO for the interface -- classic ADO is the obvious best
candidate for classic ASP, and ODBC for most other scripting
languages.
And I recall that Michael Kaplan said that Jet when accessed via ADO
*is* thread-safe, so that avoids one of the problems.
In other words, for websites (if you've determined that your website
fits into the narrow niche of apps for which a Jet data store is
appropriate), ADO is the obvious winner as data interface to Jet.
I don't know of anyone who has ever argued for using DAO in that
environment.
When MS is reverting back to suggest to use DAO instead of ADO for
an Access application, they are not saying that DAO is superior to
ADAO, they are saying that they are not interested anymore to see
JET & ACE to be used outside of Access & Office.
I don't think that's true at all. I think what's obvious is that
classic ADO got abandoned (for complicated reasons that had very
little to do with ADO's actual merit), and ADO.NET couldn't be
ported to Access, so DAO was the obvious choice for future
development as a data interface layer for Jet.
Even the mobile edition of Windows use a scaled
down version of SQL-Server instead of JET/ACE.
Er, that version of "SQL Server" very little in common with
full-fledged SQL Server, according to what I've been told.
Knowing that, it's probably
safe to say that there will be a long time before we can see a 64
bit version of Access & Office and when there will be one,
probably that there will be as much difference between the current
32 bit versions of DAO and VBA and their 64 bit versions that they
are between ADO and ADO.NET or VB6 and VB.NET.
I think your argument is based on a whole lot of incorrect
assessments of the facts and history and is not compelling at all.
MS has provided instructions to developers for how to utilize and
distribute the ACE in the absence of Access 2007. That says to me
that MS is completely interested in people using the ACE outside of
Access.