Software architecture, design and development

.NET Development

We are experienced at designing and building desktop software for the Microsoft Windows platform using the .NET Framework. When necessary, and for performance reasons, we can interface with libraries written in unmanaged code. Details on some of our previous work in this area are available in this article about invoking unmanaged code to compare performance between two GIS libraries.

Desktop Software

Custom designed and built software that operates on the user’s desktop might seem a bit old-fashioned in the era of “Web 2.0”, but it doesn’t have to be. There are still plenty of systems that require the level of interactivity and access to hardware resources thay only a desktop application can provide.

The primary advantage of web applications is that they are centralized, and can be updated in one place so that all users benefit from a centrally managed application. By using Smart Client technology, you can have this central management and still have a product installed and available on your user’s desktop and start menu.

Server software

Behind every great web site is a great server infrastructure. It is no longer enough to just have a web site, for large infrastructure projects you will need some other sort of server software. Our experience designing and building mission critical systems will help you meet your server needs.

For server solutions we leverage the Windows Communication Foundation. Our experience with this framework led to the design and implementation of a light Enterprise Services Bus (ESB) which was deployed to connect several web applications with back-end resources and databases.

N-tier software architecture

“N-tier” is just a fancy way of saying software or design that encompasses all aspects from database, to data access, to network transport, to user interface, where each “layer” (data, network, user) is a “tier”. An N-Tier system is any system complex enough to warrant separating the concerns; most modern systems will include some sort of tier or layer based design.

Much of my work on Facial Recognition, Data Integration and Arrest and Booking software involved data drawn from disparate databases, aggregated through standardized web interfaces, sorted, filtered and cached on a variety of server installations, and presented to the user in a Rich client or web client user interface.

The previously-mentioned ESB project also involved N-tier architecture.