Jul 11, 2005 02:29 AM|dehaggard|LINK
I, too, should mention that I have my proof of concept nearly complete. I apologize for my silence on this thread, but my day-job and my work on this have left little time.
I have nearly completed my new POC, designed to meet all the original requirements of the present DNN DAL, plus the following criteria that I set based on what I have read in feedback and on
what I feel to be ideal conditions--
My POC starts with the present DNN DAL, simplifies it, eliminates the SqlHelper "middleman," and talks to any database.
In order to meet the requirements above, the best place to handle different databases is at Install-Time.
The second area to deal with different databases is at run-time. To maintain performance, the run-time load should be kept to an absolute minimum.
It is likely that benchmarking software would detect a performance hit during installation and upgrade to a non-MSSQL database, due to the translation process. However, this hit is minimized
through the use of Regular Expressions.
Run-time performance should be improved, due to elimination of code and extra data access layers. In my present POC, SqlDataProvider.vb is over 1500 lines shorter. The core DataProvider.vb is
over 450 lines shorter. SqlHelper is totally eliminated.
Here is an example of the change in data calls. In PortalController.vb, the call to the "GetPortal" stored procedure (with the CBO.CreateObject code removed for clarity) is--
With my first POC, this became--
With the elimination of the need for separate Data Providers for different databases, the same call becomes--
But if goal #5 is realized, then the SqlDataProvider project goes away, and the abstract methods of DataProvider.vb are replaced by the generic data methods. Now the call gets as simple as possible--
Modules simply "Inherit DotNetNuke" and call its generic data methods from the core DataProvider class. Existing modules can continue to use their own dataproviders, if desired. But conversion
to this new approach is quick and simple.
An ExecuteDataSet method has been added for modules that want to work with DataSets rather than DataReaders.
Present State of the POC