Patterns Panacea

The “Patterns Movement” seems to be gaining momentum with more developers becoming aware of the oft-quoted benefits of pattern re-use. Patterns are supposed to be the abstracted solution to common development requirements, but I think the Movement needs to work on closing the circle with respect to concretising the usefulness of Patterns. In most articles [...]

The PCMEF architectural Framework

The general idea behind PCMEF (Presentation Control Mediator Entity Foundation) is that of dependency and object intercommunication minimisation. PCMEF takes inspiration from established design patterns such as Data Mapper, MVC, Observer, Chain of Responsibility and Mediator. Objects in higher subsystems have a dependency on lower subsystems but reverse communication should be event-subscriber based (this implies that [...]

Poet Programmer Analyst Artist

Is the development of software art or is it merely a sequence of logical events which produce an outcome? Certainly software development requires creative thought or is it merely logical thought? Perhaps it is merely a matter of perception; a non-developer will decide on the “beauty” of a system by the rounded boxes and smooth [...]

Enterprise Library - A Day Out with the Logging and Instrumentation Application Block

Ok, I’ll start by saying I like it; reasons? No headache of installing, configuring, deploying EIF; Easy to configure using the nice little GUI Enterprise Library Configuration Tool - no manually messing around with .configs - it also validates the underlying config files when you try to save! Easy to deploy as private assemblies; Simplified logging; Easy to configure multiple [...]

WebMethodAttribute.CacheDuration Property

When creating a web service based data abstraction layer / façade, if you have methods that return “type” tables such as counties/states or employee types; caching the response to these requests improves performance by reducing db lookups for data that rarely changes. Simply apply the CacheDuraction property to the WebMethod attribute specifying the number of [...]

Enterprise Library Application Block Logging

The Enterprise Library Application Block has been recently released, as a user of the existing Logging Application Block (LAB) with cross web service request tracing it is a little disappointing to see no mention (as yet) of similar support in the new Logging and Instrumentation Application Block. As I’m currently mid-way through a development which uses [...]

Logging Application Block Log Levels

LAB LogLevels (summarized from Logging Application Block documentation © 2003 Microsoft Corporation None (level 0)No logging - not advised for production. Always (level 1)Default for system and all events that are raised without specifying the logging level. Eg, audit events or metering events can specify this log level. Error (level 2)Application running in production. All errors and [...]

Windows Service Path Not Found Exception

If you get an invalid path / path not found error when trying to start a .net windows service or right-click properties for it check any PerformanceCounterInstaller(s) and ensure their CategoryName is not the same as the ServiceInstaller’s ServiceName. Why? Seems to be something to do with the registry entries created/deleted when these installers run. [...]

Catching Errors in Windows Services

In Windows Service put a try..catch around InitializeComponent in New constructor to catch and handle any init problems, especially when using components that have external dependencies such as performance counters and message queues. TryInitializeComponent()Catch ex As Exception‘ Log or handle event here‘ if you want to inform the Windows Service Control Manager‘ that the service has [...]