In this installment of the Ripsaw project series I’ll sketch out some of my design goals for the new version of Ripsaw, and the rationale for those goals.
Split the App Into DLLs
The original Ripsaw was a 32-bit Windows application contained in a single executable. This made it easy to carry around on a USB drive and run on machines that I needed to debug. The downsides were that I had to link the C runtime library into the executable, and application was one monolithic entity that couldn’t be easily extended.
For the new Ripsaw I’m going to build it to use the C runtime in a DLL. For most of the machines I work with this will require carrying around the C runtime distributable, but I’m willing to do that as long as I don’t have to install anything on the terminal. I’m not completely up to speed with side-by-side assemblies; I prefer to just place the VS 2010 C runtime DLL in the same directory as the executable and run the app, but I’ll have to verify that’s still supported. (Edit: It is. Duh!) So far SxS has caused me a lot of grief, but that’s probably because I haven’t bothered to really understand it.
Create a Ripsaw API
Since I’m splitting out the C runtime, I’m also going to separate most of Ripsaw’s non-visual functionality into a separate API DLL. Not only will this make the core functionality more testable and enforce separation of UI, but I’ll be able to build more than one user interface around it. I’d like to build a command-line application as well as a graphical application. Sometimes you just can’t beat raw text.
Even though nearly all of my professional development is still 32-bit, I want to build Ripsaw to compile for both 32-bit and 64-bit architectures. I’ll need to do this eventually anyway, and this is a good time to start.
My original plans for Ripsaw included the ability to create filters for processing log output as it arrived in the application. Perhaps only lines containing certain values would be displayed, or maybe certain words would be shown in a particular color or font. Rather than trying to build every possible behavior into Ripsaw, I’ll publish an extensibility interface so that I can add features later on (or you can add them) without having to change the core API or UI.
Create a Windows 7 UI
The main UI that I’ll use will be a 32-bit graphical application targeting Windows XP, but I’d also like to take advantage of some of the new Windows 7 user interface controls such as the ribbon. I’m not inclined to try to serve both interface styles from one application, so after I finish the primary UI I’ll create a version that is specific to Windows 7. Since I’m putting most of the non-visual behavior into a separate DLL I’ll be free to experiment with different interfaces anyway.
In the next few articles I’ll delve into some more development specifics such as language and library choices.