by Administrator
7. January 2012 17:31
Why I am starting over (again)? Click here to find out!
I deleted all of my "classic desktop" libraries and am starting over by building a new infrastructure for Metro style applications. Where BDUF (Big Design Up Front) is discouraged in the agile environment there are times and places where UML can really save you a lot of time. One of them is in the initial creation of your solution's projects and namespaces, the following is the end result of many iterations of renames, changes and updates - fortunately they were only done in the UML explorer so it was no major task; when the smoke settled I created the projects as applicable.
Legend
Green ... Metro application and projects
Gray ..... ASP.NET MVC4 (Desktop) application and projects
Blue ..... Portable Class Library
Yellow .. Data
Patterns
The projects to the left of the red vertical line are platform specific. The SolrContrib, Metro style application, UI projects will utilize the MVP-VM pattern and the GwnWeb, ASP.NET MVC4, application will use MVC.
Multi Targeted Application
SolrContrib is a Multi Targeted application, the actual source files will reside in the desktop projects and the metro style projects will link to them. The challenge was to maximize reuse, provide a clear separation of concerns, and reduce dependencies while trying to keep the number of projects as small as possible.
Platform Considerations
I found that Unit Test projects cannot add references to Metro projects, since we are a Multi Targeted application this is of little concern because all of our source will reside in the Desktop projects (the Metro projects will link to them). This was a factor in the initial design because I needed to ensure that TDD could be performed against all business logic (which will reside in the .bll projects).
Since the Windows Phone is not yet supported in the Visual Studio 2011 developer preview this is unknown territory however I will keep it in mind by putting as much code as possible within the Portable Class Library project (Gwn.Library.Portable).
Click on image to view full-size UC0000.png file
