I have just completed a new tutorial, Creating a DotNetNukeŽ Module using LINQ to SQL For absolute beginners! I just went through the tutorial from scratch and it took me 15 minutes. I estimate that it would take a beginner about 30 minutes. However, that same beginner would then be able to complete the tutorial in 15 to 20 minutes on their subsequent tries.
This is a significant time savings because this module has the exact same functionality as my previous tutorial. I estimate that the previous tutorial would take a beginner at least 1 1/2 hours. Most importantly the percentage of people who should be able to complete the tutorial is vastly higher due to the fact that it is significantly easier. This tutorial is mostly drag and drop. The amount of code you have to type is less than a printed page.
The time savings is mostly attributed to the fact that creation of the data access layer mostly consists of creating a .dbml file and dropping a database table on to the Object Relational Designer. Linq to SQL handles the CRUD operations for you.
Another interesting aspect of this Linq to SQL tutorial is that it doesn't contain a single line of Linq in the code behind. All the code behind code that is created is to handle injecting the current ModuleId and UserID. The database operations for selecting records, inserting records, updating records, and deleting records are all handled by simply configuring the LinqDataSource control.
You would be incorrect to assume that this is not fully extensible and customizable. See the "Adding Business Validation Rules" section of ScottGU's blog.
Note: At this time using Linq to SQL requires the addition of some keys in the web.config of the DotNetNuke site. For this reason Linq to SQL is not a practical option for module developer's who are selling their modules. However, for internal development the web.config modifications are simple.
Linq and Linq to SQL are new technologies that bear little resemblance to code that I have been creating for more than 10 years. Having to "start from scratch" as a beginner is a major bruise to the ego. However, it does bring pleasure to explore new things and capture the excitement of discovery that attracted me to the programming profession in the first place.
Ian and I are working on the new version of IWeb but, we have yet to lay down any new code because we will be using WCF and we are still reading up on how to use it. We could just stick our "heads in the sand" and not use WCF and the new version would have been completed by now, but why would we want to do that?
Fear of failure to learn drastically different concepts and anger at the loss of prestige and advantage that years of programming experience has provided are common motivations to resists new technology. However, the advancements will continue whether we choose to participate in them or not.
The DotNetNuke project itself continues to be an example of rewriting all the rules. I cannot count how many programmers I know who refuse to consider levering DotNetNuke and continue to have late and over budget projects. If I am not the most efficient and productive programmer that I can be aren't I basically "robbing my employer"?
Microsoft will not allow ASP.NET to be a second class citizen to any other platform. The massive changes we have seen in only the past 6 months will continue whether it makes us uncomfortable or not. If the existing programmers do not want to keep up with change there will be plenty of "out of work Real Estate professionals" willing to step in. Don't I owe my own entry into the programming industry to the fact that the existing COBAL programmers felt that web programming was beneath them?
My first DotNetNuke tutorial was called Creating a DotNetNukeŽ Module using notepad. I never believed people would make many DotNetNuke modules using Notepad, I only wanted to show people that it wasn't inconceivable for them to make a DotNetNuke module. I mean, if you can make one using Notepad how hard can it be?
The thing that annoyed me so much that I wrote the "Notepad" tutorial, was that SOME of the programmers would charge outrageous prices for their work. The other programmers were swamped and could not take on all the jobs offered. They were able to partially justify this price because in order to make a DotNetNuke module you had to first buy a $700 copy of Visual Studio. I bought a used (legitimate) copy of Visual Studio 2003 on Ebay for $150. I saw I was able to make a module in 4 hours that other programmers were charging $1000 to create. It would be one thing if the programmers held some precious resource, but in this case the only "resource" was a copy of Visual Studio, the knowledge to create the modules, and the "barrier of entry" that understanding the DAL caused.
I hoped the "notepad" tutorial would bring more programmers "to the party". I felt I would then benefit from specializing in a project that was growing. I was right. My current full time job is a direct result of the fact that DotNetNuke is big and popular. I believe it's the thousands of amateur programmers who made it that way not the relatively small population of master programmers.
However, I don't think m "Notepad" tutorial did much for the "revolution". I believe the DAL+, the Website Starter Kit, and the free version of Visual Web Developer Express is what really caused a change and bring in a flood of DotNetNuke programmers.
One day Microsoft announced the free version of Visual Studio and SQL Server Express and DotNetNuke announced a Website Starter Kit that would work with it. I was so happy at this news I wrote a tutorial to do my small part in what I believed was a "revolution" to allow more people to create DotNetNuke modules. I endured a lot of insults and criticism from professional programmers who believed that now we would see a ton of poorly written DotNetNuke modules.
You might be surprised to hear me say that they were right. That tutorial and subsequent tutorials are probably a major contributing cause to the appearance of most of the poorly coded DotNetNuke modules for sale out there.
My point was that it is ok to start somewhere. That opening something to the "masses" will cause a LOT of hacks to "join the party". Previously a person a least needed to be proficient enough to understand the DAL or the DAL+ to create a database driven module. That limited the completely lazy hack to simple modules. Now, a person can create a database driven modules by simply dragging some controls on the page and setting a few properties. Expect to see a wave of modules created by people who won't bother to learn the proper use of such tools.
But the poor programmer today may become the master programmer tomorrow. Just because a person has to hold down a day job as a salesperson doesn't mean they should be denied the opportunity to program. It would be nice if everyone could properly learn the fundamentals of programming first but they are going to "come to the party anyway".
My uncle's company needed their "classic asp" site overhauled and the average bid from the reputable DotNetNuke companies averaged $10,000. The thing that floored me was that they all said they couldn't start on the project for months. I don't blame them. It's a case of supply and demand. Plus, they have to pay their programmers really good wages and benefits because it is hard to find good ASP.NET programmers. In addition $10,000 is still a deal when they explored other alternatives including using overseas programmers.
While this may seem great in the short term for DotNetNuke programmers it is bad in the long term because the rising cost to launch a website will cause a lot of companies to consider other technologies. Four years ago JAVA was king. A JAVA programmer made good wages and any other technology was considered second rate.
Today companies use ASP.NET and leverage DotNetNuke because it is no longer second rate and it provides a massive cost savings. But the cost savings is the point. I believe Microsoft understands this and strives to make ASP.NET development efficient and cost effective.
Linq to SQL and other recent technologies from Microsoft represents a "Disruptive Technology". Wikipedia.org defines Disruptive Technology as "a technological innovation, product, or service that eventually overturns the existing dominant technology or status quo product in the market". I believe that in this case it does this by saving time and allowing for a "lower barrier of entry" for an aspiring programmer.
A future aspiring programmer/full-time carpet salesperson could create a page to store the companies customer list in the companies DotNetNuke website rather than waiting for months to have one of the overwhelmed DotNetNuke consulting firms to do it for them.
I believe this will be a good thing for all of us. While it may result in yet another poorly coded application that one of the DotNetNuke consulting firms may be called in later to "rescue". But, it may also turn out to be a successful application that saves a company thousands in time and money. This will contribute to our growth. And that I believe will be good for everyone.
[Back to: The ADefWebserver DotNetNuke HELP WebSite]