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]