nServiceBus Management Extensions - new CodePlex project

May 16, 2008 by Nathan

I just launched a new open source project on CodePlex, NSB Management Extensions. This purpose of this project is to provide endpoint management, such as endpoint heartbeat monitoring & node performance monitoring, which exists in the initial release, as well as some more advanced services such as service/endpoint repositories, event broker with server-side subscription rules, a processing pipeline for the MSMQ Transport, etc.

The project can be found here: http://www.codeplex.com/NSBManagement

Unit Testing Custom .NET Configuration Classes

May 15, 2008 by Nathan

I am currently in the process of writing some custom .NET Configuration classes, such as custom ConfigurationHandler implementations, ConfigurationElementCollection, etc. Configuration classes need to be tested just like any other code, especially if they contain any behavior beyond the simple mapping of an XML property to a class property. It turns out the .NET Configuration API makes this pretty easy:

 

    [TestFixture]
    public class ConfigurationTestFixture
    {
        [Test]
        public void TestCustomConfig()
        {
            var cfg = GetTestConfiguration();
            Assert.That(cfg, Is.Not.Null);

            var mySection = cfg.GetSection(”mySection“) as mySection;
            Assert.That(mySection, Is.Not.Null);
            Assert.That(mySection.CustomProp,Is.EqualTo(”configuredValue“));
            …

        }

        private System.Configuration.Configuration GetTestConfiguration()
        {
            var map = new ExeConfigurationFileMap()
                          {
                              ExeConfigFilename =
                              Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                              "TestApp.config“)
                          };

            return ConfigurationManager.OpenMappedExeConfiguration(
                    map, ConfigurationUserLevel.None);
        }

 

For this to work you’ll need a configuration file with the appropriate XML to test your classes stored at the root of your test project with the Copy To Output Directory property set to Copy If Newer. You could use any path to create your ExeConfigurationFileMap, but for me putting the file at the root seemed the easiest solution.

image

.NET Configuration - THE article on customizing the configuration of your app

May 15, 2008 by Nathan

In looking for a palatable way to add configuration file support to some components I’m writing I looked at a number of articles on the topic, all of which discussed some interesting aspect of the configuration. This article, however, covers it all. It is a little long, but well organized so you can find just the parts you need. If you ever engage in creating a configuration section for your .NET 2.0+ app, this is the reference.

http://www.codeproject.com/KB/dotnet/mysteriesofconfiguration.aspx

 

That being said, here’s a totally different approach to configuration using the XML Serializer. You would lose some validation capabilities, but you gain virtually unlimited flexibility in your object model and you can write whatever simple configuration model you like without worrying about the configuration namespace classes.

http://www.15seconds.com/issue/040504.htm

Microsoft VM Offline Servicing Tool

May 9, 2008 by Nathan

As working with VM’s becomes more important in more scenarios, tools like this could make a big difference.

Microsoft opens Offline Virtual Machine Servicing Tool beta

Instrument your applications with WMI Providers - made easier in .NET 3.5 (from MSDN Flash)

May 9, 2008 by Nathan

        Instrumenting Your App w/.NET 3.5

And… how to consume performance counters

Consuming (and publishing) Performance Counters

SSMS Tools Pack

May 8, 2008 by Nathan

Here is are some extensions to SQL Server Management studio that look like they might be pretty useful. For some reason the “Run one script on multiple databases” feature catches my eye…

Get the software here: SSMS Tools Pack

 

From the website:

 

SSMS Tools PACK is an Add-In (Add-On) for Microsoft SQL Server Management Studio and Microsoft SQL Server Management Studio Express.
It contains a few upgrades to the IDE that I thought were missing from the Management Studio:

WPF for Line of Business applications

May 8, 2008 by Nathan

Here is an article on using WPF for LOB’s. I don’t imagine we’ll write any significant, new desktop software in Windows Forms, so this blog post will serve as a place to collect WPF resources as they appear over time.

 

Public Sector Developer Weblog : WPF for Line of Business applications

Utility (Cloud) Computing for .NET Apps

May 7, 2008 by Nathan

If you aren’t familiar with cloud computing, read this article here:

http://en.wikipedia.org/wiki/Cloud_computing

 

Essentially, cloud computing is a data center “pattern” where identically configured servers (nodes) are linked together to form an extremely scalable pool of hardware resources where new servers can easily be added at will to scale the system with minimal (or automated) configuration. Running on this system is an entirely virtualized environment where virtual machines are programmatically provisioned or decommissioned in an on-demand sort of way. This allows you to design software applications that can scale themselves or be easily scaled through a control panel (by adding virtual hardware resources) in response to dynamically changing demand. That is my simplified understanding of Cloud Computing (also called grid computing in certain contexts. Grid computing can also mean other things, though, as in an application architecture context). When a Cloud Computing environment is created, maintained and sold to the public on a “pay per resources used” basis - essentially metered use of hardware resource-hours used, then that business model is called Utility Computing, reflecting its similarity to the Utility Company business model of billing for metered use of power, water, gas, etc.

The advantages of this way of doing things, especially if you aren’t a monolithic enterprise with your own high tech data centers and network engineers, are huge. Growing  your applications, experimenting with different network or load balancing designs, throwing up experimental or test servers for a few hours or a few days and then tearing them down when they are no longer needed, is immeasurably easier and cheaper using this utility model.

There are no hardware purchases to make, no time spend pricing out a server, unpacking it, racking it, etc. If you need a server for a few days, or even a few hours, to test a concept or do a proof of concept or run a quick internal beta you will only be charged for the time it was running. If your app spikes in usage seasonally or because of a promotion, you just add some more web servers (these services often come with load balancing mechanisms you can use) for the peak periods and remove them when things are back to normal. You didn’t crowd your data center rack space with servers only needed some of the time and you don’t pay for what you aren’t actually using.

(A mildly amusing discussion of cloud/utility computing can be found here)

A precursor to utility computing, and still a useful and cost effective option (as compared to having in house talent to maintain your infrastructure) is standard dedicated hosting providers who will rent you a server and bandwidth for a monthly fee. There isn’t the same flexibility, but at least you don’t have to deal with your own hardware and network infrastructure. It seems that several of the major players in this market are also offering the utility model, however, which sure feels like the future to me, especially for SMB’s.

 

Utility Computing Providers that host Windows:

Go Grid

This looks like a good one to me. Flexible pre-paid and pay as you go plans. Don’t know if there is an API though, for managing your virtual environment from within your own code.

Flexiscale

Also looks like a pretty nice system. This one DOES have a full API for controlling your virtual environment.

Serve Path

Another dedicated server hosting company getting into the utility market. Prices seem competitive with comprehensive features.

Mosso

These guys are a little different - they host a unique virtual environment specifically for hosting web applications. You don’t actually get virtual machines, but a completely virtualized “deployment space” for your web apps. Mosso is by Rackspace - an established major dedicated server provider.

 

Traditional Dedicated Server Providers that host Windows:

There are a blue million companies that provide dedicated windows servers. Here are three I have found that seem to have good reputations and competitive pricing.

Crystal Tech: http://www.crystaltech.com/
RackForce: http://www.rackforce.com/
Rackspace: http://www.rackspace.com

css Zen Garden: The Beauty in CSS Design

May 6, 2008 by Nathan

Here is a pretty awe inspiring demonstration of the power of raw CSS for rendering a website design. Why bother with more complicated skinning mechanisms when CSS can do it all?

css Zen Garden: The Beauty in CSS Design

An annotated list of some open (free) data sources on the Internet

May 6, 2008 by Nathan

By data sources I mean programmatically consumable databases. I haven’t spent enough time with this article to judge the quality of the data sources, but I did pop onto one of them (Freebase) and finally got a flash of insight into the potential of the semantic web. Anyway, these lists from Read Write Web are always well thought out and include top quality sites, so if you’re ever looking for some piece of data to feed a hungry app, this list may be a good place to start.

http://www.readwriteweb.com/archives/where_to_find_open_data_on_the.php