Coding and Dismantling Stuff

Don't thank me, it's what I do.

About the author

Russell is a .Net developer based in Lancashire in the UK.  His day job is as a C# developer for the UK's largest online white-goods retailer, DRL Limited.

His weekend job entails alternately demolishing and constructing various bits of his home, much to the distress of his fiance Kelly, 3-year-old daughter Amelie, and menagerie of pets.


  1. Fix dodgy keywords Google is scraping from my blog
  2. Complete migration of NHaml from Google Code to GitHub
  3. ReTelnet Mock Telnet Server à la Jetty
  4. Learn to use Git
  5. Complete beta release FHEMDotNet
  6. Publish FHEMDotNet on Google Code
  7. Learn NancyFX library
  8. Pull RussPAll/NHaml into NHaml/NHaml
  9. Open Source Blackberry Twitter app
  10. Other stuff

.Net FHEM Front-End - Ingredients

Now that I'm about to start developing the front end, as well as potential features, let's talk a little about the "ingredients" that I'm going to need.

In this post I'm going to talk about the development and integration platforms (.Net 3.5 and Hudson respectively), a little about development methodology, the tools I'll be using for testing (NUnit, Rhino Mocks / Moq), and a few other bits and pieces (Log4Net, NAnt, Fluent NHibernate, Subsonic, etc)

.Net Platform 

The front-end and will be developed using the .Net 3.5 platform, programmed in C#.  Although it can limit the hosting environment, .Net 3.5 gives us a few things that now are pretty indispensable, for example Linq, object initialisers and lots of Lambda goodness that some of the other tools I intend to use will require.

Test Driven Development with NUnit, NCover and Moq / Rhino Mocks

I intend to use a semi test driven development methodology, using NUnit as my test framework, and NCover integrated into a continuous-integration environment to ensure test coverage.

So that the different parts of the application can be tested in isolation, I will be using Moq or Rhino Mocks to inject test objects into my application.  At the moment Rhino Mocks is my framework of choice, but I'm hearing too many good things about Moq to ignore it.  I'm also still undecided whether to throw a dependency-injection framework into all of this, but at present I'm planning to use constructor-based injection for most things.

Subversion Revision Control

At present I'm using Subversion on a local server, but once the site is functional and at least as a capable as some of the existing FHEM front ends, I intend to move to an online platform such as Google Code.

NAnt Build Scripts and Hudson Continuous Integration

Application build scripts will be written using NAnt, these scripts will be used to build, test and deploy the application. Hudson continuous integration will be used to build the application using these scripts automatically in response to a code check-in, and to ensure that all tests still pass.

Sqlite Database and Fluent NHibernate / Subsonic ORM

Initially I intend to use SQ light as my and database back end, couple with an object-relational-mapper such as Fluent NHibernate or Subsonic.  The use of a separate data-access layer and mock-driven unit tests should ensure that if necessary, the database back end can easily by switched to MySql, SQL Server, XML, etc.

Event Logging and Exception Handling with Log4Net

Event logging and exception alerting will be handled using Log4Net.  Log4Net has some superb configuration features available, for example to configure rolling log files, and is able to send out certain types of log events as emails.


So that's that - for the initial build phase, I'll try to post regular blog articles to give updates, but for now I'd best get on with it!

Categories: FHEM
Permalink | Comments (0)

Add comment

  Country flag

  • Comment
  • Preview