By Charles Nurse on
11/16/2011
Its been a while since I blogged here, but I recently started a new blog series on my personal blog on the topic of NoSQL databases. Recently this topic and in particular a particular subclass of databases called “Document Databases” came up in a discussion the Product Team were having on proposed features for 6.vNext.. So I decided it was time to dive into this class of databases in order to find out if they could provide some benefit to us in the Medium to Long Term. The topic is very...
|
By Charles Nurse on
9/18/2011
I am pleased to announce that I will be speaking at DevReach in Sofia, Bulgaria next month. This is the sixth year for this conference - which bills itself as the Premier Conference on Microsoft Technologies in Eastern and Central Europe - but its the first time for me.

|
By Charles Nurse on
7/15/2011
DotNetNuke 6 introduces some really cool new features – especially the new User Interface – but there are also quite a few smaller enhancements that make it easier for Admins and Host users to manage their site. One of these is the concept of Module Categorization. Module Categorization allows Host users to categorize their modules so that finding a module in the Control Panel is much easier. Lets look at how it works. When logged in as a Super User browse to the Host >> Extensions module...
|
By Charles Nurse on
2/9/2011
This year I have decided to place a bigger focus on speaking at Developer Conferences and so over the last few months I have been submitting session proposals to major conferences around North America. I am pleased to say that many of my submissions have been accepted and I have quite a busy speaking calendar for the upcoming Spring conference season. VSLive Conference Dates: April 18-22, 2011 Venue: Rio, Las Vegas Website: http://vslive.com/lv...
|
By Charles Nurse on
1/1/2011
For the fifth year in a row, I awoke this New Years morning to an email from Microsoft, congratulating me on being awarded an MVP (Most Valuable Professional) Award for ASP.NET for the coming year.
|
By Charles Nurse on
12/8/2010
On Monday, we launched the Razor DotNetNuke Hackathon with a meeting of SEADUG (Seattle DotNetNuke User Group) held at Microsoft offices in beautiful downtown Bellevue. For those of you proposing to write Razor “scripts” as part of the Hackathon, I have decided to write a series of short Tips and Tricks. In this fourth post I will cover how you can go about extending the provided helpers to provide a simpler API for the scripts to consume. The DotNetNukeWebPage class, which is the base class for all Razor scripts used in DotNetNuke has three additional properties. ...
|
By Charles Nurse on
12/8/2010
On Monday, we launched the Razor DotNetNuke Hackathon with a meeting of SEADUG (Seattle DotNetNuke User Group) held at Microsoft offices in beautiful downtown Bellevue. For those of you proposing to write Razor “scripts” as part of the Hackathon, I have decided to write a series of short Tips and Tricks. In this third post I will cover a couple of caveats when using Razor scripts in the DotNetNuke context. No Forms...
|
By Charles Nurse on
12/7/2010
Yesterday we launched the Razor DotNetNuke Hackathon with a meeting of SEADUG (Seattle DotNetNuke User Group) held at Microsoft offices in beautiful downtown Bellevue. For those of you proposing to write Razor “scripts” as part of the Hackathon, I have decided to write a series of short Tips and Tricks. In this second post I will provide some information about the web.config file located in the RazorModules folder. ...
|
By Charles Nurse on
12/7/2010
Yesterday we launched the Razor DotNetNuke Hackathon with a meeting of SEADUG (Seattle DotNetNuke User Group) held at the Microsoft offices in beautiful downtown Bellevue. For those of you proposing to write Razor “scripts” as part of the Hackathon I have decided to start a series of short Tips and Tricks. In this first post I will provide the first Tip for anyone wanting to bundle their Razor Module for distribution...
|
By Charles Nurse on
11/25/2010
In earlier articles in this series on the new WebMatrix suite of technologies from Microsoft, I described how we are supporting the use of Razor scripts in DotNetNuke, by providing a “Razor Host” module. But what is Razor? On my personal blog I have recently started a new series of articles that take a deep dive into the Razor Syntax. As these articles deal exclusively with Razor and WebPages, I decided not to cross-post them here. However,...
|
By Charles Nurse on
11/8/2010
n an earlier article in this series on the new WebMatrix suite of technologies from Microsoft, I described how we are supporting the use of Razor scripts in DotNetNuke, by providing a “Razor Host” module.
Having created this cool new Razor script, how do you go about distributing it?
|
By Charles Nurse on
11/3/2010
In my previous post in this series on the new WebMatrix suite of technologies from Microsoft, I described how we are supporting the use of Razor scripts in DotNetNuke, by providing a “Razor Host” module. In this article I will dive deeper into how we host the Razor Parser.
|
By Charles Nurse on
11/2/2010
WebMatrix is Microsoft’s new suite of technologies designed to make creating websites easier. There are four major components to the new WebMatrix “Web Stack”
- IIS Developer Express – a new free lightweight web-server, based on IIS 7, that runs on all versions of Windows and does not require Administrator level permissions
- SQL Server Compact Edition – a lightweight file based database that is simple to set up and free to download.
- ASP.NET “Razor” – a new view-engine option for ASP.NET that can be used to easily embed C# or VB code within an HTML page. This is “bin” deployable and free.
- WebMatrix Tool – a free lightweight developer IDE that integrates all the components.
|
By Charles Nurse on
9/8/2010
Have you ever tried to write Unit Tests for multiple implementations of an Interface or Abstract Base Class. I encountered this problem over the weekend in a personal project and after some poking around I realized that MbUnit supports this ability using the Factory attribute. In DotNetNuke we make extensive use of the Provider Pattern, so as we develop tests for the core we will encounter this scenario. In this post in my irregular series on Testing I describe how you can write a single Test Fixture that elegantly handles the testing of any number of concrete implementations.
|
By Charles Nurse on
8/25/2010
|
By Charles Nurse on
8/20/2010
In a previous post I described how WebMatrix can be used to download DotNetNuke and install it on your local computer. In this blog I will describe how you can use WebMatrix to publish your DotNetNuke site to a Hosting Provider.
First lets slightly modify the content from a plain vanilla DotNetNuke site, by deleting the modules on the front page and adding a single HTML module...
|
By Charles Nurse on
7/10/2010
Earlier this week Microsoft released WebMatrix the new free lightweight web-stack for developing ASP.NET Web Applications. As I discussed in my initial blog one of the potential uses of WebMatrix is its ability to open existing Open Source applications directly from the Web Application Gallery.
In this blog post I will walk...
|
By Charles Nurse on
7/6/2010
Earlier today Scott Guthrie announced a new “Web Stack” called WebMatrix. WebMatrix is both the name of the complete stack (Web Server, Database and View Engine) as well as the name of the new lightweight development tool that you can use to create, edit and publish websites.
|
By Charles Nurse on
4/15/2010
In a previous article in this series of blog posts, I described the different Test Doubles that can be used when unit testing your application.
My favourite type of Test Double is a Mock. Mocks are usually dynamically created by a mocking framework. Mock objects are preprogrammed with expectations which form a specification of the calls they are expected to receive.
|
By Charles Nurse on
4/15/2010
In a previous article in this series of blog posts, I introduced Moq (Mock-you) – the mocking framework we are using in DotNetNuke to generate Mock objects for testing.
|
By Charles Nurse on
4/11/2010
In DotNetNuke version 5.3, we introduced the concept of a centralized Content store, together with the ability to apply Taxonomies (categories) to the content. We have extended this in DNN 5.4 by completing the MetaData API as well as adding Folksonomy (user tags).
|
By Charles Nurse on
4/9/2010
In DotNetNuke version 5.3, we introduced the concept of a centralized Content store, together with the ability to apply Taxonomies (categories) to the content. We have extended this in DNN 5.4 by completing the MetaData API as well as adding Folksonomy (user tags).
|
By Charles Nurse on
4/7/2010
In an earlier blog I mentioned that since DotNetNuke 5.3, we have supported MVP (Model View Presenter) style Module Development using the WebForms MVP project as a basis. In this blog I will begin to explore how we can use the new DotNetNuke base classes ModulePresenter and ModuleView to build fully testable modules.
There are four components for each MVP Module Control.
- An Interface which defines the View
- A Model class which will be passed between the Presenter and the View
- A Concrete View class (the User Control which renders the content to the Response stream) and
- A Presenter Class which manages everything
|
By Charles Nurse on
4/6/2010
In this new blog series of short posts I will “uncover” little know classes/methods - “gems” - in the DotNetNuke Framework (and any of the 3rd party libraries that we use, such as Telerik or the .NET Framework itself).
In this first post, we look at two new helper modules in the DotNetNuke.Common namespace. A Visual Basic Module is equivalent to a C# static class (ie a class where all the members are static).
|
By Charles Nurse on
4/4/2010
One of the biggest challenges in writing Unit Tests - at least when you write them after you have created the actual code, rather than in a Test Driven Development style, is determining what should be tested.
|
By Charles Nurse on
3/10/2010
A year or so ago I wrote a series of blog posts about building testable modules using the Model-View-Presenter (MVP) pattern. The MVP pattern of development provides many of the benefits attributed to the Model-View-Controller (MVC) pattern, which has become very popular recently as an alternative approach to ASP.NET development.
|
By Charles Nurse on
3/7/2010
One of the tenets of Unit Testing is that in order to test a piece of code we often need to create some alternate implementation of one or more of the Interfaces involved in a test. This concept is generally called a Test Double. However there are many types of Test Double, and there is some degree of confusion about the types of doubles used.
|
By Charles Nurse on
2/24/2010
In my spare time, I often find myself playing with ideas for enhancing the DotNetNuke (DNN) core. Most of the time I am developing prototypes as a “proof of concept” – i.e. they are not complete, and may never be completed.
One example of this is my recent blog series on developing modules for DNN using ASP.NET MVC. So far I have demonstrated that the default MVC Application created using the ASP.NET MVC version 1 template can be converted, with little effort, into a DNN module. In order to accomplish this I had to create a framework that sits on top of the DNN core.
|
By Charles Nurse on
2/4/2010
Often, when writing Unit Tests you find yourself writing a batch of quite similar tests that exercise the various test cases for a method.
As I am endeavoring to add Unit Tests to all new code I write, I am learning my way through the MbUnit/Gallio Testing Framework which we have standardized on for all DNN testing. MbUnit is an awesome testing framework and it has a number of Attributes that you can apply to a Test that allows you to provide different parameters.
|
By Charles Nurse on
2/1/2010
In earlier blogs (Part 1 and Part 2 of this series) I described how I have developed a Framework that allows developers to create DotNetNuke (DNN) modules using the new ASP.NET MVC Framework. In this blog I will describe the new base class which is used to enable this ability - MvcModuleApplication.
Prior to DotNetNuke 5.0, all module controls had to be ASP.NET User Controls that inherited from PortalModuleBase – a base class in the DotNetNuke Web Application Framework that provided the context necessary for DotNetNuke’s Module Injection logic to load and inject the module control in the page. (Since about DNN 4.4 a module control was not required to be an ascx file – it could be a compiled server control, but it still had to inherit from PortalModuleBase and thus ultimately from UserControl).
|