At 7:08 AM +1000 10/22/03, Greg Obleshchuk wrote:
>Hi,
>Well thanks for all the input .
>
>I have started a web based admin in .NET, for two reasons
>One - I'm more comfortable with .NET than Perl or PHP
>Two - As a further example for the .NET wrapper I have developed.
>
>Good luck to everyone else
>
>Kind regards
>Greg O
That sounds a bit like what I'm doing, but in a different environment. This is in
that your main project seems to be the 'wrapper' and the app being a demonstration of
the wrapper at work.
So, since you brought it up, please share what your wrapper does. What does the
wrapper extend and/or what kind of functionality does it provide and/or what kinds of
things would it be used for and/or what are its advantages?
One of the main purposes of my library is to allow database-using applications and
database schemas to be fully portable over any RDBMS. The idea for this feature is to
help people use or migrate between RDBMS systems easily, because an application or
schema would not have to be re-coded at all, and hence people would pick a database on
its own merits such as features, resource usage, stability, and so forth, rather than
because they already have an investment in code for one (vendor lock-in). The library
is meant to be as thin (and resource efficient) as possible while performing this
task, and for the most part is an API mapper. Or more specifically, my main library
just defines an API, and the mapping is done by plug-ins, which can be as thin or fat
as they want.
The functionality this provides for an end user could be compared to ODBC (and
friends), with a few particular differences:
1. To my knowledge, ODBC provides a common binary interface for multiple
databases, but you still have to write SQL code to send through that interface, and
common SQL extensions vary greatly between databases, as do things like what data
types a column can be; therefore, an application or schema written for using with an
ODBC connection still has a significant investment in RDBMS-specific code. My library
commoditizes these distinctions.
2. Related to the above, my library takes as input special objects/structs
which look like parsed SQL (like an abstract syntax tree) instead of actual SQL
strings. This can be easier for data-driven applications to deal with since they just
plug unmodified scalar values rather than serializing/generating SQL statements and
worrying about escaping and such.
3. My library's interface makes the database look like it is embedded (as is
actually happening with SQLite, but not with many other systems), whereas ODBC makes
any database look like it is in a separate process or machine.
4. ODBC was designed by Microsoft for a Windows environment. Mine isn't.
Yes, I am aware that there are numerous other projects to abstract databases, but from
what I have seen, my approach has significant structural/feature differences from
them. For one thing, my interface is meant to access all database features, not just
the simpler ones. For example, it generates and/or translates stored procedures, and
lets an app call them in the same way as if they were in the app itself.
What my core library does *not* do is things like object-to-record mapping, or
implement missing (un-mappable non-trivial) features, or manage transactions or locks,
or do any kind of caching. Rather, my lib provides a similar granularity of control
and functionality that SQL strings against the bare database do.
I am using Perl now because I am most comfortable with it (and Perl's mature DBI
framework provides me with a good head-start), and it is well suited for prototyping
or rapid development. Then when the design is tested, it will be coded in ANSI C,
allowing it to be useable from any programming environment, whether C or C++ or Perl
or PHP or .Net or Java or Parrot or whatever.
The web application would demonstrate the library in use, and let the user manage
databases. The app would just be coded once to the commoditized API that the library
provides, and it will then work with any database (for which drivers to the library
were made).
All this said, if any of you know of specific library/module/class/framework projects
out there that are doing or trying to do this, please tell me so that I can look at
them.
FYI, my existing design docs and code are at "http://search.cpan.org/dist/Rosetta/",
but they are in pre-alpha dev status now, so I wouldn't recommend trying to use them
yet. (Note that the current license for my library is GPL, but I plan to change it.)
Anyway, sorry if this message sounds like spamming or too-offtopic, so I won't post
more about it unless someone asks questions or it becomes mature enough to use.
(Meanwhile, those interested can follow any developments at the above url.)
Have a good day. -- Darren Duncan
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]