
This weekend I spend most of my Saturday working on my open source scheduling application. I started this project a year ago and never finished it. It has a long history of figuring out what would be the best solution for a scheduling application for students and developers that need to plan their project, but work alone or with two people.
But now the moment has finally come I can start playing around with tools and technologies to see what fits best for my application. One of the options is an implementation that relies heavily on the Microsoft Application Blocks, like the Composite UI Application Block and the Enterprise Library.
So Saturday I started working on a prototype that works with the Composite UI Application Block. My conclusion after a day of work is that it's actually pretty neat and fits my needs perfectly. Most of my time was spend on finding out how to fit each part of the application into the proposed architecture.
One of the main problems was to fit my model into a more or less service oriented environment. The application block works with services to implement the business logic. Which is a great method of separating the business logic from the UI. However, my model is one big ball of dependencies and links. I designed and implemented it in java a year ago and ported that to C# where I used events to trigger certain calculations. The result of this is that if you change the scheduled hours for a task, the application triggers a PERT network calculation that updates the min/max startdate and enddate of all linked tasks. This is possible with this model, but is a lot harder to do if you want to keep the model out of memory most of the time and only load the parts needed to complete a specific task.
The reason I want the model out of memory is because it's not really scalable when I keep the whole thing in memory and don't send the actual data of the schedule back to the storage. When I save every update to a database I can scale my application up to be multi-user. Doing this results in new challenges, but that's perfectly fine with me.
I will be traveling by train a lot next week to and from Utrecht, so I got plenty of time to expand my prototype and write more on how the application block can help structure and build some pretty good windows clients.