NCommon

It appears that I do not have to implement multiple data options for my ProtoStack project as there’s another project out there that’s providing a DDD framework over various persistence implementations. It’s called NCommon.

It is a framework for implementing Unit of Work and Repository patterns over NHibernate, Linq-to-SQL and the Entity Framework.

Shifting Gears

After getting some work started on Orchestra and setting up the initial framework, I decided to step back and look at the possibility of developing the Windows and Web (ASP.NET MVC) versions of the application in parallel. It led me to look for frameworks that is best for this kind of development. With Prism and ASP.NET MVC both relatively new, I’m not surprised that there’s no such thing.

Someone posted a similar question in StackOverflow (“What’s the best way to target both WPF and web apps?“), and there’s no straight “look here!” answer.

After looking at many blog posts about MVVM, MVC, and other presentation patterns, I then thought that maybe I should set up an open-source project in Codeplex that provides a codebase for developers in a similar situation to explore various presentation layer options.

So, ProtoStack was born. I described it this way: “ProtoStack provides a prototype architecture that brings together various presentation patterns (MVVM, MVC, etc.). It is meant to be used in an architectural spike where developers can experiment and learn these patterns and build the foundation for their chosen framework.”

The project will begin with having various presentation layers talking to a common business and data layer, similar to Rockford Lhotka’s CSLA.NET reference implementation, ProjectTracker, except that it is lighter on the business layer side. I will be using the AdventureWorks sample database so that I don’t have to include SQL’s in the project.

The business and data layer will be using Fluent NHibernate, and, since its objective is to provide developers with architectural options, I will be adding other persistence methods to the mix, such as Entity Framework, Linq-to-SQL and even plain old ADO.NET.

Inevitably, there will be some development choices that will have to be made upfront, such as IOC container (Unity) and AOP framework (PostSharp). I might even toss in some Enterprise Library application blocks. The idea is to expose developers to these concepts, while allowing others who are well familiarized with them to make it easy to switch.

I hope that this project will invite peer reviews and generate discussion on which presentation strategy works best on which types of projects.

Orchestra ERP

The stock market was getting challenging for technical analysts so I lost motivation in developing the Euclid project (mentioned in the previous post.) Perhaps I will revisit it once the markets and trading get interesting again.

I have instead resumed developing my WPF ERP framework. I am currently using / planning to use the following free frameworks / tools available for my client layer:

This WPF ERP framework will start off as two-tier, consisting only of a client and a remote database, most probably SQL Express Edition.

The design, however, should be scaleable enough so that I can move the business layer to a server and put a service layer on top of it. When this happens, I will be using WCF, naturally.

Euclid’s Libraries and Frameworks

I was starting to do coding on generating Simple Moving Averages of Yahoo! Finance quotes when I found out that there already is an extensive technical analysis function library called TA-Lib.

Making use of what’s out there instead of reinventing the wheel, I’m going to use the following libraries / frameworks for Euclid:

Depending on the need for data persistence, I might also consider tossing in db4o object database into the mix.

Grokking the Business Layer

In line with my new side project, I have ordered two books from Amazon. I’m keen on getting things started on the right foot by following DDD (Domain Driven Design).

Expert C# 2008 Business Objects, which covers CSLA 3.6, written, of course, by Rockford Lhotka.

and Model-Driven Design Using Business Patterns, by Pavel Hruby, which is the best book so far on REA (Resource Event Agent).

Composite Application Guidance for WPF a.k.a. Prism

I must have been too busy with transitioning at work, this release escaped my radar. I’ve been playing around with the Smart Client Software Factory for Windows Forms and have gotten to like it. However, I found it quite clunky at times. So, I’m quite thrilled that they decided to rebuild the Composite Applications idea from the ground up, and even rebuilt the CAB-version for it, for WPF.

Prism, which is now called the Composite Application Guidance for WPF, is a more streamlined version of its predecessor. It discontinued its quite rigid approach of using WorkItems and Modules and kept it flexible, while at the same time allowing enough guidance for a best-practice approach.

The download package contains not only the framework but a reference implementation as well. The documentation initiates the user with the patterns involved and offers a good introduction to its technical design. No doubt Microsoft has learned from the user community on the steep learning curve of SCSF.

It’s about time that Patterns & Practices released a Composite Application framework that’s natively WPF. I’ve been waiting for it since the announcement of the now-defunct Acropolis.

(And guess what, now that this version has been released, the P&P guys are now working on the next one, which extends the framework to building composite applications on Silverlight!)

NET-DEV, the .Net Developers Network

I created a new social network for .Net Developers, called NET-DEV. The idea is to have a place to simply share what each one is up to and help each other out. Interesting stuff from YouTube, DotNet Rocks, and others are also posted there.

Time to Go XAML

I just moved to a new job, and my first project involves building a Windows Presentation Foundation (WPF) module over a CAB-derived shell. This signals my official entry into .Net 3.5. I always thought my entry into .Net 3.5 at work will begin with Windows Communication Foundaiton (WCF), which, in my opinion, is the most compelling among the new technologies because of its immediate value to enterprise development.

Nevertheless, I am embracing this opportunity to learn XAML and the nuances of developing using WPF. I am going to use SAMS’ Windows Presentation Foundation (Unleashed) as my guide.

Adopting Agility

I’ve been reading around for tips on ways to adopt agile methods, tools and techniques in an organization that already has its own process (and culture) set. A recent article from CoDe Magazine, titled Individuagility, written by Jean-Paul Boodhoo, lists 16 points on how this can be done.

He mentions some good reads, like The Pragmatic Programmer, best practices such as interface-based programming, design pattern refactoring, test driven development, and, of course, tool essentials like Source Code Control, Continuous Integration Server, Automated Build, Unit Testing.

Check it out. 

New Toy, cont’d.

I managed to grab a brief sale of the Toshiba A205-S6810 on Amazon, for $749, with free shipping within US. It was not as low as the $699 when I first spotted it, but it was still much lower than the $979 regular price. I’m happy I made this purchase. (For those in the Philippines who are interested in getting cheap laptops in the US, go for Amazon and have it delivered through Johnny Air Cargo in New York. I learned about this in a post in Tipid PC. You still get a lower price compared to what’s sold locally, even if you pay for more than $100 of shipping.)

So, with a Vista powered toy in hand, I proceeded to install all the software for my new development machine, starting with the latest from my MSDN subscription, stuff which I held up from installing because they were meant for Vistas, multi-core CPUs, and larger RAM. Stuff such as running server products (Sharepoint Server 2007, Visual Studio Foundation Server 2008, and the like) off Windows Server 2008 through a Virtual PC.

Now, I’m ready to set up for my agile development environment, starting with source control through Subversion. I learned that Subversion interfaces with Apache, but not with IIS. A minor setback, but that’s alright. I also learned that my old version of WAMP won’t run on Vista because of tighter security measures (it is unable to write to the registry or start a service on its own). I then went ahead with downloading the newer WampServer 2 and a Subversion version that runs for Apache 2.2. It will be integrated using instructions from this TrajiklyhHip blog entry.

This will be followed by an installation of TortoiseSVN, the Subversion client for Windows, and integrating it into Visual Studio 2008 with guidance from Garry’s Bit Patterns blog entry.

I will proceed with NAnt, NUnit, CruiseControl and BugTracker.Net when I’m done with source control setup.

« Older entries