<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Hunt Blog</title>
	<atom:link href="http://huntjason.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://huntjason.wordpress.com</link>
	<description>using System.Hunt.Jason.Blog;</description>
	<lastBuildDate>Fri, 03 Feb 2012 18:00:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='huntjason.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Hunt Blog</title>
		<link>http://huntjason.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://huntjason.wordpress.com/osd.xml" title="Hunt Blog" />
	<atom:link rel='hub' href='http://huntjason.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Printing the Infragistics XamDataGrid (or other DataPresenterBase object) to PDF</title>
		<link>http://huntjason.wordpress.com/2012/02/02/printing-the-infragistics-xamdatagrid-or-other-datapresenterbase-object-to-pdf/</link>
		<comments>http://huntjason.wordpress.com/2012/02/02/printing-the-infragistics-xamdatagrid-or-other-datapresenterbase-object-to-pdf/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 19:17:32 +0000</pubDate>
		<dc:creator>huntjason</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://huntjason.wordpress.com/?p=322</guid>
		<description><![CDATA[In a two-step process, I was able to get Infragistics&#8217; XamDatagrid (or any of their controls that implement DataPresenterBase) to PDF. Download GhostScript&#8217;s GhostPDL for windows (I got it from here). Use Infragistics&#8217; Report Object to output an XPS (supported functionality) User GhostPDL to convert the XPS document to PDF Delete the temporary XPS document [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=322&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In a two-step process, I was able to get Infragistics&#8217; XamDatagrid (or any of their controls that implement DataPresenterBase) to PDF.</p>
<ol>
<li>Download GhostScript&#8217;s GhostPDL for windows (I got it from <a href="http://code.google.com/p/ghostscript/downloads/detail?name=ghostpdl-8.71-win32.zip&amp;can=2&amp;q=" title="GhostPDL">here</a>).</li>
<li>Use Infragistics&#8217; Report Object to output an XPS (supported functionality)</li>
<li>User GhostPDL to convert the XPS document to PDF</li>
<li>Delete the temporary XPS document</li>
</ol>
<p>Here&#8217;s the method I used successfully:</p>
<p>public void GeneratePdf(DataPresenterBase dataPresenterBase, string filePath) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;dataPresenterBase.AutoFit = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;var reportObj = new Report();<br />
&nbsp;&nbsp;&nbsp;&nbsp;reportObj.Sections.Add(new EmbeddedVisualReportSection(dataPresenterBase));<br />
&nbsp;&nbsp;&nbsp;&nbsp;reportObj.ReportSettings.Margin = new Thickness(5, 5, 5, 5);<br />
&nbsp;&nbsp;&nbsp;&nbsp;reportObj.ReportSettings.PageOrientation = PageOrientation.Landscape;<br />
&nbsp;&nbsp;&nbsp;&nbsp;reportObj.ReportSettings.PageSize = NorthAmerica11X17;<br />
&nbsp;&nbsp;&nbsp;&nbsp;reportObj.ReportSettings.HorizontalPaginationMode = HorizontalPaginationMode.Scale;<br />
&nbsp;&nbsp;&nbsp;&nbsp;var xpsTempFile = filePath.Replace(&#8220;.pdf&#8221;, &#8220;.xps&#8221;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;reportObj.Export(OutputFormat.XPS, xpsTempFile, false);<br />
&nbsp;&nbsp;&nbsp;&nbsp;dataPresenterBase.AutoFit = false;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;var p = new Process {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StartInfo = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UseShellExecute = false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CreateNoWindow = true,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RedirectStandardOutput = true,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileName = @&#8221;gxps-871.exe&#8221;,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Arguments = string.Format(&#8220;-sDEVICE=pdfwrite -sOutputFile=\&#8221;{0}\&#8221; -dNOPAUSE  \&#8221;{1}\&#8221;", filePath, xpsTempFile)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;};<br />
&nbsp;&nbsp;&nbsp;&nbsp;p.Start();<br />
&nbsp;&nbsp;&nbsp;&nbsp;p.StandardOutput.ReadToEnd();<br />
&nbsp;&nbsp;&nbsp;&nbsp;p.WaitForExit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;File.Delete(xpsTempFile);<br />
}</p>
<p>Hope this helps!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/huntjason.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/huntjason.wordpress.com/322/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/huntjason.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/huntjason.wordpress.com/322/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/huntjason.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/huntjason.wordpress.com/322/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/huntjason.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/huntjason.wordpress.com/322/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/huntjason.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/huntjason.wordpress.com/322/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/huntjason.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/huntjason.wordpress.com/322/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/huntjason.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/huntjason.wordpress.com/322/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=322&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://huntjason.wordpress.com/2012/02/02/printing-the-infragistics-xamdatagrid-or-other-datapresenterbase-object-to-pdf/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/566e64bb02207907d37ab61476b3a5c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">huntjason</media:title>
		</media:content>
	</item>
		<item>
		<title>Enabling Diagnostics on an IIS-Hosted AppFabric Windows Workflow</title>
		<link>http://huntjason.wordpress.com/2011/08/17/enabling-diagnostics-on-an-iis-hosted-appfabric-windows-workflow/</link>
		<comments>http://huntjason.wordpress.com/2011/08/17/enabling-diagnostics-on-an-iis-hosted-appfabric-windows-workflow/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 14:30:05 +0000</pubDate>
		<dc:creator>huntjason</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://huntjason.wordpress.com/?p=315</guid>
		<description><![CDATA[AppFabric workflows, hosted in IIS, expose no different an endpoint than a WCF service. If you are familiar with WCF diagnostics, there&#8217;s nothing new to learn here. If you aren&#8217;t, here are the details that I have received through a support ticket with Microsoft: How to enable logging information for several Windows Workflow Foundation namespaces. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=315&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>AppFabric workflows, hosted in IIS, expose no different an endpoint than a WCF service. If you are familiar with WCF diagnostics, there&#8217;s nothing new to learn here. If you aren&#8217;t, here are the details that I have received through a support ticket with Microsoft:</p>
<ul>
<li><a href="http://support.microsoft.com/kb/972914" title="How to enable logging information for several Windows Workflow Foundation namespaces" target="_blank">How to enable logging information for several Windows Workflow Foundation namespaces</a>.</li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms733025.aspx" title="Configuring WCF Tracing" target="_blank">Configuring WCF Tracing</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms732023.aspx" title="Service Trace Viewer Tool" target="_blank">Service Trace Viewer Tool</a></li>
<li><a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=11310" title="Download SvcTraceViewer.exe from Windows SDK" target="_blank">Download SvcTraceViewer.exe from Windows SDK</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/huntjason.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/huntjason.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/huntjason.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/huntjason.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/huntjason.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/huntjason.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/huntjason.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/huntjason.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/huntjason.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/huntjason.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/huntjason.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/huntjason.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/huntjason.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/huntjason.wordpress.com/315/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=315&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://huntjason.wordpress.com/2011/08/17/enabling-diagnostics-on-an-iis-hosted-appfabric-windows-workflow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/566e64bb02207907d37ab61476b3a5c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">huntjason</media:title>
		</media:content>
	</item>
		<item>
		<title>Thoughts on DDD and IoC</title>
		<link>http://huntjason.wordpress.com/2011/08/12/thoughts-on-ddd-and-ioc/</link>
		<comments>http://huntjason.wordpress.com/2011/08/12/thoughts-on-ddd-and-ioc/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 14:28:43 +0000</pubDate>
		<dc:creator>huntjason</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://huntjason.wordpress.com/?p=297</guid>
		<description><![CDATA[I have found that, if you drive out the dependencies of an object and express those dependencies in terms of interfaces, your domain tends to be a lot more clearly defined but that you need to rely far more heavily on your IoC container to address these dependencies. Fortunately, it also allows you to find [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=297&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have found that, if you drive out the dependencies of an object and express those dependencies in terms of interfaces, your domain tends to be a lot more clearly defined but that you need to rely far more heavily on your IoC container to address these dependencies. Fortunately, it also allows you to find dependency patterns far more easily and consolidate those dependencies into concrete implementations that have a focus in purpose (a.k.a. the <a title="Single Responsibility Principle" href="http://en.wikipedia.org/wiki/Single_responsibility_principle" target="_blank">single responsibility principle</a>). Driving out these dependencies from the requirements of the class through interfaces leads to many small, client-specific, interfaces so that anyone that comes across the class later on and wants to try and figure out what the intent is of the code is not going to be distracted by a dependency that has been passed in that has many more methods on it than is needed by the client class itself (a.k.a. the <a title="Interface Segregation Principle" href="http://en.wikipedia.org/wiki/Interface_segregation_principle" target="_blank">interface segregation principle</a>). Making these dependencies required through either constructor dependency (my personal choix de vie) or property dependency injection (not my favourite because it is more open to runtime errors) is called an inversion of control (a.k.a. the <a title="Dependency Inversion Principle" href="http://en.wikipedia.org/wiki/Dependency_inversion_principle" target="_blank">dependency inversion principle</a>)  leads to strong reliance on an Inversion of Control container.  This method of designing classes and driving out features are two of the three principles of <a title="SOLID" href="http://en.wikipedia.org/wiki/Solid_(object-oriented_design)" target="_blank">SOLID design</a>.</p>
<p>SOLID is not new (thank you <a title="Uncle Bob Martin" href="http://www.twitter.com/unclebobmartin" target="_blank">Uncle Bob</a>!) and I think that many of the concepts are generally agreed upon by most developers concerned with good design. What I want to do in this article is try and illustrate how this changes the way you develop your code.</p>
<p><img src="http://jeffsaddmind.com/wp-content/uploads/2010/03/horizontal-rule-ball-one.png" style="border:none;display:block;margin-left:auto;margin-right:auto;" /></p>
<p>In the first scenario, I am responsible for building a class that shows the name of the application in the title bar of the application window. We&#8217;re trying to develop a really strong architecture with as few points of failure as possible so that we can make a change in one spot and it corrects the bug in other spots as well.</p>
<ul>
<li>Whether I am using MVP, MVC, MVVM, or straight code-behind classes I&#8217;ll have a class that is connected to the User Interface screen (webpage, windows form, mobile device screen, whatever).</li>
</ul>
<p>class MainPageBackingClass {<br />
        // Public property the UI uses to provide the Application Name in the title bar<br />
        public string TItleBarText { get { } }<br />
}<br />
</p>
<ul>
<li>There&#8217;s a desire to provide localization for our application and that&#8217;s going to be provided somewhere else in our application. My class needs to get the string that puts the application name up on the screen.</li>
</ul>
<p>class MainPageBackingClass {<br />
        public MainPageBackingClass(IMainPageBackingClassStringsProvider stringsProvider) { .. }<br />
        // Public property the UI uses to provide the Application Name in the title bar<br />
        public string TItleBarText { get { return  stringsProvider.ApplicationName; } }<br />
}<br />
</p>
<p>interface IMainPageBackingClassStringsProvider { string ApplicationName { get; } }</p>
<p>At this point I don&#8217;t care, from the design of my class&#8217; perspective, what is implementing IMainPageBackingClassStringsProvider, I just care that I need something to provide that string for me. The subtle point to notice here is that the class is defining what it needs and driving out it&#8217;s dependencies. There is an interface (IMainPageBackingClassStringsProvider) that is providing only the single string. That&#8217;s okay.</p>
<p><img src="http://jeffsaddmind.com/wp-content/uploads/2010/03/horizontal-rule-ball-one.png" style="border:none;display:block;margin-left:auto;margin-right:auto;" /></p>
<p>Okay, I&#8217;m done and I feel good about myself. My next assignment is to create a class that assembles an email message. It puts the user&#8217;s name in the formatted message.</p>
<ul>
<li>I need a class that takes a format-able string and puts the user&#8217;s name in it.</li>
</ul>
<div>class MessageBuilder { }</div>
<p></p>
<div>
<ul>
<li>It&#8217;s going to need something to provide the formatted message to it.</li>
</ul>
</div>
<div>class MessageBuilder {</div>
<div>        MessageBuilder(IFormattedMessageProvider messageProvider) { &#8230; }</div>
<div>}</div>
<p></p>
<div>
<div>interface IFormattedMessageProvider { string FormattedMessage { get; } }</div>
</div>
<p></p>
<div>
<ul>
<li>And now a method that takes in something that provides the user&#8217;s name</li>
</ul>
<div>class MessageBuilder {</div>
<div>        public string Format(IUserNameProvider userNameProvider) {</div>
<div>               return string.Format(messageProvider.FormattedMessage, userNameProvider.UserName);</div>
<div>        }</div>
<div>}</div>
</div>
<p></p>
<div>interface IUserNameProvider { string UserName { get; } }</div>
<p></p>
<div>In my application I now have three dependencies (IMainPageBackingClassStringsProvider, IFormattedMessageProvider, and IUserNameProvider). There&#8217;s an emerging pattern here that there are at least two dependencies requiring strings. Since a class can implement multiple interfaces without any problem, I am going to build a class that has a singular purpose (to provide localized strings) and implement both interfaces.</div>
<p></p>
<div>class StringsProvider : IMainPageBackingClassStringsProvider, IFormattedMessageProvider {</div>
<div>         public string ApplicationName { get { return &#8220;Hello World&#8221;; } }</div>
<div>         public string FormattedMessage { get { return &#8220;Welcome {0}!&#8221;; } }</div>
<div>}</div>
<p></p>
<p><img src="http://jeffsaddmind.com/wp-content/uploads/2010/03/horizontal-rule-ball-one.png" style="border:none;display:block;margin-left:auto;margin-right:auto;" /></p>
<div>Now, here&#8217;s the kicker of this entire scenario. There&#8217;s a temptation for us to consolidate all of those strings that are being provided by the StringsProvider class into a single interface (maybe call it IStringsProvider) and have both the MessageBuilder class and MainPageBackingClass have a dependency on a single interface. On first inspection, that would appear to a good idea. The issue comes that a later developer might get confused as to the intent of the code in one of the classes if there are more methods/properties available to them than is needed by the class. If, for example, it ended up that you had two interfaces, one provided ApplicationName as a string and another providing ApplicationTitle as a string.</div>
<p></p>
<div>From within the context of separate interfaces, each class relying on an interface providing only the single string, it would be easy for the developer to know which string they were to be using within the class. It wouldn&#8217;t be confusing because there&#8217;s only one property to choose from. If, though, we had consolidated those string providing dependencies into a single interface, we now have two properties (ApplicationName and ApplicationTitle) being provided by this interface. Which one should I, as a developer of MainPageBackingClass choose? What if there are hundreds of other properties to choose from in my consolidated interface that I now have to scan through and guess which one I really need to use? It&#8217;s much easier to express the intent of the code through individualized interfaces.</div>
<p></p>
<div>Interfaces are the cheapest thing to produce in code.</div>
<p></p>
<div>Luckily classes can implement multiple interfaces (even hundreds if need be) and there&#8217;s always your IoC container that can produce all the magic to get your class the one it needs at run-time.</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/huntjason.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/huntjason.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/huntjason.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/huntjason.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/huntjason.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/huntjason.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/huntjason.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/huntjason.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/huntjason.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/huntjason.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/huntjason.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/huntjason.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/huntjason.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/huntjason.wordpress.com/297/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=297&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://huntjason.wordpress.com/2011/08/12/thoughts-on-ddd-and-ioc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/566e64bb02207907d37ab61476b3a5c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">huntjason</media:title>
		</media:content>

		<media:content url="http://jeffsaddmind.com/wp-content/uploads/2010/03/horizontal-rule-ball-one.png" medium="image" />

		<media:content url="http://jeffsaddmind.com/wp-content/uploads/2010/03/horizontal-rule-ball-one.png" medium="image" />

		<media:content url="http://jeffsaddmind.com/wp-content/uploads/2010/03/horizontal-rule-ball-one.png" medium="image" />
	</item>
		<item>
		<title>Local Installation of Windows Server AppFabric</title>
		<link>http://huntjason.wordpress.com/2011/04/19/local-installation-of-appfabric/</link>
		<comments>http://huntjason.wordpress.com/2011/04/19/local-installation-of-appfabric/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 16:26:44 +0000</pubDate>
		<dc:creator>huntjason</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://huntjason.wordpress.com/?p=280</guid>
		<description><![CDATA[I went through the process of installing and getting AppFabric working on my local machine based on information I gathered in my Windows Workflow 4.0 and Windows Server AppFabric &#8211; My Resources for Getting Started post. I then had to create a document that instructed other developers on my team how to install and get our [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=280&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I went through the process of installing and getting AppFabric working on my local machine based on information I gathered in my <a href="http://huntjason.wordpress.com/2011/03/31/windows-workflow-4-0-and-windows-server-appfabric-my-resources-for-getting-started/">Windows Workflow 4.0 and Windows Server AppFabric &#8211; My Resources for Getting Started post</a>. I then had to create a document that instructed other developers on my team how to install and get our workflow app up and running. Here&#8217;s the script (as I think it would be useful to anyone else just getting started). I know that not all the steps are necessary (e.g. installation of the persistence store can be done within the AppFabric Configuration Wizard) but I felt these were the more intuitive steps to letting developers know what was going on under the hood. Here goes nothing:</p>
<h3><strong>Installing AppFabric</strong></h3>
<ol>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=467e5aa5-c25b-4c80-a6d2-9f8fb0f337d2">Download and install the version of Windows Server AppFabric</a> appropriate for your machine (see Additional Information section at bottom of the page to determine which to install)</li>
</ol>
<p><span class="Apple-style-span" style="line-height:18px;color:#444444;font-family:Arial, 'Trebuchet MS', sans-serif;"><strong>Note:</strong> At the end of installation you will see the “See recommended updates” link at the top. Click it and install the updates. Also, uncheck the &#8220;Launch configuration tool.&#8221; checkbox. We will configure this in a separate step to add clarity.</span></p>
<p><span class="Apple-style-span" style="line-height:18px;color:#444444;font-family:Arial, 'Trebuchet MS', sans-serif;"><a title="Make sure you do this!" href="http://wiki/index.php/File:AppFabricInstallationNote.jpg"><img src="http://wiki/images/0/02/AppFabricInstallationNote.jpg" alt="Make sure you do this!" width="781" height="589" border="0" /></a></span></p>
<p><a id="Installing_Persistence_Store_.28Database.29" name="Installing_Persistence_Store_.28Database.29"></a></p>
<h3><strong>Installing Persistence Store (Database)</strong></h3>
<ol>
<li>Create a new database (&#8220;SQLPersistenceStore&#8221;, but name is really unimportant), run the scripts (provided by Microsoft) to create the schema and logic for this database. Manually run the following scripts, located in %SystemRoot%\WINDOWS\Microsoft.Net\Framework\v4.0.30319\SQL\en\ or %SystemRoot%\WINDOWS\Microsoft.Net\Framework64\v4.0.30319\ if you are running a 64 bit operating system: SqlWorkflowInstanceStoreSchema.sql and SqlWorkflowInstanceStoreLogic.sql</li>
<li>Create a SQL User account to connect to the newly created database. The user account needs to have db_reader and db_writer permissions as well as be given ownership of the System.Activities.DurableInstancing schema (created in the above step).</li>
</ol>
<p><a id="Configuring_AppFabric" name="Configuring_AppFabric"></a></p>
<h3><strong>Configuring AppFabric</strong></h3>
<ol>
<li>Run the Configure AppFabric application (now installed in your start menu).
<div>
<div><a title="Do this too!" href="http://wiki/index.php/File:ConfigureAppFabric.jpg"><img src="http://wiki/images/4/4f/ConfigureAppFabric.jpg" alt="Do this too!" width="142" height="24" border="0" /></a></div>
</div>
</li>
<li>(Optional? I am not sure that the monitoring service is necessary but I think that it is what creates the add-in in IIS Manager to view the persisted instances) On the &#8216;Hosting Services Tab&#8217; of the Windows Server AppFabric Configuration Wizard&#8217; screen, check the &#8216;Set monitoring configuration&#8217; checkbox, select the System.Data.SqlClient item from the &#8216;Monitoring provider&#8217; drop-down and click &#8216;Configure&#8217;
<div>
<div><a title="Configuring the Hosting Service" href="http://wiki/index.php/File:ConfigureHostingServices.jpg"><img src="http://wiki/images/a/a0/ConfigureHostingServices.jpg" alt="Configuring the Hosting Service" width="789" height="595" border="0" /></a></div>
</div>
</li>
<li>On the &#8216;Windows Server AppFabric Monitoring Store Configuration&#8217; screen, click the &#8216;Register AppFabric monitoring store in root web.config checkbox, select the database (created in step 1 above) in the Connection String section, and select the &#8216;SQL Server authentication&#8217; option in the &#8216;Security Configuration&#8217; section, providing the username and password created above.
<div>
<div><a title="Configuring the Monitoring Store" href="http://wiki/index.php/File:ConfiguringMonitoringScoreConfiguration.jpg"><img src="http://wiki/images/7/72/ConfiguringMonitoringScoreConfiguration.jpg" alt="Configuring the Monitoring Store" width="650" height="548" border="0" /></a></div>
</div>
</li>
<li>Back on the Hosting Services Tab, check the &#8216;Set persistence configuration&#8217; checkbox, select the sqlStoreProvider item from the &#8216;Persistence provider&#8217; drop-down and click &#8216;Configure&#8217;
<div>
<div><a title="Configuring the Persistence Store" href="http://wiki/index.php/File:ConfiguringThePersistenceStore.jpg"><img src="http://wiki/images/7/78/ConfiguringThePersistenceStore.jpg" alt="Configuring the Persistence Store" width="651" height="548" border="0" /></a></div>
</div>
</li>
<li>On the &#8216;Windows Server AppFabric Persistence Store Configuration&#8217; screen, click the &#8216;Register AppFabric persistence store in root web.config checkbox, select the database (created in step 1 above) in the Connection String section, and select the &#8216;SQL Server authentication&#8217; option in the &#8216;Security Configuration&#8217; section, providing the username and password created above.</li>
<li>Back on the &#8216;Windows Server AppFabric Configuration Wizard&#8217;, click the &#8216;Next &gt;&#8217; button to complete the wizard.</li>
</ol>
<p><a id="Creating_the_Virtual_Directory" name="Creating_the_Virtual_Directory"></a></p>
<h3><strong>Creating the Virtual Directory</strong></h3>
<ol>
<li>Open IIS Manager (inetmgr from the &#8216;Run&#8217; prompt) and create a new Application under the Default Website node and pointing the virtual directory to the workflow project folder in your development environment (e.g. c:\dev\MyWorkflowApp\source\application\WorkflowProject).</li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/huntjason.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/huntjason.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/huntjason.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/huntjason.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/huntjason.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/huntjason.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/huntjason.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/huntjason.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/huntjason.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/huntjason.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/huntjason.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/huntjason.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/huntjason.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/huntjason.wordpress.com/280/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=280&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://huntjason.wordpress.com/2011/04/19/local-installation-of-appfabric/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/566e64bb02207907d37ab61476b3a5c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">huntjason</media:title>
		</media:content>

		<media:content url="http://wiki/images/0/02/AppFabricInstallationNote.jpg" medium="image">
			<media:title type="html">Make sure you do this!</media:title>
		</media:content>

		<media:content url="http://wiki/images/4/4f/ConfigureAppFabric.jpg" medium="image">
			<media:title type="html">Do this too!</media:title>
		</media:content>

		<media:content url="http://wiki/images/a/a0/ConfigureHostingServices.jpg" medium="image">
			<media:title type="html">Configuring the Hosting Service</media:title>
		</media:content>

		<media:content url="http://wiki/images/7/72/ConfiguringMonitoringScoreConfiguration.jpg" medium="image">
			<media:title type="html">Configuring the Monitoring Store</media:title>
		</media:content>

		<media:content url="http://wiki/images/7/78/ConfiguringThePersistenceStore.jpg" medium="image">
			<media:title type="html">Configuring the Persistence Store</media:title>
		</media:content>
	</item>
		<item>
		<title>Windows Workflow 4.0 and Windows Server AppFabric &#8211; My Resources for Getting Started</title>
		<link>http://huntjason.wordpress.com/2011/03/31/windows-workflow-4-0-and-windows-server-appfabric-my-resources-for-getting-started/</link>
		<comments>http://huntjason.wordpress.com/2011/03/31/windows-workflow-4-0-and-windows-server-appfabric-my-resources-for-getting-started/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 15:32:31 +0000</pubDate>
		<dc:creator>huntjason</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://huntjason.wordpress.com/?p=274</guid>
		<description><![CDATA[I&#8217;m starting on a new feature of the application I work on in my day-to-day. We&#8217;re building out a feature to replicate some human workflows that are long running. Here&#8217;s some of the resources I have accumulated so far: Introduction Windows Workflow Foundation (WF) is a method of creating discrete activities that can be used [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=274&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m starting on a new feature of the application I work on in my day-to-day. We&#8217;re building out a feature to replicate some human workflows that are long running. Here&#8217;s some of the resources I have accumulated so far:</p>
<h2>Introduction</h2>
<hr />
<p><a title="http://msdn.microsoft.com/en-us/netframework/aa663328" rel="nofollow" href="http://msdn.microsoft.com/en-us/netframework/aa663328">Windows Workflow Foundation</a> (WF) is a method of creating discrete activities that can be used to model the workflow of an application or human workflows. It &#8220;provides a programming model, in-process workflow engine and rehostable designer to implement long-running processes as workflows within .NET applications&#8221;.</p>
<p>With .NET 4.0, a new programming model as well as further integration between <a title="http://msdn.microsoft.com/en-us/netframework/aa663324" rel="nofollow" href="http://msdn.microsoft.com/en-us/netframework/aa663324">Windows Communication Foundation</a> (WCF) and WF was created.</p>
<p>The tasks I am looking to automate are human activities that are often long-running such as follow-up processes as well as approval processes where an activity is performed, a duration expires or the workflow is preempted by further user input and then continues to completion. The <a title="http://msdn.microsoft.com/en-us/library/ff432975.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ff432975.aspx">Creating a Long-running Workflow Service</a> article defines a durable workflow as a &#8220;long running workflow services may run for long periods of time. At some point the workflow may go idle waiting for some additional information. When this occurs the workflow is persisted to a <a title="http://www.microsoft.com/sqlserver/en/us/default.aspx" rel="nofollow" href="http://www.microsoft.com/sqlserver/en/us/default.aspx">SQL Server</a> database and is removed from memory. When the additional information becomes available the workflow instance is loaded back into memory and continues executing.&#8221; These long running, durable workflows can be hosted in WCF Services (<a title="http://msdn.microsoft.com/en-us/library/ms730158.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ms730158.aspx">Hosting Options</a>: self-hosted in a managed application, hosted in a managed windows service, in <a title="http://www.iis.net/" rel="nofollow" href="http://www.iis.net/">Internet Information Services</a> [IIS], or <a title="http://msdn.microsoft.com/en-us/library/ms734677.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ms734677.aspx">Windows Process Activation Services</a> [WAS]), Windows Servies (self-created or <a title="http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx">Windows Server AppFabric</a>), or in the cloud (<a title="http://www.microsoft.com/windowsazure/AppFabric/Overview/default.aspx" rel="nofollow" href="http://www.microsoft.com/windowsazure/AppFabric/Overview/default.aspx">Windows Azure AppFabric</a>).</p>
<p><span style="font-size:18px;line-height:27px;">WF 4.0</span></p>
<hr />
<ul>
<li><a title="http://msdn.microsoft.com/en-us/netframework/aa663328" rel="nofollow" href="http://msdn.microsoft.com/en-us/netframework/aa663328">Windows Workflow Foundation (MSDN Home)</a></li>
<li><a title="http://msdn.microsoft.com/en-us/netframework/wf-screencasts.aspx#introwf4" rel="nofollow" href="http://msdn.microsoft.com/en-us/netframework/wf-screencasts.aspx#introwf4">Windows Workflow Foundation (WF) Screencasts</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/netframework/ff802403" rel="nofollow" href="http://msdn.microsoft.com/en-us/netframework/ff802403">Getting started with Windows Workflow Foundation 4 and the different workflow authoring models</a></li>
<li><a title="http://msdn.microsoft.com/en-us/netframework/ff802406" rel="nofollow" href="http://msdn.microsoft.com/en-us/netframework/ff802406">Executing workflows</a></li>
<li><a title="http://msdn.microsoft.com/en-us/netframework/ff803562" rel="nofollow" href="http://msdn.microsoft.com/en-us/netframework/ff803562">Working with data in workflows</a></li>
<li><a title="http://msdn.microsoft.com/en-us/netframework/ff803561" rel="nofollow" href="http://msdn.microsoft.com/en-us/netframework/ff803561">Developing custom activities</a></li>
<li><a title="http://msdn.microsoft.com/en-us/netframework/ff858943" rel="nofollow" href="http://msdn.microsoft.com/en-us/netframework/ff858943">Activity designers</a></li>
<li><a title="http://msdn.microsoft.com/en-us/netframework/ff859495" rel="nofollow" href="http://msdn.microsoft.com/en-us/netframework/ff859495">Workflow services</a></li>
<li><a title="http://msdn.microsoft.com/en-us/netframework/ff852530" rel="nofollow" href="http://msdn.microsoft.com/en-us/netframework/ff852530">Hosting Workflow services</a></li>
<li><a title="http://msdn.microsoft.com/en-us/netframework/ff853342" rel="nofollow" href="http://msdn.microsoft.com/en-us/netframework/ff853342">Workflow services and message correlation</a></li>
<li><a title="http://msdn.microsoft.com/en-us/netframework/ff852165" rel="nofollow" href="http://msdn.microsoft.com/en-us/netframework/ff852165">Developing asynchronous activities</a></li>
<li><a title="http://msdn.microsoft.com/en-us/netframework/ff852164" rel="nofollow" href="http://msdn.microsoft.com/en-us/netframework/ff852164">Long running workflows using the SqlWorkflowInstanceStore and a WorkflowApplication</a></li>
<li><a title="http://msdn.microsoft.com/en-us/netframework/ff852163" rel="nofollow" href="http://msdn.microsoft.com/en-us/netframework/ff852163">Long running workflows using the SqlWorkflowInstanceStore and a WorkflowServiceHost</a></li>
<li><a title="http://msdn.microsoft.com/en-us/netframework/ff852162" rel="nofollow" href="http://msdn.microsoft.com/en-us/netframework/ff852162">Error handling using the WorkflowApplication.OnUnhandledException, the WorkflowServiceHost WorkflowUnhandledExceptionBehavior and the TryCatch activity</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee342461.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee342461.aspx">A Developer&#8217;s Introduction to Windows Workflow Foundation (WF) in .NET 4</a></li>
</ul>
<p><span style="font-size:18px;line-height:27px;">Activity-specific Links</span><a id="Activity-specific_Links" name="Activity-specific_Links"></a></p>
<hr />
<ul>
<li><a title="http://blogs.msdn.com/b/buckh/archive/2010/01/21/deep-dive-on-windows-workflow-4-0-activities.aspx" rel="nofollow" href="http://blogs.msdn.com/b/buckh/archive/2010/01/21/deep-dive-on-windows-workflow-4-0-activities.aspx">Deep Dive on Windows Workflow 4.0 Activities</a>
<ul>
<li><a title="http://blogs.msdn.com/patcarna/archive/2009/12/04/introduction-to-windows-workflow-4-0.aspx" rel="nofollow" href="http://blogs.msdn.com/patcarna/archive/2009/12/04/introduction-to-windows-workflow-4-0.aspx">Introduction to Windows Workflow 4.0</a></li>
<li><a title="http://blogs.msdn.com/patcarna/archive/2010/01/04/windows-workflow-4-0-copyfile.aspx" rel="nofollow" href="http://blogs.msdn.com/patcarna/archive/2010/01/04/windows-workflow-4-0-copyfile.aspx">Windows Workflow 4.0 &#8211; CopyFile</a></li>
<li><a title="http://blogs.msdn.com/patcarna/archive/2010/01/07/windows-workflow-4-0-copydirectory-part-1-of-3.aspx" rel="nofollow" href="http://blogs.msdn.com/patcarna/archive/2010/01/07/windows-workflow-4-0-copydirectory-part-1-of-3.aspx">Windows Workflow 4.0 – CopyDirectory (Part 1 of 3)</a></li>
<li><a title="http://blogs.msdn.com/patcarna/archive/2010/01/07/windows-workflow-4-0-copydirectory-part-2-of-3.aspx" rel="nofollow" href="http://blogs.msdn.com/patcarna/archive/2010/01/07/windows-workflow-4-0-copydirectory-part-2-of-3.aspx">Windows Workflow 4.0 – CopyDirectory (Part 2 of 3)</a></li>
<li><a title="http://blogs.msdn.com/patcarna/archive/2010/01/08/windows-workflow-4-0-copydirectory-part-3-of-3.aspx" rel="nofollow" href="http://blogs.msdn.com/patcarna/archive/2010/01/08/windows-workflow-4-0-copydirectory-part-3-of-3.aspx">Windows Workflow 4.0 – CopyDirectory (Part 3 of 3)</a></li>
<li><a title="http://blogs.msdn.com/patcarna/archive/2010/01/19/windows-workflow-4-0-workflow-instance-extensions.aspx" rel="nofollow" href="http://blogs.msdn.com/patcarna/archive/2010/01/19/windows-workflow-4-0-workflow-instance-extensions.aspx">Windows Workflow 4.0 – Workflow Instance Extensions</a></li>
</ul>
</li>
<li><a title="http://burcakcakiroglu.com/?p=1867" rel="nofollow" href="http://burcakcakiroglu.com/?p=1867">Using PickActivity In WF 4.0</a></li>
<li><a title="http://burcakcakiroglu.com/?p=1651" rel="nofollow" href="http://burcakcakiroglu.com/?p=1651">Using Bookmarks In WF 4.0</a></li>
<li><a title="http://blogs.microsoft.co.il/blogs/applisec/archive/2010/04/08/dynamic-activities-in-wf-4-0.aspx" rel="nofollow" href="http://blogs.microsoft.co.il/blogs/applisec/archive/2010/04/08/dynamic-activities-in-wf-4-0.aspx">Dynamic activities in WF 4.0</a></li>
<li><a title="http://demiliani.com/blog/archive/2009/05/29/6553.aspx" rel="nofollow" href="http://demiliani.com/blog/archive/2009/05/29/6553.aspx">Windows Workflow 4.0: quick Activity reference</a></li>
</ul>
<p><span style="font-size:18px;line-height:27px;">Windows Server AppFabric</span><a id="Windows_Server_AppFabric" name="Windows_Server_AppFabric"></a></p>
<hr />
<ul>
<li><a title="http://social.technet.microsoft.com/wiki/contents/articles/windows-server-appfabric.aspx" rel="nofollow" href="http://social.technet.microsoft.com/wiki/contents/articles/windows-server-appfabric.aspx">Windows Server AppFabric (Technet Articles)</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/aa139633.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/aa139633.aspx">Windows Server AppFabric</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677312.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677312.aspx">Introducing AppFabric</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee790960.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee790960.aspx">Installing AppFabric</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677189.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677189.aspx">AppFabric Hosting Features</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ff383731.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ff383731.aspx">AppFabric Caching Features</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee814766.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee814766.aspx">Glossary</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ff923342.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ff923342.aspx">Technical Whitepapers</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/aa904824.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/aa904824.aspx">Windows Server AppFabric Class Library</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ff945799.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ff945799.aspx">AppFabric Hosting PowerShell Cmdlets</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ff945800.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ff945800.aspx">AppFabric Caching PowerShell Cmdlets</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677304.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677304.aspx">Tutorial Using the Windows Server AppFabric Interface</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677304.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677304.aspx">Lesson 1: Getting Started</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677238.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677238.aspx">Lesson 2: Deploying the HRApplicationServices Workflow Service</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677230.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677230.aspx">Lesson 3: Configuring the HRApplicationServices Application</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677205.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677205.aspx">Lesson 4: Monitoring the Health of the HRApplicationServices Application</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677326.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677326.aspx">Lesson 5: Resuming a Suspended Workflow Using AppFabric</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677175.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677175.aspx">Windows Server AppFabric Concepts and Architecture</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677368.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677368.aspx">Features and Capabilities</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677374.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677374.aspx">Architectural Overview</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677371.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677371.aspx">Hosting Concepts</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677272.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677272.aspx">Persistence Concepts</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677251.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677251.aspx">Monitoring Concepts</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677301.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677301.aspx">Management Tools</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677202.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677202.aspx">Security and Protection</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677290.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677290.aspx">Security Model for Windows Server AppFabric</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677284.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677284.aspx">Securing Hosting and Persistence</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677274.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677274.aspx">Securing Monitoring</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677347.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677347.aspx">Securing Administration</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677336.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677336.aspx">Managing an Application</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677254.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677254.aspx">Using Windows Server AppFabric Management Tools Overview</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677344.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677344.aspx">Configuring Applications and Services</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677306.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677306.aspx">Displaying Services and Service Endpoint Data</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677217.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677217.aspx">Controlling Applications</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677207.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677207.aspx">Controlling Service Instances</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677276.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677276.aspx">Monitoring Applications</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677186.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677186.aspx">Database Administration</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee790931.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee790931.aspx">Troubleshooting Applications</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677350.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677350.aspx">Developing an Application</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ff383397(v=ws.10).aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ff383397(v=ws.10).aspx">Workflow Management Service (AppFabric Workflow Management Service)</a></li>
</ul>
<p><a id="Installation" name="Installation"></a></p>
<h2>Installation</h2>
<hr />
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/ee790960.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee790960.aspx">Installing AppFabric</a></li>
<li><a title="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=467e5aa5-c25b-4c80-a6d2-9f8fb0f337d2" rel="nofollow" href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=467e5aa5-c25b-4c80-a6d2-9f8fb0f337d2">Download Windows Server AppFabric</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ff383400(v=ws.10).aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ff383400(v=ws.10).aspx">Installing and Configuring the Workflow Management Service</a></li>
</ul>
<p><a id="Deployment" name="Deployment"></a></p>
<h2>Deployment</h2>
<hr />
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/ee814764.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee814764.aspx">Lesson 2: Deploying the Order Service Application with Windows PowerShell</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee790811.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee790811.aspx">Lesson 3: Configuring the Order Service with Windows PowerShell</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677238.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677238.aspx">Lesson 2: Deploying the HRApplicationServices Workflow Service</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677360.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677360.aspx">Import and Export an Application in Windows Server AppFabric</a></li>
</ul>
<p><a id="See_Also" name="See_Also"></a></p>
<h2>Windows Workflow (WF) Samples</h2>
<hr />
<p><a title="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=35ec8682-d5fd-4bc3-a51a-d8ad115a8792&amp;displaylang=en" rel="nofollow" href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=35ec8682-d5fd-4bc3-a51a-d8ad115a8792&amp;displaylang=en">Download Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4</a></p>
<p><span style="font-size:16px;line-height:24px;">Documentation</span><a id="Samples_Documentation" name="Samples_Documentation"></a></p>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/dd483375.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd483375.aspx">Windows Workflow (WF) Samples</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd483313.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd483313.aspx">Application</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807513.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807513.aspx">Document Approval Process</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807514.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807514.aspx">Corporate Purchase Process</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee622985.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee622985.aspx">Hiring Process</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee624139.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee624139.aspx">Visual Workflow Tracking</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee960225.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee960225.aspx">Suspended Instance Management</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd699771.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd699771.aspx">Basic</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/dd699759.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd699759.aspx">Built-in Activities</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807383.aspxFault" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807383.aspxFault">Handling in a Flowchart Activity Using TryCatch</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807393.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807393.aspx">Emulating breaking in a While activity</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807392.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807392.aspx">DynamicActivity Creation</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807380.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807380.aspx">Using Variables with a .NET Framework 3.5 Ruleset</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807378.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807378.aspx">Load From XAML</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807394.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807394.aspx">Using Collection Activities</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807388.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807388.aspx">Using the InvokeMethod Activity</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807389.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807389.aspx">Using the Pick Activity</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807377.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807377.aspx">Using Procedural Activities</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807382.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807382.aspx">Using CancellationScope</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee622976.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee622976.aspx">InvokeMethod</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee624141.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee624141.aspx">Usage of the Switch Activity with Custom Types</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee829487.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee829487.aspx">Interop with 3.5 Rule Set</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd483320.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd483320.aspx">Compensation (Samples)</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/dd483327.aspxCompensable" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd483327.aspxCompensable">Activity Sample</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd483319.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd483319.aspx">Custom Compensation Sample</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807507.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807507.aspx">Confirmation</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807518.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807518.aspx">Cancellation Handler on Compensable Activity</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd699768.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd699768.aspx">Custom Activities</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/dd744848.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd744848.aspx">Code-Bodied</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd759022.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd759022.aspx">Composite</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd759030.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd759030.aspx">Custom Activity Designers</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd759033.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd759033.aspx">Validation</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee624146.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee624146.aspx">Designer</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/ee624144.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee624144.aspx">Removing the View State the Designer Adds to an XAML File</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee662951.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee662951.aspx">Programming Model Item Tree</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee834515.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee834515.aspx">Property Grid Extensibliity</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee834520.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee834520.aspx">Toolbox Service</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd699776.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd699776.aspx">Designer ReHosting</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807515.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807515.aspx">Execution</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807500.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807500.aspx">Workflow Management Endpoint Sample</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807496.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807496.aspx">Using the WorkflowInvoker Class</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd764467.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd764467.aspx">WorkflowApplication ReadLine Host</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee834514.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee834514.aspx">Creating and Running a Workflow Instance</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee834523.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee834523.aspx">WorkflowHostingEndpoint Resume Bookmark</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee834522.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee834522.aspx">Bookmark Resolver for WorkflowHostingEndpoint</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd699761.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd699761.aspx">Expressions</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd699764.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd699764.aspx">Migration</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807505.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807505.aspx">Using a .NET Framework 3.0 or .NET Framework 3.5 Activity in a .NET Framework 4 Workflow</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee960220.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee960220.aspx">Using Interop with External Data Exchange</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd699769.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd699769.aspx">Persistence</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807516.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807516.aspx">Persisting a Workflow Application</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee622978.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee622978.aspx">Built-in Configuration</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee622979.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee622979.aspx">SQLStoreExtensibility</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ff642473.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ff642473.aspx">Property Promotion Activity</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee960227.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee960227.aspx">Rules Samples</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/ee960219.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee960219.aspx">Advanced Policy</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee960218.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee960218.aspx">Simple Policy</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee960224.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee960224.aspx">IfElse With Rules</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee960226.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee960226.aspx">Conditioned Activity Group</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee960217.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee960217.aspx">Order Processing with Policy</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd699765.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd699765.aspx">Services</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/ff522352.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ff522352.aspx">Absolute Delay</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807379.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807379.aspx">Durable Delay</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807385.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807385.aspx">Sending and Handling Faults</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807376.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807376.aspx">Basic Usage of SendParameters and ReceiveParameters Activities</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807390.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807390.aspx">Basic XAML only Service</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807506.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807506.aspx">Formatting messages in Workflow Services</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee662960.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee662960.aspx">Durable Duplex</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee662963.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee662963.aspx">NetContextExchangeCorrelation</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807508.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807508.aspx">Content-Based Correlation</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee834525.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee834525.aspx">Channel Caching with Send</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee834527.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee834527.aspx">Durable Delay in XAMLX</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee834509.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee834509.aspx">Buffered Receive</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee960215.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee960215.aspx">XAML Activation</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd699775.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd699775.aspx">Tracking</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807381.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807381.aspx">Custom Tracking</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807395.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807395.aspx">Tracking Events into Event Tracing in Windows</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee622983.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee622983.aspx">SQL Tracking</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee662966.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee662966.aspx">Extract WF Data using Tracking</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee667247.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee667247.aspx">Tracking Using a Text File</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd699763.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd699763.aspx">Transactions</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807498.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807498.aspx">Basic TransactionScope</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd764465.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd764465.aspx">Use of TransactedReceiveScope</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee834526.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee834526.aspx">Nesting of TransactionScope within a service</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee622981.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee622981.aspx">Validation</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/ee663223.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee663223.aspx">External Activity Validation</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd759026.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd759026.aspx">Basic Validation</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd759029.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd759029.aspx">OverloadGroups</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee622980.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee622980.aspx">Activity Relationships Validation</a></li>
</ul>
</li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd699778.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd699778.aspx">Scenario</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/dd699767.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd699767.aspx">Activity Library</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/dd797584.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd797584.aspx">Policy Activity in .NET Framework 4</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd797581.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd797581.aspx">Custom Activity to Switch on a Range of Values</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd797580.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd797580.aspx">LINQ to Objects Activity</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd797582.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd797582.aspx">LINQ to SQL</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd797586.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd797586.aspx">Using the InvokePowerShell Activity</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd797588.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd797588.aspx">RangeEnumeration Activity</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd797587.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd797587.aspx">Regular Expression Activities</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd797585.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd797585.aspx">SendMail Custom Activity</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd758796.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd758796.aspx">For Activity</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee620806.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee620806.aspx">Wait For Input Activity</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee620808.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee620808.aspx">Throttled Parallel ForEach</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee622984.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee622984.aspx">Entity Activities</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee622977.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee622977.aspx">Database Access Activities</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee661651.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee661651.aspx">CommentOut Activity</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee662962.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee662962.aspx">Externalized Policy Activity in .NET Framework 4</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807512.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807512.aspx">NoPersistScope Activity</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee834519.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee834519.aspx">Non-Generic ForEach</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee835856.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee835856.aspx">Non-Generic ParallelForEach</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee943758.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee943758.aspx">Get WorkflowInstanceId</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee624145.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee624145.aspx">Services</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/ee662961.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee662961.aspx">OperationScope</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee834517.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee834517.aspx">Accessing OperationContext</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee834524.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee834524.aspx">LINQ Message Query Correlation</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807391.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807391.aspx">Correlated Calculator</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee943756.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee943756.aspx">Securing Workflow Services</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee960213.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee960213.aspx">Asynchronous Communication</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd699774.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd699774.aspx">Transactions</a>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/library/dd759027.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd759027.aspx">Execute a Workflow in an Imperative TransactionScope</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd744846.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd744846.aspx">Transaction Convoy Scope</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee656553.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee656553.aspx">Transaction Rollback</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee656552.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee656552.aspx">Suppress Transaction Scope</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee835855.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee835855.aspx">Transacted Queues</a></li>
</ul>
</li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd744849.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd744849.aspx">Auto-Confirm Pattern</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807384.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807384.aspx">StateMachine Scenario Using a Combination of FlowChart and Pick</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/dd807386.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/dd807386.aspx">WPF and WF Integration in XAML</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee960221.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee960221.aspx">External Ruleset Toolkit</a></li>
</ul>
</li>
</ul>
<h2>See Also</h2>
<hr />
<ul>
<li><a title="http://blogs.msdn.com/b/windowsazureappfabric/" rel="nofollow" href="http://blogs.msdn.com/b/windowsazureappfabric/">Windows Azure AppFabric Blog</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ff432975.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ff432975.aspx">Creating a Long-running Workflow Service</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee342461.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee342461.aspx">A Developer&#8217;s Introduction to Windows Workflow Foundation (WF) in .NET 4</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee808063.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee808063.aspx">Lesson 1: Getting Started with Windows Server AppFabric Cmdlets for Windows PowerShell</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee814764.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee814764.aspx">Lesson 2: Deploying the Order Service Application with Windows PowerShell</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee790811.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee790811.aspx">Lesson 3: Configuring the Order Service with Windows PowerShell</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee790883.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee790883.aspx">Lesson 4: Monitoring the Order Service with Windows PowerShell</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee790855.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee790855.aspx">Lesson 5: Tracking the Workflow with Windows PowerShell</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ff729689.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ff729689.aspx">How to: Host a Workflow Service with Windows Server App Fabric</a></li>
<li><a title="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7290f7ed-e86b-4114-a452-4f07fa32403d" rel="nofollow" href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7290f7ed-e86b-4114-a452-4f07fa32403d">AppFabric Training Kit</a></li>
<li><a title="http://msdn.microsoft.com/en-us/windowsserver/gg675185" rel="nofollow" href="http://msdn.microsoft.com/en-us/windowsserver/gg675185">Developer Introduction to Windows Server AppFabric (Part 1): Hosting Services</a></li>
<li><a title="http://msdn.microsoft.com/en-us/windowsserver/gg675186" rel="nofollow" href="http://msdn.microsoft.com/en-us/windowsserver/gg675186">Developer Introduction to Windows Server AppFabric (Part 2): Caching Services</a></li>
<li><a title="http://msdn.microsoft.com/en-us/library/ee677283.aspx" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ee677283.aspx">Real-Time Monitoring of Durable Workflows</a></li>
<li><a title="http://channel9.msdn.com/shows/Endpoint/endpointtv-AppFabric-Dashboard-Overview/" rel="nofollow" href="http://channel9.msdn.com/shows/Endpoint/endpointtv-AppFabric-Dashboard-Overview/">endpoint.tv &#8211; AppFabric Dashboard Overview</a></li>
<li><a title="http://channel9.msdn.com/shows/Endpoint/endpointtv-Workflow-Services-with-Dave-Cliffe/" rel="nofollow" href="http://channel9.msdn.com/shows/Endpoint/endpointtv-Workflow-Services-with-Dave-Cliffe/">endpoint.tv &#8211; Workflow Services with Dave Cliffe</a></li>
<li><a title="http://channel9.msdn.com/Shows/Endpoint/endpointtv-WF4--AppFabric-Contoso-HR-Sample" rel="nofollow" href="http://channel9.msdn.com/Shows/Endpoint/endpointtv-WF4--AppFabric-Contoso-HR-Sample">endpoint.tv &#8211; WF4 / AppFabric Contoso HR Sample</a></li>
<li><a title="http://archive.msdn.microsoft.com/WF4SMUI" rel="nofollow" href="http://archive.msdn.microsoft.com/WF4SMUI">WF4 State Machine Driven WPF UI</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/huntjason.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/huntjason.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/huntjason.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/huntjason.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/huntjason.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/huntjason.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/huntjason.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/huntjason.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/huntjason.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/huntjason.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/huntjason.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/huntjason.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/huntjason.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/huntjason.wordpress.com/274/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=274&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://huntjason.wordpress.com/2011/03/31/windows-workflow-4-0-and-windows-server-appfabric-my-resources-for-getting-started/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/566e64bb02207907d37ab61476b3a5c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">huntjason</media:title>
		</media:content>
	</item>
		<item>
		<title>A small change</title>
		<link>http://huntjason.wordpress.com/2010/11/26/a-small-change/</link>
		<comments>http://huntjason.wordpress.com/2010/11/26/a-small-change/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 22:09:53 +0000</pubDate>
		<dc:creator>huntjason</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://huntjason.wordpress.com/?p=267</guid>
		<description><![CDATA[This is a small tid-bit of an extension method I created when I realized that the ability to combine a collection of strings into a character-separated string was only available as a static method of the String class: public static string Join(this IEnumerable&#60;string&#62; strings, string separator) { return String.Join(separator, strings); } This allows me to achieve the following, which I would argue is slightly more [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=267&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is a small tid-bit of an extension method I created when I realized that the ability to combine a collection of strings into a character-separated string was only available as a static method of the String class:</p>
<pre>public static string Join(this IEnumerable&lt;string&gt; strings, string separator) {
    return String.Join(separator, strings);
}</pre>
<p>This allows me to achieve the following, which I would argue is slightly more intuitive:</p>
<pre>var myListOfStrings = new List&lt;string&gt; {"January", "February", "March"};
var myCombinedListOfString = myListOfStrings.Join(",");</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/huntjason.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/huntjason.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/huntjason.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/huntjason.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/huntjason.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/huntjason.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/huntjason.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/huntjason.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/huntjason.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/huntjason.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/huntjason.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/huntjason.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/huntjason.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/huntjason.wordpress.com/267/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=267&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://huntjason.wordpress.com/2010/11/26/a-small-change/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/566e64bb02207907d37ab61476b3a5c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">huntjason</media:title>
		</media:content>
	</item>
		<item>
		<title>LinqFu: Dynamic Linq in NHibernate 3.0 (Alpha 3) Linq Provider (part 2 of n)</title>
		<link>http://huntjason.wordpress.com/2010/10/01/linqfu-dynamic-linq-in-nhibernate-3-0-alpha-3-linq-provider-part-2-of-n/</link>
		<comments>http://huntjason.wordpress.com/2010/10/01/linqfu-dynamic-linq-in-nhibernate-3-0-alpha-3-linq-provider-part-2-of-n/#comments</comments>
		<pubDate>Fri, 01 Oct 2010 20:56:42 +0000</pubDate>
		<dc:creator>huntjason</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Linq]]></category>
		<category><![CDATA[NHibernate]]></category>

		<guid isPermaLink="false">https://huntjason.wordpress.com/2010/10/01/linqfu-dynamic-linq-in-nhibernate-3-0-alpha-3-linq-provider-part-2-of-n/</guid>
		<description><![CDATA[By following the Dynamic Linq sample from ScottGu’s post, I was able to use the new Linq provider in NHibernate 3.0 Alpha 3 to create dynamic Linq statements for NHibernate. The idea is to incorporate the Visual Expression Builder for Dynamic Linq to allow users to create their own data filters. Simply copy the Dynamic.cs [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=255&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div><span style="font-family:georgia;">By following the </span><a href="http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx"><span style="font-family:georgia;">Dynamic Linq sample from ScottGu’s post</span></a><span style="font-family:georgia;">, I was able </span><br />
<span style="font-family:georgia;">to use the new Linq provider in NHibernate 3.0 Alpha 3 to create </span><br />
<span style="font-family:georgia;">dynamic Linq statements for NHibernate. The idea is to incorporate </span><br />
<span style="font-family:georgia;">the <a href="http://www.codeproject.com/KB/linq/VisualLinq.aspx">Visual Expression Builder for Dynamic Linq</a> to allow users to </span><br />
<span style="font-family:georgia;">create their own data filters. Simply copy the Dynamic.cs file from </span><br />
<span style="font-family:georgia;">the DynamicQuery sample and replace the second method </span><br />
<span style="font-family:georgia;">with the following:</span></div>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">static</span> NhQueryable&lt;T&gt; Where&lt;T&gt;(<span class="kwrd">this</span> IQueryable&lt;T&gt; source,
    <span class="kwrd">string</span> predicate, <span class="kwrd">params</span> <span class="kwrd">object</span>[] values) {
    <span class="kwrd">if</span> (source == <span class="kwrd">null</span>) <span class="kwrd">throw</span> <span class="kwrd">new</span> ArgumentNullException(<span class="str">"source"</span>);
    <span class="kwrd">if</span> (predicate == <span class="kwrd">null</span>) <span class="kwrd">throw</span> <span class="kwrd">new</span> ArgumentNullException(<span class="str">"predicate"</span>);
        LambdaExpression lambda = DynamicExpression.ParseLambda(
            source.ElementType, <span class="kwrd">typeof</span>(<span class="kwrd">bool</span>), predicate, values);
        <span class="kwrd">return</span> <span class="kwrd">new</span> NhQueryable&lt;T&gt;(source.Provider,
            Expression.Call(
                <span class="kwrd">typeof</span>(Queryable), <span class="str">"Where"</span>,
                <span class="kwrd">new</span> Type[] { source.ElementType },
                source.Expression, Expression.Quote(lambda)));
    }</pre>
<p><span style="font-size:small;">NOTE: I wasn’t able to get it to work with NHibernate 2.1’s Linq Provider as NHibernateQueryable didn’t inherit from IQueryable. I tried for most of the day to weave my way through it but thought it might just be easier to try the new version of NHibernate and upgrade the references in my app than to create maintenance work for myself in the future.<br />
</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/huntjason.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/huntjason.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/huntjason.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/huntjason.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/huntjason.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/huntjason.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/huntjason.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/huntjason.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/huntjason.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/huntjason.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/huntjason.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/huntjason.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/huntjason.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/huntjason.wordpress.com/255/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=255&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://huntjason.wordpress.com/2010/10/01/linqfu-dynamic-linq-in-nhibernate-3-0-alpha-3-linq-provider-part-2-of-n/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/566e64bb02207907d37ab61476b3a5c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">huntjason</media:title>
		</media:content>
	</item>
		<item>
		<title>LinqFu: Linq in Linq (part 1 of n)</title>
		<link>http://huntjason.wordpress.com/2010/09/24/linqfu-linq-in-linq-part-1-of-n/</link>
		<comments>http://huntjason.wordpress.com/2010/09/24/linqfu-linq-in-linq-part-1-of-n/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 14:04:29 +0000</pubDate>
		<dc:creator>huntjason</dc:creator>
				<category><![CDATA[.Net]]></category>

		<guid isPermaLink="false">http://huntjason.wordpress.com/2010/09/24/linqfu-linq-in-linq-part-1-of-n</guid>
		<description><![CDATA[I had to perform some LinqFu today where I used a Linq expression within a Linq expression and thought I would post a reminder to myself about what I did and how I did it. Looking at it afterward, I&#8217;m surprised it was as simple as it was. *shrug* I guess that&#8217;s how these things [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=4&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="msgcns!9D2E96F2AA6AE85F!939" class="bvMsg">
<div>I had to perform some LinqFu today where I used a Linq expression within a Linq expression and thought I would post a reminder to myself about what I did and how I did it. Looking at it afterward, I&#8217;m surprised it was as simple as it was. *shrug* I guess that&#8217;s how these things go.</div>
<div> </div>
<div>Basically, it&#8217;s the equivalent of selecting an order based on its order items (to use the classic relationship scenario).</div>
<div> </div>
<div>var value = 10;</div>
<div> </div>
<div>if ((from order in orders where order.Items.Any(item =&gt; item.Value &gt;= value) select order).Any()) &#123; //Any orders w/item whose value is &gt;= value</div>
<div>   MessageBox.Show(string.Format(&quot;There are orders with items greater than or equal to &#8216;&#123;0&#125;&#8217;, value));</div>
<div>&#125;</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/huntjason.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/huntjason.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/huntjason.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/huntjason.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/huntjason.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/huntjason.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/huntjason.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/huntjason.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/huntjason.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/huntjason.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/huntjason.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/huntjason.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/huntjason.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/huntjason.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=4&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://huntjason.wordpress.com/2010/09/24/linqfu-linq-in-linq-part-1-of-n/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/566e64bb02207907d37ab61476b3a5c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">huntjason</media:title>
		</media:content>
	</item>
		<item>
		<title>WPF ISO Date Format Converter</title>
		<link>http://huntjason.wordpress.com/2010/04/29/wpf-iso-date-format-converter/</link>
		<comments>http://huntjason.wordpress.com/2010/04/29/wpf-iso-date-format-converter/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 15:33:12 +0000</pubDate>
		<dc:creator>huntjason</dc:creator>
				<category><![CDATA[WPF/Silverlight]]></category>

		<guid isPermaLink="false">http://huntjason.wordpress.com/2010/04/29/wpf-iso-date-format-converter</guid>
		<description><![CDATA[This is a little piece of code I put together for an application. The code is no longer being used but I didn&#8217;t want to lose it.     public sealed class IsoDateValueConverter : IValueConverter &#123;      public object Convert(object value, Type targetType, object parameter, CultureInfo culture) &#123;           if (value != null &#38;&#38; value [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=5&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="msgcns!9D2E96F2AA6AE85F!931" class="bvMsg">
<div>This is a little piece of code I put together for an application. The code is no longer being used but I didn&#8217;t want to lose it.</div>
<div> </div>
<div> </div>
<p><font size="2"></p>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">public</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">sealed</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">class</font></font><font size="2"> </font><font color="#2b91af" size="2"><font color="#2b91af" size="2">IsoDateValueConverter</font></font><font size="2"> : </font><font color="#2b91af" size="2"><font color="#2b91af" size="2">IValueConverter</font></font><font size="2"> &#123;</p>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">     public</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">object</font></font><font size="2"> Convert(</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">object</font></font><font size="2"> value, </font><font color="#2b91af" size="2"><font color="#2b91af" size="2">Type</font></font><font size="2"> targetType, </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">object</font></font><font size="2"> parameter, </font><font color="#2b91af" size="2"><font color="#2b91af" size="2">CultureInfo</font></font><font size="2"> culture) &#123;</p>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">          if</font></font><font size="2"> (value != </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">null</font></font><font size="2"> &amp;&amp; value </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">is</font></font><font size="2"> </font><font color="#2b91af" size="2"><font color="#2b91af" size="2">DateTime</font></font><font size="2">) &#123;</p>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">               var</font></font><font size="2"> date = (</font><font color="#2b91af" size="2"><font color="#2b91af" size="2">DateTime</font></font><font size="2">)value;</p>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">               return</font></font><font size="2"> date.ToString(</font><font color="#2b91af" size="2"><font color="#2b91af" size="2">SystemInformation</font></font><font size="2">.</font><font color="#2b91af" size="2"><font color="#2b91af" size="2">DateTime</font></font><font size="2">.IsoShortDateFormat);</p>
<div><font color="#0000ff">          </font>&#125;</div>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">          return</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">string</font></font><font size="2">.Empty;</p>
<div><font color="#0000ff">     </font>&#125;</div>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">     public</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">object</font></font><font size="2"> ConvertBack(</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">object</font></font><font size="2"> value, </font><font color="#2b91af" size="2"><font color="#2b91af" size="2">Type</font></font><font size="2"> targetType, </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">object</font></font><font size="2"> parameter, </font><font color="#2b91af" size="2"><font color="#2b91af" size="2">CultureInfo</font></font><font size="2"> culture) &#123;</p>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">          if</font></font><font size="2"> (culture == </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">null</font></font><font size="2">) &#123;</p>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">               throw</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">new</font></font><font size="2"> </font><font color="#2b91af" size="2"><font color="#2b91af" size="2">ArgumentNullException</font></font><font size="2">(</font><font color="#a31515" size="2"><font color="#a31515" size="2">&quot;culture&quot;</font></font><font size="2">);</p>
<div><font color="#0000ff">          </font>&#125;</div>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">          if</font></font><font size="2"> (value != </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">null</font></font><font size="2"> &amp;&amp; value </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">is</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">string</font></font><font size="2">) &#123;</p>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">               return</font></font><font size="2"> </font><font color="#2b91af" size="2"><font color="#2b91af" size="2">DateTime</font></font><font size="2">.ParseExact((</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">string</font></font><font size="2">)value, </font><font color="#2b91af" size="2"><font color="#2b91af" size="2">SystemInformation</font></font><font size="2">.</font><font color="#2b91af" size="2"><font color="#2b91af" size="2">DateTime</font></font><font size="2">.IsoShortDateFormat, </font><font color="#2b91af" size="2"><font color="#2b91af" size="2">CultureInfo</font></font><font size="2">.InvariantCulture);</p>
<div><font color="#0000ff">          </font>&#125;</div>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">          return</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">null</font></font><font size="2">;</p>
<div><font color="#0000ff">     </font>&#125;</div>
<div>&#125;</div>
<p></font></p>
<div> </div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/huntjason.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/huntjason.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/huntjason.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/huntjason.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/huntjason.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/huntjason.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/huntjason.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/huntjason.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/huntjason.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/huntjason.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/huntjason.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/huntjason.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/huntjason.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/huntjason.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=5&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://huntjason.wordpress.com/2010/04/29/wpf-iso-date-format-converter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/566e64bb02207907d37ab61476b3a5c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">huntjason</media:title>
		</media:content>
	</item>
		<item>
		<title>Simple Object State Awareness</title>
		<link>http://huntjason.wordpress.com/2010/02/23/simple-object-state-awareness/</link>
		<comments>http://huntjason.wordpress.com/2010/02/23/simple-object-state-awareness/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 15:44:26 +0000</pubDate>
		<dc:creator>huntjason</dc:creator>
				<category><![CDATA[.Net]]></category>

		<guid isPermaLink="false">http://huntjason.wordpress.com/2010/02/23/simple-object-state-awareness</guid>
		<description><![CDATA[Through the implementation of two custom interfaces (IClonable&#60;T&#62; and IStateAware) and one from the .NET framework (IEquatable&#60;T&#62;) it becomes pretty simple to create a class that&#8217;s state-aware. The IClonable&#60;T&#62; interface is simply a representation of the Prototype Pattern that I have made a sample of on my website previously.   Here are the two custom interfaces: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=7&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="msgcns!9D2E96F2AA6AE85F!903" class="bvMsg">
<div>Through the implementation of two custom interfaces (IClonable&lt;T&gt; and IStateAware) and one from the .NET framework (IEquatable&lt;T&gt;) it becomes pretty simple to create a class that&#8217;s state-aware. The IClonable&lt;T&gt; interface is simply a representation of the <a href="http://en.wikipedia.org/wiki/Prototype_pattern" target="_blank">Prototype Pattern</a> that I have made a <a href="http://www.noticeablydifferent.com/UnitTesting/GOF/Prototype.aspx" target="_blank">sample of on my website previously</a>.</div>
<div> </div>
<div>Here are the two custom interfaces:</div>
<div> </div>
<div><span><font color="#0000ff" size="2"><font color="#0000ff" size="2">     public interface</font></font><font color="#000000" size="2"> </font><font color="#2b91af" size="2"><font color="#2b91af" size="2">IClonable</font></font><font size="2"><font color="#000000">&lt;T&gt; &#123;</font></font></span></div>
<div>          T Clone();</div>
<div>     &#125;</div>
<div> </div>
<div><font color="#0000ff" size="2"><font color="#0000ff" size="2">     public interface</font></font><font color="#000000" size="2"> </font><font color="#2b91af" size="2"><font color="#2b91af" size="2">IStateAware</font></font><font size="2"><font color="#000000"> &#123;</font></font></div>
<div><font color="#0000ff" size="2"><font color="#0000ff" size="2">          void</font></font><font size="2"> StoreCurrentState();</font></div>
<div><font color="#0000ff" size="2"><font color="#0000ff" size="2">          bool</font></font><font size="2"> HasChanged &#123; </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">get</font></font><font size="2">;  &#125;</font></div>
<div><font size="2">     &#125; </font></div>
<div> </div>
<div><span><font size="2">Here&#8217;s a sample implementation:</font></span></div>
<div><span></span> </div>
<p><span><font color="#2b91af" size="2"><font color="#2b91af" size="2"><font color="#0000ff" size="2"><font color="#0000ff" size="2">     public class</font></font><font color="#000000" size="2"> </font><font color="#2b91af" size="2"><font color="#2b91af" size="2">MyClass</font></font><font size="2"><font color="#000000"> : <font color="#2b91af" size="2"><font color="#2b91af" size="2">IClonable</font></font><font size="2">&lt;</font><font color="#2b91af" size="2"><font color="#2b91af" size="2">MyClass</font></font><font size="2">&gt;, </font><font color="#2b91af" size="2"><font color="#2b91af" size="2">IEquatable</font></font><font size="2">&lt;</font><font color="#2b91af" size="2"><font color="#2b91af" size="2">MyClass</font></font><font size="2">&gt;, </font><font color="#2b91af" size="2"><font color="#2b91af" size="2">IStateAware<font color="#000000"> </font><font size="2"><font color="#000000">&#123;</font></font></font></font></font></font><font size="2"><font color="#000000"><font color="#2b91af" size="2"><font color="#2b91af" size="2"><font size="2"><font color="#000000"><font size="2"></font><font color="#0000ff" size="2"><font color="#0000ff" size="2"><font size="2"> </p>
<div></div>
<p></font><font color="#2b91af" size="2"><font color="#2b91af" size="2">          MyClass</font></font><font size="2"> <font color="#000000">currentState</font><font color="#000000">;</font></font><font size="2"><font color="#0000ff" size="2"><font color="#0000ff" size="2"> </p>
<div> </div>
<p></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">          public string</font></font><font color="#000000" size="2"> FirstName &#123; </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">get</font></font><font color="#000000" size="2">; </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">set</font></font><font size="2"><font color="#000000">; &#125;</font></font><font size="2"><font color="#0000ff" size="2"><font color="#0000ff" size="2"> </p>
<div></div>
<p></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">          public string</font></font><font color="#000000" size="2"> LastName &#123; </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">get</font></font><font color="#000000" size="2">; </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">set</font></font><font size="2"><font color="#000000">; &#125;</font></font> </p>
<div><font size="2"><font color="#000000"></font> </font></div>
<p></font></font></p>
<div></div>
<p></font>          public</font></font><font size="2"> </font><font color="#2b91af" size="2"><font color="#2b91af" size="2">MyClass</font></font><font size="2"><font color="#000000"> Clone() &#123; </font></p>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">         <font color="#000000">     </font> return</font></font><font size="2"> <font color="#000000">(</font></font><font color="#2b91af" size="2"><font color="#2b91af" size="2">MyClass</font></font><font size="2"><font color="#000000">) MemberwiseClone(); </font></p>
<div><font color="#000000">          &#125;</font></div>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2"><font color="#000000"></font></font></font>  </p>
<div><font color="#0000ff" size="2"><font color="#0000ff" size="2"><font color="#000000">          </font>public</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">bool</font></font><font size="2"> <font color="#000000">Equals(</font></font><font color="#2b91af" size="2"><font color="#2b91af" size="2">MyClass</font></font><font color="#000000" size="2"> other) &#123;</font></div>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">     <font color="#000000">          </font>return</font></font><font size="2"> <font color="#000000">other.FirstName == FirstName &amp;&amp;</font></font><font size="2"><font color="#000000"> </font></p>
<div><font color="#000000">                         other.LastName == LastName;</font></div>
<div><font color="#000000">          &#125;</font></div>
<div>    </div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2"><font color="#000000">         </font>public</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">void</font></font><font size="2"><font color="#000000"> StoreCurrentState() &#123; </font></p>
<div><font color="#000000">               currentState = Clone();</font></div>
<div><font color="#000000">          &#125;</font></div>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2"><font color="#000000"></font></font></font>  </p>
<div><font color="#0000ff" size="2"><font color="#0000ff" size="2"><font color="#000000">          </font>public</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">bool</font></font><font size="2"> HasChanged <font color="#000000">&#123;</font></font></div>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">     <font color="#000000">          </font>get</font></font><font size="2"> <font color="#000000">&#123; </font></p>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">          <font color="#000000">          </font>if</font></font><font color="#000000" size="2">(currentState == </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">null</font></font><font color="#000000" size="2">) </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">return</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">false</font></font><font size="2">; </p>
<div></div>
<p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">          <font color="#000000">          </font>return</font></font><font size="2"> <font color="#000000">!Equals(currentState); </font></p>
<div>              <font color="#000000"> &#125;</font></div>
<div><font color="#000000">          &#125;</font></div>
<p></font></font></font></font></font></font></span></p>
<div><span></p>
<div>     &#125;</div>
<p></span></div>
<div><span></span> </div>
<div><span>Now I can take a snapshot of the object at any time and determine if it has changed later on.</span></div>
<div><span></span> </div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/huntjason.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/huntjason.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/huntjason.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/huntjason.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/huntjason.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/huntjason.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/huntjason.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/huntjason.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/huntjason.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/huntjason.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/huntjason.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/huntjason.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/huntjason.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/huntjason.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=huntjason.wordpress.com&amp;blog=16159032&amp;post=7&amp;subd=huntjason&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://huntjason.wordpress.com/2010/02/23/simple-object-state-awareness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/566e64bb02207907d37ab61476b3a5c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">huntjason</media:title>
		</media:content>
	</item>
	</channel>
</rss>
