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]

Reply via email to