<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://hastobe.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Steve Morgan - Technology Spot : .NET 3.5, Model-View-Presenter, Photography, Web Client Software Factory</title><link>http://hastobe.net/blogs/stevemorgan/archive/tags/.NET+3.5/Model-View-Presenter/Photography/Web+Client+Software+Factory/default.aspx</link><description>Tags: .NET 3.5, Model-View-Presenter, Photography, Web Client Software Factory</description><dc:language>en</dc:language><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>Time to do something real with Windows Presentation Foundation</title><link>http://hastobe.net/blogs/stevemorgan/archive/2008/04/15/time-to-do-something-real-with-windows-presentation-foundation.aspx</link><pubDate>Tue, 15 Apr 2008 20:23:00 GMT</pubDate><guid isPermaLink="false">b3b1d9c2-f4c9-4970-bb5d-c90d4bed0aec:6</guid><dc:creator>Steve Morgan</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://hastobe.net/blogs/stevemorgan/rsscomments.aspx?PostID=6</wfw:commentRss><comments>http://hastobe.net/blogs/stevemorgan/archive/2008/04/15/time-to-do-something-real-with-windows-presentation-foundation.aspx#comments</comments><description>&lt;p&gt;It’s been a while, but I’ve started work on a new pet project. Significantly, it’s my first foray into Windows Presentation Foundation.&lt;/p&gt;
&lt;p&gt;First, some background on the project. Outside of work, my main passion is for photography. I’m on the committee of my local photography club, the &lt;a class="" title="Visit the Shropshire Photographic Society site" href="http://www.shropshire-photographic.org.uk/" target="_blank"&gt;Shropshire Photographic Society&lt;/a&gt;. An important aspect of the club’s season is the numerous competitions. We have portrait competitions, natural history competitions, ‘open’ competitions and a whole host of others (too many, in my opinion, but that’s something else I’m working on). With the continuing demise of slides and the inevitable upsurge of digital images, attention is turning to how best to operate our competitions to include digital submissions. Handling these digital submissions is the main focus of my efforts, but already, I’ve broadened the scope to include a software solution to handle all of our competitions. By ensuring that the solution can be heavily tailored, I hope to be able to make it available to other clubs. The solution will track competition results, provide the ‘execution’ platform for digital competitions and integrate with our website (itself a .NET 2.0 / DotNetNuke implementation).&lt;/p&gt;
&lt;p&gt;But this is a technology blog, not a photography one, so it’s time to start talking about this project from a technology perspective. Although this is a one-man project, I’m determined to do it ‘right’. The primary reason is that I want to use it as a reference implementation for WPF applications. It will have an architecture (albeit a minimal one). I am an architect after all (I checked my business card and it says I am). Now, as usual my timing’s not great. You see, we now have Visual Studio .NET 2008 and .NET Framework 3.5. That’s fine, but there’s an awful lot more to developing great code (particularly if it’s supposed to be ‘Enterprise Ready’). I’m a big fan of &lt;a class="" title="Enterprise Library on CodePlex" href="http://www.codeplex.com/entlib" target="_blank"&gt;Enterprise Library&lt;/a&gt;, so I’m going to be using it extensively. But what to use as an Application Framework? I’ve delivered a, frankly, huge .NET 1.1 solution using the far-from-ideal &lt;a class="" title="The elderly UIPAB on MSDN" href="http://msdn2.microsoft.com/en-us/library/ms979217.aspx" target="_blank"&gt;User Interface Process Application Block&lt;/a&gt;. I’ve given the &lt;a class="" title="The Web Client Software Factory on CodePlex" href="http://www.codeplex.com/websf" target="_blank"&gt;Web Client Software Factory&lt;/a&gt; a go but as yet, there’s nothing really usable from Microsoft that supports WPF. There was Codename “&lt;a class="" title="Suspended animation - Acropolis" href="http://windowsclient.net/acropolis/" target="_blank"&gt;Acropolis&lt;/a&gt;”, a composite application framework targeting WPF. Acropolis itself has been suspended at CTP 1, but rumour is that it will be formally rolled into Service Pack 1 of the .NET framework 3.5. That’s great, but I can’t wait that long. There’s also &lt;a class="" title="The Prism community site on CodePlex" href="http://www.codeplex.com/prism/" target="_blank"&gt;Prism&lt;/a&gt;, which comes from the excellent Patterns &amp;amp; Practices group in the form of guidance (maybe with some supporting tooling?) but that’s evidently in its infancy. &lt;/p&gt;
&lt;p&gt;It looks like I’m going to have to roll my sleeves up and create the application framework myself. I’m going to be looking primarily at the &lt;a class="" title="John Gossman provides an introduction to MVVM" href="http://blogs.msdn.com/johngossman/archive/2005/10/08/478683.aspx" target="_blank"&gt;Model-View-ViewModel&lt;/a&gt; pattern, as opposed to MVC or MVP, as it seems to be more closely aligned to the way in which WPF works. Hopefully, I can keep fairly close to Acropolis/Prism so that it’s a fairly easy migration once Microsoft finally delivers the goods.&lt;/p&gt;
&lt;p&gt;So, let’s see how it goes. I’ve got to think big but build small and I feel like there’s a lot to learn. I’m not too proud to leech other people’s work, either, so if you’ve got any suggestions, I’m all ears? ‘til next time...&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://hastobe.net/aggbug.aspx?PostID=6" width="1" height="1"&gt;</description><category domain="http://hastobe.net/blogs/stevemorgan/archive/tags/Photography/default.aspx">Photography</category><category domain="http://hastobe.net/blogs/stevemorgan/archive/tags/WPF/default.aspx">WPF</category><category domain="http://hastobe.net/blogs/stevemorgan/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://hastobe.net/blogs/stevemorgan/archive/tags/UI/default.aspx">UI</category><category domain="http://hastobe.net/blogs/stevemorgan/archive/tags/Application+Blocks/default.aspx">Application Blocks</category><category domain="http://hastobe.net/blogs/stevemorgan/archive/tags/Web+Client+Software+Factory/default.aspx">Web Client Software Factory</category><category domain="http://hastobe.net/blogs/stevemorgan/archive/tags/Model-View-Presenter/default.aspx">Model-View-Presenter</category><category domain="http://hastobe.net/blogs/stevemorgan/archive/tags/MVVM/default.aspx">MVVM</category><category domain="http://hastobe.net/blogs/stevemorgan/archive/tags/Patterns/default.aspx">Patterns</category><category domain="http://hastobe.net/blogs/stevemorgan/archive/tags/MVP/default.aspx">MVP</category><category domain="http://hastobe.net/blogs/stevemorgan/archive/tags/Windows+Presentation+Foundation/default.aspx">Windows Presentation Foundation</category><category domain="http://hastobe.net/blogs/stevemorgan/archive/tags/MVC/default.aspx">MVC</category><category domain="http://hastobe.net/blogs/stevemorgan/archive/tags/Projects/default.aspx">Projects</category><category domain="http://hastobe.net/blogs/stevemorgan/archive/tags/Model-View-ViewModel/default.aspx">Model-View-ViewModel</category><category domain="http://hastobe.net/blogs/stevemorgan/archive/tags/Model-View-Controller/default.aspx">Model-View-Controller</category><category domain="http://hastobe.net/blogs/stevemorgan/archive/tags/UIPAB/default.aspx">UIPAB</category></item></channel></rss>