<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Smart Client</title>
        <link>http://geekswithblogs.net/jwatson/category/6996.aspx</link>
        <description>Smart Client</description>
        <language>en-US</language>
        <copyright>John Watson</copyright>
        <managingEditor>jwatson3d@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Smart Client (SCSF) Membership App - Views</title>
            <link>http://geekswithblogs.net/jwatson/archive/2007/08/25/114962.aspx</link>
            <description>&lt;p&gt;This post is part of a series which discusses the journey I took building a smart client membership application using Microsoft's &lt;a href="http://msdn2.microsoft.com/en-us/library/aa480482.aspx"&gt;Smart Client Software Factory&lt;/a&gt; (SCSF). You can navigate the entire series from &lt;a href="http://wrbsoftware.com/Articles/tabid/55/Default.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Views are probably the easiest artifact for smart client developers to understand and build. The fact that views are implemented as user controls and that there are recipes for generating them only lend to their ease of use. Finally, there is a lot of documentation and good diagrams about views to peruse. Even the model-view-presenter (MVP) paradigm is pretty well known or at least accessible with all the information available. What is perhaps a bit trickier is how to make multiple views work in concert &lt;em&gt;within the SCSF architecture of shells, work items, and controllers&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href="http://wrbsoftware.com/Articles/SmartClientSCSFAppViews/tabid/62/Default.aspx"&gt;Read the full article...&lt;/a&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:245020f2-8496-43b5-9338-1fc375d8cdca" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;, &lt;a href="http://technorati.com/tags/CAB" rel="tag"&gt;CAB&lt;/a&gt;, &lt;a href="http://technorati.com/tags/SCSF" rel="tag"&gt;SCSF&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114962"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114962" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jwatson/aggbug/114962.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>John Watson</dc:creator>
            <guid>http://geekswithblogs.net/jwatson/archive/2007/08/25/114962.aspx</guid>
            <pubDate>Sat, 25 Aug 2007 17:55:27 GMT</pubDate>
            <comments>http://geekswithblogs.net/jwatson/archive/2007/08/25/114962.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jwatson/comments/commentRss/114962.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jwatson/services/trackbacks/114962.aspx</trackback:ping>
        </item>
        <item>
            <title>Smart Client (SCSF) Membership App - Work Items</title>
            <link>http://geekswithblogs.net/jwatson/archive/2007/08/24/114957.aspx</link>
            <description>&lt;p&gt;This post is part of a series which discusses the journey I took building a smart client membership application using Microsoft's &lt;a href="http://msdn2.microsoft.com/en-us/library/aa480482.aspx"&gt;Smart Client Software Factory&lt;/a&gt; (SCSF). You can navigate the entire series from &lt;a href="http://wrbsoftware.com/Articles/tabid/55/Default.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Work Items are one of the SCSF/CAB artifacts that causes angst amongst smart client developers. Part of the problem lies with the early whitepaper &lt;a href="http://msdn2.microsoft.com/en-us/library/bb266334.aspx"&gt;Architecting Composite Smart Clients Using CAB and SCSF&lt;/a&gt; and the early CAB examples reflecting the thinking of the p&amp;amp;p team at that time. The section entitled &lt;em&gt;Use-Case-Driven-Strategy&lt;/em&gt; would have you create work items based upon each use case. In the banking case study, there would be 17 work items created! After pages and pages of details and diagrams on turning use cases into work items there's about half a page of text following that almost casually mentions another approach- mapping work items to business entities. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://wrbsoftware.com/LinkClick.aspx?link=65&amp;amp;tabid=55&amp;amp;mid=373"&gt;Read the full article...&lt;/a&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:596a176e-7d12-43fe-8cb9-10c551157d18" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/.NET"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/CAB"&gt;CAB&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/SCSF"&gt;SCSF&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114957"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114957" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jwatson/aggbug/114957.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>John Watson</dc:creator>
            <guid>http://geekswithblogs.net/jwatson/archive/2007/08/24/114957.aspx</guid>
            <pubDate>Sat, 25 Aug 2007 02:03:24 GMT</pubDate>
            <comments>http://geekswithblogs.net/jwatson/archive/2007/08/24/114957.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jwatson/comments/commentRss/114957.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jwatson/services/trackbacks/114957.aspx</trackback:ping>
        </item>
        <item>
            <title>Smart Client (SCSF) Membership App - Business Module</title>
            <link>http://geekswithblogs.net/jwatson/archive/2007/08/22/114902.aspx</link>
            <description>&lt;p&gt;This post is part of a series which discusses the journey I took building a smart client membership application using Microsoft's &lt;a href="http://msdn2.microsoft.com/en-us/library/aa480482.aspx"&gt;Smart Client Software Factory&lt;/a&gt; (SCSF). You can navigate the entire series from &lt;a href="http://wrbsoftware.com/Articles/tabid/55/Default.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Members module is typical of SCSF business modules - it encapsulates the presentation and UI logic of a related set of business functionality. For the membership application I'm building this means:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;People &lt;/li&gt;
    &lt;li&gt;Households &lt;/li&gt;
    &lt;li&gt;Contact Info (phone, email, etc.) &lt;/li&gt;
    &lt;li&gt;Addresses &lt;/li&gt;
    &lt;li&gt;Relationships between all of the above&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://wrbsoftware.com/LinkClick.aspx?link=60&amp;amp;tabid=55&amp;amp;mid=373"&gt;Read the full article...&lt;/a&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:0aaa32c9-c884-4ed4-ae8c-ad84e4f773ec" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/.NET"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/CAB"&gt;CAB&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/SCSF"&gt;SCSF&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114902"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114902" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jwatson/aggbug/114902.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>John Watson</dc:creator>
            <guid>http://geekswithblogs.net/jwatson/archive/2007/08/22/114902.aspx</guid>
            <pubDate>Wed, 22 Aug 2007 21:11:27 GMT</pubDate>
            <comments>http://geekswithblogs.net/jwatson/archive/2007/08/22/114902.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jwatson/comments/commentRss/114902.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jwatson/services/trackbacks/114902.aspx</trackback:ping>
        </item>
        <item>
            <title>Smart Client (SCSF) Membership App - Data Layer</title>
            <link>http://geekswithblogs.net/jwatson/archive/2007/08/21/114859.aspx</link>
            <description>&lt;p&gt;This post is part of a series which discusses the journey I took building a smart client membership application using Microsoft's &lt;a href="http://msdn2.microsoft.com/en-us/library/aa480482.aspx"&gt;Smart Client Software Factory&lt;/a&gt; (SCSF). You can navigate the entire series from &lt;a href="http://wrbsoftware.com/Articles/tabid/55/Default.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Several years ago I developed a .NET code generation tool based on XSLT. It evolved over time and even had a front-end GUI to enable selection of various templates as well as database schema browsing. I had to hack my way through the INFORMATION_SCHEMA output of databases and developed an XML schema representation of the data model to drive the XSL templates. Of course, about six months after I had a working version Kathleen Dollard published her book &lt;a target="_blank" href="http://www.apress.com/book/bookDisplay.html?bID=212"&gt;Code Generation in Microsoft .NET&lt;/a&gt; and I could've saved myself a lot of effort if I'd just waited.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://wrbsoftware.com/LinkClick.aspx?link=59&amp;amp;tabid=55&amp;amp;mid=373"&gt;Read the full article...&lt;/a&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:f31b5bcc-e7e5-448d-8db7-330da1273850" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/.NET"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/CAB"&gt;CAB&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/SCSF"&gt;SCSF&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114859"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114859" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jwatson/aggbug/114859.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>John Watson</dc:creator>
            <guid>http://geekswithblogs.net/jwatson/archive/2007/08/21/114859.aspx</guid>
            <pubDate>Tue, 21 Aug 2007 19:38:39 GMT</pubDate>
            <comments>http://geekswithblogs.net/jwatson/archive/2007/08/21/114859.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jwatson/comments/commentRss/114859.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jwatson/services/trackbacks/114859.aspx</trackback:ping>
        </item>
        <item>
            <title>Smart Client (SCSF) Membership App - Design</title>
            <link>http://geekswithblogs.net/jwatson/archive/2007/08/21/114847.aspx</link>
            <description>&lt;p&gt;This post is part of a series which discusses the journey I took building a smart client membership application using Microsoft's &lt;a href="http://msdn2.microsoft.com/en-us/library/aa480482.aspx"&gt;Smart Client Software Factory&lt;/a&gt; (SCSF). You can navigate the entire series from &lt;a href="http://wrbsoftware.com/Articles/tabid/55/Default.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The membership application is primarily about tracking and managing memberships in an organization such as a church or synagogue, small club or user group, sports team or league, etc. In the case of our church we need to track both individual persons and households. People may give us cell phone as well as home phone numbers and we mail our weekly newsletter to people who couldn't attend worship. Thus phone numbers can be associated with an individual person or a household and, of course, households have physical addresses for mailing purposes - we wouldn't mail two copies of a newsletter to a couple but rather one copy to their household address.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://wrbsoftware.com/LinkClick.aspx?link=58&amp;amp;tabid=55&amp;amp;mid=373"&gt;Read the full article...&lt;/a&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:6252c577-1439-487d-badd-211063d5c4a5" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/.NET"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/CAB"&gt;CAB&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/SCSF"&gt;SCSF&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114847"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114847" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jwatson/aggbug/114847.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>John Watson</dc:creator>
            <guid>http://geekswithblogs.net/jwatson/archive/2007/08/21/114847.aspx</guid>
            <pubDate>Tue, 21 Aug 2007 15:34:14 GMT</pubDate>
            <comments>http://geekswithblogs.net/jwatson/archive/2007/08/21/114847.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jwatson/comments/commentRss/114847.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jwatson/services/trackbacks/114847.aspx</trackback:ping>
        </item>
        <item>
            <title>Smart Client (SCSF) Membership App - Background</title>
            <link>http://geekswithblogs.net/jwatson/archive/2007/08/21/114838.aspx</link>
            <description>&lt;p&gt;This post is part of a series which discusses the journey I took building a smart client membership application using Microsoft's &lt;a target="_blank" href="http://msdn2.microsoft.com/en-us/library/aa480482.aspx"&gt;Smart Client Software Factory&lt;/a&gt; (SCSF). You can navigate the entire series from &lt;a href="http://wrbsoftware.com/Articles/tabid/55/Default.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My first approach was to fire up trusty old MS Access to build a single database even though I knew that sharing information wouldn't be easy yet is possible. I've used Access off and on since it was first introduced and even resurrected some screen shots (&lt;a target="_blank" href="http://wrbsoftware.com/Portals/0/WfW311/wfw_access.gif"&gt;here&lt;/a&gt;, &lt;a target="_blank" href="http://wrbsoftware.com/Portals/0/WfW311/access_cue.gif"&gt;here&lt;/a&gt;, and &lt;a target="_blank" href="http://wrbsoftware.com/Portals/0/WfW311/access_swtchbd.gif"&gt;here&lt;/a&gt;) using Virtual PC to run &lt;a href="http://geekswithblogs.net/jwatson/archive/2005/08/30/51586.aspx"&gt;Windows for Workgroups 3.11&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://wrbsoftware.com/LinkClick.aspx?link=57&amp;amp;tabid=55&amp;amp;mid=373"&gt;Read the full article...&lt;/a&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:bcc17c89-88f5-4781-bb1d-fdc93ebdae6c" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/.NET"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/CAB"&gt;CAB&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/SCSF"&gt;SCSF&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114838"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114838" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jwatson/aggbug/114838.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>John Watson</dc:creator>
            <guid>http://geekswithblogs.net/jwatson/archive/2007/08/21/114838.aspx</guid>
            <pubDate>Tue, 21 Aug 2007 13:10:02 GMT</pubDate>
            <comments>http://geekswithblogs.net/jwatson/archive/2007/08/21/114838.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jwatson/comments/commentRss/114838.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jwatson/services/trackbacks/114838.aspx</trackback:ping>
        </item>
        <item>
            <title>Building a Smart Client application using CAB / SCSF</title>
            <link>http://geekswithblogs.net/jwatson/archive/2007/08/20/114836.aspx</link>
            <description>&lt;p&gt;I am building a smart client application using free tools from Microsoft's &lt;a target="_blank" href="http://msdn2.microsoft.com/en-us/practices/default.aspx"&gt;patterns &amp;amp; practices&lt;/a&gt; team. The primary toolset is the &lt;a target="_blank" href="http://msdn2.microsoft.com/en-us/library/aa480482.aspx"&gt;Smart Client Software Factory&lt;/a&gt;, referred to as "SCSF", which is an integrated set of architecture guidance, templates and Visual Studio 2005 "recipes" that both makes the job easier (perhaps an oxymoron as you'll see) and gives you a solid framework to build a robust, scalable, professional-quality application. My aim is to document and share key points along the way.&lt;/p&gt;
&lt;p&gt;The application I'm building is a membership system used to manage and engage members of a group or organization. Key features it has are:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Flexible design enabling use by a variety of audiences. &lt;/li&gt;
    &lt;li&gt;Easy to use, familiar user interface. &lt;/li&gt;
    &lt;li&gt;Enable distributed management of data. &lt;/li&gt;
    &lt;li&gt;Enough features to provide a compelling reason to use it. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I am doing this for two reasons - to build a low cost (free) application that my &lt;a target="_blank" href="http://www.rock-church.org/"&gt;church&lt;/a&gt; can use to manage its membership and to satisfy my geek nature by building a serious application that others can use.&lt;/p&gt;
&lt;p&gt;My wife is the administrative assistant for our church and when she took over the position she inherited a variety of "data sources" - a church directory consisting of names, addresses, telephone numbers and email addresses in an MS Word document, other assorted membership lists in their own MS Word documents, Excel spreadsheets used to track attendance and an Outlook Express address book used for email communication. Our situation is more common than you may realize even in today's electronic age. Non-profits operate on very low (or &lt;u&gt;no&lt;/u&gt;!) budgets and volunteers who donate some time and effort. What started out for us as small organized lists has grown over time to become unmanageable and even outdated. Information has to be manually synchronized across multiple documents and inevitably things get missed and forgotten.&lt;/p&gt;
&lt;p&gt;Here are the posts which document this journey:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Introduction (this post) &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://wrbsoftware.com/LinkClick.aspx?link=57&amp;amp;tabid=55&amp;amp;mid=373"&gt;Background&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://wrbsoftware.com/LinkClick.aspx?link=58&amp;amp;tabid=55&amp;amp;mid=373"&gt;Overall Design&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://wrbsoftware.com/LinkClick.aspx?link=59&amp;amp;tabid=55&amp;amp;mid=373"&gt;Data Layer&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://wrbsoftware.com/LinkClick.aspx?link=60&amp;amp;tabid=55&amp;amp;mid=373"&gt;Business Module&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://wrbsoftware.com/LinkClick.aspx?link=65&amp;amp;tabid=55&amp;amp;mid=373"&gt;Work Items&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;Views &lt;/li&gt;
    &lt;li&gt;Services &lt;/li&gt;
    &lt;li&gt;Deployment Packaging &lt;/li&gt;
&lt;/ol&gt;
&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:fa7cada9-a49a-4e30-a53a-d4b6e5833100" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/.NET"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/CAB"&gt;CAB&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/SCSF"&gt;SCSF&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114836"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114836" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jwatson/aggbug/114836.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>John Watson</dc:creator>
            <guid>http://geekswithblogs.net/jwatson/archive/2007/08/20/114836.aspx</guid>
            <pubDate>Mon, 20 Aug 2007 16:56:34 GMT</pubDate>
            <comments>http://geekswithblogs.net/jwatson/archive/2007/08/20/114836.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jwatson/comments/commentRss/114836.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jwatson/services/trackbacks/114836.aspx</trackback:ping>
        </item>
    </channel>
</rss>