<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.objectsharp.com/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Peter Madziak's Musings on Software Architecture &amp; Design</title><link>http://www.objectsharp.com/cs/blogs/pmadziak/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.2)</generator><item><title>Some References on Extensible XML Schema Design</title><link>http://www.objectsharp.com/cs/blogs/pmadziak/archive/2008/04/29/some-references-on-extensible-xml-schema-design.aspx</link><pubDate>Tue, 29 Apr 2008 18:58:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:142567</guid><dc:creator>pmadziak</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/pmadziak/comments/142567.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/pmadziak/commentrss.aspx?PostID=142567</wfw:commentRss><description>&lt;P&gt;This topic came up in a WCF training session (i.e. ObjectSharp's &lt;A class="" title="WCF Course" href="http://www.objectsharp.com/training/coursedetail.aspx?id=1135"&gt;WCF course&lt;/A&gt;) I am currently delivering so I wanted to post a few references on the subject here:&lt;/P&gt;
&lt;P&gt;The first is "Designing Extensible, Versionable XML Formats" by Dare Obasanjo&lt;BR&gt;&lt;A href="http://www.xml.com/pub/a/2004/07/21/design.html?page=1"&gt;http://www.xml.com/pub/a/2004/07/21/design.html?page=1&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The second, slightly more academic treatment is "Extensibility, XML Vocabularies, and XML Schema", by David Orchard, an extensibility guru who has much to say on the topic:&lt;BR&gt;&lt;A href="http://www.xml.com/pub/a/2004/10/27/extend.html"&gt;http://www.xml.com/pub/a/2004/10/27/extend.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;And then finally a series of writings&amp;nbsp;by Tim Ewald which are chock full of extremely powerful Versioning advice:&lt;/P&gt;
&lt;P&gt;First his "Services and the Versioning Problem" article in the MS Architecture Journal:&lt;BR&gt;&lt;A href="http://msdn2.microsoft.com/en-us/arcjournal/bb245674.aspx"&gt;http://msdn2.microsoft.com/en-us/arcjournal/bb245674.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;And then a series of blog entries:&lt;BR&gt;&lt;A href="http://pluralsight.com/blogs/tewald/archive/2006/04/14/21733.aspx"&gt;http://pluralsight.com/blogs/tewald/archive/2006/04/14/21733.aspx&lt;/A&gt;&lt;BR&gt;&lt;A href="http://pluralsight.com/blogs/tewald/archive/2006/04/25/22704.aspx"&gt;http://pluralsight.com/blogs/tewald/archive/2006/04/25/22704.aspx&lt;/A&gt;&lt;BR&gt;&lt;A href="http://pluralsight.com/blogs/tewald/archive/2006/05/05/22961.aspx"&gt;http://pluralsight.com/blogs/tewald/archive/2006/05/05/22961.aspx&lt;/A&gt;&lt;BR&gt;&lt;A href="http://pluralsight.com/blogs/tewald/archive/2006/05/05/22963.aspx"&gt;http://pluralsight.com/blogs/tewald/archive/2006/05/05/22963.aspx&lt;/A&gt;&lt;BR&gt;&lt;/P&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=142567" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/WCF/default.aspx">WCF</category><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/Services/default.aspx">Services</category></item><item><title>Windows Workflow and the Command Processor Pattern</title><link>http://www.objectsharp.com/cs/blogs/pmadziak/archive/2008/04/18/windows-workflow-and-the-command-processor-pattern.aspx</link><pubDate>Fri, 18 Apr 2008 19:45:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:141353</guid><dc:creator>pmadziak</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/pmadziak/comments/141353.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/pmadziak/commentrss.aspx?PostID=141353</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;I have been doing some Windows Workflow (WF) consulting with a customer lately and I was talking to a developer who had just been thrown onto the project and was struggling with WF, not feeling that he had a solid grasp of the paradigm. No one was more surprised than me when I was able to help him so easily by simply pointing out that WF is an instance of the “Command Processor Pattern”. Because it seemed to help him so much I thought it might be worth sharing here.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Before I get to this however, I just want to state for the record how important I believe the Gang of Four (GoF) &lt;/FONT&gt;&lt;A href="http://en.wikipedia.org/wiki/Design_Patterns"&gt;&lt;FONT face=Calibri size=3&gt;Design Patterns&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; &lt;/FONT&gt;&lt;A href="http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612"&gt;&lt;FONT face=Calibri size=3&gt;book&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; is. I always assume, sometimes incorrectly, that every developer has intimate knowledge of the GoF Design Patterns book. I believe reading it is a &lt;I style="mso-bidi-font-style:normal;"&gt;right-of-passage&lt;/I&gt; for every developer, and I would always steer people towards the original book, as opposed to “knock-offs” that try to “translate it” to another programming language. If you haven’t read it, stop everything and read it!&lt;/FONT&gt;&lt;/P&gt;
&lt;H3 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;The Command Pattern&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;In case you can’t recall it, the authors state the following as the intent of the “Command Pattern”:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt 36pt;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;However, I think the essence of it is well captured in the structure diagram:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;&lt;IMG src="http://www.objectsharp.com/cs/photos/pmadziak/images/141349/original.aspx"&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="mso-fareast-language:EN-CA;mso-no-proof:yes;"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;The Command Processor Pattern&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;After the GoF authors, the &lt;/FONT&gt;&lt;A href="http://www.amazon.com/Pattern-Oriented-Software-Architecture-System-Patterns/dp/0471958697"&gt;&lt;FONT face=Calibri size=3&gt;POSA1&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; authors expanded on the Command Pattern by writing up what they called the Command Processor Pattern, a pattern that built on the Command Pattern to show how easy it is to use it to do things like undo/redo functionality etc. Again, for the sake of brevity, I will only show a single UML class diagram that I think conveys the essence of the pattern:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;&lt;IMG src="http://www.objectsharp.com/cs/photos/pmadziak/images/141350/original.aspx"&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="mso-fareast-language:EN-CA;mso-no-proof:yes;"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;Compounding Command&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;&lt;SPAN style="FONT-SIZE:11pt;LINE-HEIGHT:115%;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-language:EN-US;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:'Times New Roman';mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-CA;mso-bidi-language:AR-SA;"&gt;Later, two of the GoF authors wrote a paper called “&lt;A href="http://www.research.ibm.com/designpatterns/pubs/ph-apr99.pdf"&gt;Compounding Command&lt;/A&gt;” &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Calibri size=3&gt;in which they showed how some of the other GoF patterns can be combined with Command in interesting and powerful ways, which I’ll summarize here by once again showing a single UML diagram that I think captures it quite well:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;IMG src="http://www.objectsharp.com/cs/photos/pmadziak/images/141351/original.aspx"&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="mso-fareast-language:EN-CA;mso-no-proof:yes;"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;Finally, WF as an Instance of the Command Processor Pattern&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Now, mapping these ideas &lt;SPAN style="FONT-SIZE:11pt;LINE-HEIGHT:115%;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-language:EN-US;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:'Times New Roman';mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-CA;mso-bidi-language:AR-SA;"&gt;to WF &lt;/SPAN&gt;is, I think, as easy as first of all making the following connection:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;FONT size=3&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:#548dd4;mso-themecolor:text2;mso-themetint:153;"&gt;&lt;FONT face=Calibri&gt;Activity &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:#548dd4;FONT-FAMILY:Wingdings;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-themecolor:text2;mso-themetint:153;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;SPAN style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#548dd4;mso-themecolor:text2;mso-themetint:153;"&gt;&lt;FONT face=Calibri&gt; Command&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;FONT size=3&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:#548dd4;mso-themecolor:text2;mso-themetint:153;"&gt;&lt;FONT face=Calibri&gt;WorkflowRuntime &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:#548dd4;FONT-FAMILY:Wingdings;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-themecolor:text2;mso-themetint:153;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;SPAN style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#548dd4;mso-themecolor:text2;mso-themetint:153;"&gt;&lt;FONT face=Calibri&gt; CommandProcessor&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Armed with these mappings, then showing the structural relationship of some of the key classes in WF shows very clearly how it can be conceptualized as the “Command Processor Pattern”:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;&lt;IMG src="http://www.objectsharp.com/cs/photos/pmadziak/images/141352/original.aspx"&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="mso-fareast-language:EN-CA;mso-no-proof:yes;"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;The Value of Patterns&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;As a final comment: the GoF authors state explicitly that they weren’t doing anything new but rather placing well thought out names to reusable design nuggets that people had been using for years already. The real value in that was evident in the interaction I had this week with that developer: once he thought of WF in the context of the Command Pattern he immediately understood what I was talking about because the pattern name was part of our "shared developer lexicon".&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=141353" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/WF/default.aspx">WF</category><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/Patterns/default.aspx">Patterns</category></item><item><title>Presenting at DevTeach in May</title><link>http://www.objectsharp.com/cs/blogs/pmadziak/archive/2008/02/27/presenting-at-devteach-in-may.aspx</link><pubDate>Wed, 27 Feb 2008 19:47:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:132513</guid><dc:creator>pmadziak</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/pmadziak/comments/132513.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/pmadziak/commentrss.aspx?PostID=132513</wfw:commentRss><description>&lt;P&gt;I recently found out that the abstract I submitted for &lt;A class="" title=DevTeach href="http://www.devteach.com/"&gt;DevTeach&lt;/A&gt;, held in Toronto May 12-16, 2008 was accepted. I am very excited about it, both about presenting and attending because I think it is shaping up to be an excellent conference. My talk, called ``&lt;EM&gt;The Convergence of SOA, REST and BPM&lt;/EM&gt;``, is in the Architecture Track (See here&amp;nbsp;&lt;A href="http://www.devteach.com/Session.aspx#91"&gt;http://www.devteach.com/Session.aspx#91&lt;/A&gt;&amp;nbsp;for all the talks in this track).&lt;/P&gt;
&lt;P&gt;I`ll try to blog more about what to expect from the talk as I figure it out better myself, but suffice it to say that these 3 pillars of contemporary software architecture are finally coming together for me, at least enough for me to want to talk about it&amp;nbsp;with others :)&lt;/P&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=132513" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/REST/default.aspx">REST</category><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/BPM/default.aspx">BPM</category><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/SOA/default.aspx">SOA</category></item><item><title>New WF Course</title><link>http://www.objectsharp.com/cs/blogs/pmadziak/archive/2008/02/27/new-wf-course.aspx</link><pubDate>Wed, 27 Feb 2008 19:18:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:132506</guid><dc:creator>pmadziak</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/pmadziak/comments/132506.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/pmadziak/commentrss.aspx?PostID=132506</wfw:commentRss><description>&lt;P&gt;I am in the process of writing a new course for &lt;A class="" title=ObjectSharp href="http://www.objectsharp.com/"&gt;&lt;FONT color=#078cd1&gt;ObjectSharp&lt;/FONT&gt;&lt;/A&gt; on &lt;A class="" title="Windows Workflow Foundation" href="http://netfx3.com/content/WFHome.aspx"&gt;Windows&amp;nbsp;Workflow Foundation&lt;/A&gt; (WF). More details about the course can be found here: &lt;A href="http://www.objectsharp.com/training/coursedetail.aspx?id=1145"&gt;http://www.objectsharp.com/training/coursedetail.aspx?id=1145&lt;/A&gt;.&amp;nbsp;For even more information, contact our Training Manager, Julie James, at 416-216-4603 (or 1-877-So-Sharp) ext. 1 or via email at &lt;A href="mailto:Training@objectsharp.com"&gt;&lt;FONT color=#078cd1&gt;Training@objectsharp.com&lt;/FONT&gt;&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A&gt;Taken&lt;/A&gt; along with&amp;nbsp;the existing WCF course &lt;A href="http://objectsharp.com/training/CourseDetail.aspx?id=1135"&gt;http://www.objectsharp.com/training/CourseDetail.aspx?id=1135&lt;/A&gt;,&amp;nbsp;students&amp;nbsp;will be given a hands-on guide to building&amp;nbsp;a successful Service-Oriented Architecture (SOA) using the .NET 3.5 platform.&lt;/P&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=132506" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/SOA/default.aspx">SOA</category><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/WF/default.aspx">WF</category><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/WCF/default.aspx">WCF</category></item><item><title>Upcoming Presentation at Toronto Code Camp 2008</title><link>http://www.objectsharp.com/cs/blogs/pmadziak/archive/2008/02/27/upcoming-presentation-at-toronto-code-camp-2008.aspx</link><pubDate>Wed, 27 Feb 2008 17:25:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:132498</guid><dc:creator>pmadziak</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/pmadziak/comments/132498.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/pmadziak/commentrss.aspx?PostID=132498</wfw:commentRss><description>&lt;P&gt;This saturday (March 1st)&amp;nbsp;I will be giving a talk&amp;nbsp;entitled "SOA Using WCF &amp;amp; WF" at the Toronto Code camp 2008. The site is here&amp;nbsp;&lt;A href="http://torontocodecamp.net/"&gt;http://torontocodecamp.net/&lt;/A&gt;. My talk is in the .NET Framework track and the schedule for this track&amp;nbsp;can be found at: &lt;A href="http://torontocodecamp.net/Sessions/NETFramework/tabid/64/Default.aspx"&gt;http://torontocodecamp.net/Sessions/NETFramework/tabid/64/Default.aspx&lt;/A&gt;.&amp;nbsp;The abstract for the talk is:&lt;/P&gt;
&lt;P&gt;"In the world of SOA it is useful to classify your services into two types: Business Activity Services and Resource (or sometimes Entity) Services. In this demo-centric session we’ll look at how Windows Communication Foundation (WCF) and Windows Workflow (WF) can be used within this classification system. More specifically we’ll look at how WF is an ideal choice to use “inside the boundary” of your Activity Services to carry out the long-running work the service represents."&lt;/P&gt;
&lt;P&gt;It looks like there are lots of good sessions so I hope to see you there.&lt;/P&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=132498" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/SOA/default.aspx">SOA</category><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/WF/default.aspx">WF</category><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/WCF/default.aspx">WCF</category></item><item><title>Time to dust off my old ML &amp; Haskell textbooks?</title><link>http://www.objectsharp.com/cs/blogs/pmadziak/archive/2007/10/23/time-to-dust-off-my-old-ml-haskell-textbooks.aspx</link><pubDate>Tue, 23 Oct 2007 15:43:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:93215</guid><dc:creator>pmadziak</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/pmadziak/comments/93215.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/pmadziak/commentrss.aspx?PostID=93215</wfw:commentRss><description>&lt;P&gt;The Visual Studio&amp;nbsp;team at Microsoft is saying (see here &lt;A href="http://blogs.msdn.com/somasegar/archive/2007/10/17/f-a-functional-programming-language.aspx"&gt;http://blogs.msdn.com/somasegar/archive/2007/10/17/f-a-functional-programming-language.aspx&lt;/A&gt;&amp;nbsp;for instance) they'll work closely with Microsoft Research to&amp;nbsp;build support for&amp;nbsp;F# into VS. Back in my University days I did a fair bit of ML so this will be like re-uniting with an old friend &lt;img src="http://objectsharp.com/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=93215" width="1" height="1"&gt;</description></item><item><title>Presentation at "Okdevberfest" Code Camp</title><link>http://www.objectsharp.com/cs/blogs/pmadziak/archive/2007/10/01/presentation-at-okdevberfest-code-camp.aspx</link><pubDate>Tue, 02 Oct 2007 04:46:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:88187</guid><dc:creator>pmadziak</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/pmadziak/comments/88187.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/pmadziak/commentrss.aspx?PostID=88187</wfw:commentRss><description>&lt;P&gt;Last Saturday I gave a presentation at the "Okdevberfest" Code camp&amp;nbsp;(&lt;A href="http://www.okdevberfest.com/"&gt;http://www.okdevberfest.com/&lt;/A&gt;) held at the University of Waterloo. The slides as well as the sample code I covered can be found in the attachment above.&lt;/P&gt;
&lt;P&gt;Cheers to Dave Totzke and his fellow organizers for putting together an excellent code camp.&amp;nbsp; &lt;/P&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=88187" width="1" height="1"&gt;</description><enclosure url="http://www.objectsharp.com/cs/blogs/pmadziak/attachment/88187.ashx" length="1585682" type="application/x-zip-compressed" /><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/SOA/default.aspx">SOA</category><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/WF/default.aspx">WF</category><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/WCF/default.aspx">WCF</category></item><item><title>Services vs business processes == OO vs procedural?</title><link>http://www.objectsharp.com/cs/blogs/pmadziak/archive/2007/07/18/services-vs-business-processes-oo-vs-procedural.aspx</link><pubDate>Wed, 18 Jul 2007 18:14:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:72357</guid><dc:creator>pmadziak</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/pmadziak/comments/72357.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/pmadziak/commentrss.aspx?PostID=72357</wfw:commentRss><description>&lt;P&gt;A while back I gave a presentation at one of ObjectSharp's SMART events on "Bridging SOA &amp;amp; BPM" (&lt;A href="http://objectsharp.com/ttdinvitation/invite070510.htm"&gt;http://www.objectsharp.com/ttdinvitation/invite070510.htm&lt;/A&gt;). The slides for the presentation can be found here: &lt;A href="http://objectsharp.com/cs/files/folders/68276/download.aspx"&gt;http://www.objectsharp.com/cs/files/folders/68276/download.aspx&lt;/A&gt;. One of the things I thought about saying during that presentation was that the question of whether to approach an enterprise architecture from a "services first" (i.e. SOA) perspective or from a "business processes first" (i.e. BPM) perspective is analogous to the question of whether one should approach application design from an "object-oriented perspective" or a "procedural perspective". &lt;/P&gt;
&lt;P&gt;Now, before I elaborate on that, I'll just say that I chose to leave it out of the presentation because I view it as something that could be easily misunderstood. In saying this I am not saying that SOA is anything like OO. In fact, in my experience, the single greatest impediment to successful SOA adoption is getting people to let go of the OO mindset they have developed over the past 20 to 30 years. To be successful at SOA you have to "let go of your objects" and think more in terms of (business) documents and document exchanges. Many of the web service development tools have contibuted to this problem by making it so easy to turn your objects into services simply through the annotation of the appropriate attributes. Services should be thought of as having well-defined boundaries and, as such, stepping across those boundaries should never be taken as "lightly" as a call on an object residing in the same address space as the caller. Instead, invoking a service should be viewed more like what happens when you apply for a passport: you send off a &lt;STRONG&gt;&lt;EM&gt;self-contained&lt;/EM&gt;&lt;/STRONG&gt; application form (or document) and it is processed asynchronously by the receiving service. This notion of self-containment is important and is often lacking; i.e. each document in an exchange must contain the complete context for the request to be processed.&lt;/P&gt;
&lt;P&gt;Furthermore, objects typically have an interesting life-cycle whereas services don't; think of services as simply being out there on the network receiving request messages, processing them, and sending out response messages or request messages to other services. The individual handling of a given request&amp;nbsp;may have an interesting life-cycle but not the service itself.&lt;/P&gt;
&lt;P&gt;Returning to my analogy, the key point that I am trying to make is that when looking at how things get done inside an enterprise, one can&amp;nbsp;view it from a process-oriented perspective (which is analogous to looking at the software system from a procedural perspective) or they can&amp;nbsp;view&amp;nbsp;their&amp;nbsp;assets&amp;nbsp;as a set of self-contained resources and/or processes that systematically structures the various business capabilities the business can provide (which is analogous to viewing the software system from an object perspective).&lt;/P&gt;
&lt;P&gt;Using documents as the input/output of self-contained business processes/capabilities goes hand in hand with organizing those business capabilities into discrete, felxible, self-contained (i.e. &lt;STRONG&gt;&lt;EM&gt;autonomous&lt;/EM&gt;&lt;/STRONG&gt;) "business services". In this view of things, the internal logic of the business process is hidden, or encapsulated if you will, and the only visible "interface" to the business service/process is the documents that can be exchanged and how those document exchanges are choreographed. That is, from a SOA perspective, internal process (or orchestration) logic should be hidden&amp;nbsp;inside a service&amp;nbsp;boundary and the emphasis instead&amp;nbsp;must be&amp;nbsp;placed on the documents being exchanged, their hopefully standardized syntax or format, their shared meaning, and the "business protocols" governing how they are exchanged.&lt;BR&gt;&lt;/P&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=72357" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/BPM/default.aspx">BPM</category><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/SOA/default.aspx">SOA</category></item><item><title>Pat Helland is Back at Microsoft</title><link>http://www.objectsharp.com/cs/blogs/pmadziak/archive/2007/05/14/pat-helland-is-back-at-microsoft.aspx</link><pubDate>Tue, 15 May 2007 03:09:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:47467</guid><dc:creator>pmadziak</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/pmadziak/comments/47467.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/pmadziak/commentrss.aspx?PostID=47467</wfw:commentRss><description>&lt;P&gt;After a two year stint at Amazon, Pat Helland is&amp;nbsp;back at Microsoft:&amp;nbsp;&lt;A href="http://blogs.msdn.com/pathelland/archive/2007/05/14/i-m-glad-to-be-back.aspx"&gt;http://blogs.msdn.com/pathelland/archive/2007/05/14/i-m-glad-to-be-back.aspx&lt;/A&gt;.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I consider this&amp;nbsp;to be great news, both for Microsoft and for those of us that appreciate whenever he&amp;nbsp;shares his thoughts (via papers, presentations, blogging, metaphors, songs, etc...) with the developer community, something he is pledging to do more of now that he is back at the Big House.&lt;/P&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=47467" width="1" height="1"&gt;</description></item><item><title>Upcoming Talk About Bridging SOA &amp; BPM</title><link>http://www.objectsharp.com/cs/blogs/pmadziak/archive/2007/05/03/upcoming-talk-about-bridging-soa-bpm.aspx</link><pubDate>Fri, 04 May 2007 03:21:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:44277</guid><dc:creator>pmadziak</dc:creator><slash:comments>0</slash:comments><comments>http://www.objectsharp.com/cs/blogs/pmadziak/comments/44277.aspx</comments><wfw:commentRss>http://www.objectsharp.com/cs/blogs/pmadziak/commentrss.aspx?PostID=44277</wfw:commentRss><description>I am going to be giving a talk at the next ObjectSharp SMaRT (Software Management Round-table) event called "Bridging Service-Oriented Architecture &amp;amp; Business Process Management". If you are interested in either of these two disciplines, or in particular in how they are related, then please join us for this upcoming&amp;nbsp;breakfast event. More information about the event can be found here: &lt;A href="http://objectsharp.com/ttdinvitation/invite070510.htm"&gt;http://objectsharp.com/ttdinvitation/invite070510.htm&lt;/A&gt;.&lt;BR&gt;&lt;img src="http://www.objectsharp.com/cs/aggbug.aspx?PostID=44277" width="1" height="1"&gt;</description><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/BPM/default.aspx">BPM</category><category domain="http://www.objectsharp.com/cs/blogs/pmadziak/archive/tags/SOA/default.aspx">SOA</category></item></channel></rss>