Archive
Monthly
Go
|
|
DNN Blog
Feb
22
Posted by:
Michael Washington
2/22/2006
The current plans for the DAL II are much different than the original proposal at: http://adefwebserver.com/DAL/ . However the result is the same: “Simplify module development by a reduction in code and complexity.”
In the original DAL II proposal, we used the Microsoft Enterprise Blocks. Using the Enterprise Blocks we created a MS SQL Server data provider and an Access data provider for the Survey module. What we did was configure the Enterprise Blocks to execute stored procedures when passed parameters. For Microsoft Access I created a way to simulate stored procedures in Microsoft Access using a dynamically loaded assembly. All a module developer had to do was change the current provider and create stored procedures or a custom assembly for the new data source.
Then I started working on the Firebird project and discovered that 90% of the MS SQL Server stored procedures could be recreated but about 10% could not. For those that could not be converted we would need multiple stored procedures to simulate the functionality of one MS SQL stored procedure. The current DAL handles this with no problem (the Firebird provider project is using the current DAL). If we used the DAL II we would be forced to use the dynamically loaded assembly method and that would be MORE coding than the current DAL not to mention slower performance.
The Core has decided that it did like some aspects of the DAL II proposal, namely that it allowed the module developer to:
- Make calls to the database directly from the “controller” class
- Not have to code a separate data provider
These are the things that made the DAL II so appealing. The Core then came up with a way to implement the 2 points above while avoiding the problems we encountered with the Firebird provider:
- Keep the current DAL
- Add “Generic Methods” to ease module development.
The new "Generic" methods are:
-
ExecuteNonQuery
-
ExecuteReader
-
ExecuteScalar
This will allow a module developer to use code such as:
Public Function GetItems(ByVal ModuleId As Integer) As ArrayList Return CBO.FillCollection(DataProvider.Instance().ExecuteReader("GetItems",ModuleId), GetType(ItemInfo)) End Function
in the "controller" class. The "Generic" methods will exist in all the concrete data providers (MS SQL, Oracle, Firebird, ect.). A module written for MS SQL using the DAL II "should" work in other databases and will in most cases. In some special cases where another database stored procedure cannot recreate a MS SQL stored procedure, the original module code would have to be adjusted to issue more than one call.
The Core DotNetNuke code will continue to use the existing DAL. Independent module developers will now have a choice.
I am currently at work on tutorials that will show how to use the new code when it is released.
8 comment(s) so far...
Re: The New DAL II
Very good stuff Michael. I'm sure LINQ technology will also influence future direction of DAL. The only true constant is change :)
By kevin.weir on
2/22/2006
|
Re: The New DAL II
Nice....takes the best of both, and intuitive! Issue a "simple" generic call for simple uses, develop a full provider when things get complicated...
By RLyda on
2/23/2006
|
Re: The New DAL II
This is not expected to be in the Core until the 4.1 version.
By AdefWebserver on
3/16/2006
|
Re: The New DAL II
Anyone now when it is ready?
By fi on
4/15/2006
|
Re: The New DAL II & DAL+
the DAL II / DAL+ sounds very interesting ! is it available (even as an unfinished code) ?
(I have a web project/prototype to be done ASAP. I was considering DNN4, but I really need something like DAL II / DAL+. So I should do the same thing myself, that can be time consuming, or should use WeFly247, PetShop, eBayStore or other scalable starter kits with DAL as a starting point).
By goga on
4/20/2006
|
Re: The New DAL II
DNN would be the best option if you can wait.
By AdefWebserver on
4/20/2006
|
Re: The New DAL II
Any progress on a date when details of the simplified code would be available?
By GeoffreyMH on
5/20/2006
|
Re: The New DAL II
We are still testing out the new DotnetNuke version that it will be in. Testing takes time. We are working hard to provide the best product we can.
By AdefWebserver on
5/20/2006
|
|