<?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/"
	>

<channel>
	<title>Udi Dahan - The Software Simplist &#187; Integrated Simplicity</title>
	<atom:link href="http://www.udidahan.com/category/integrated-simplicity/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.udidahan.com</link>
	<description>Enterprise Development Expert &#38; SOA Specialist</description>
	<lastBuildDate>Sat, 24 Jul 2010 20:06:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Thoughts on Microsoft History and OSS</title>
		<link>http://www.udidahan.com/2010/04/23/thoughts-on-microsoft-history-and-oss/</link>
		<comments>http://www.udidahan.com/2010/04/23/thoughts-on-microsoft-history-and-oss/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 21:47:22 +0000</pubDate>
		<dc:creator>udidahan</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Integrated Simplicity]]></category>
		<category><![CDATA[Management]]></category>

		<guid isPermaLink="false">http://www.udidahan.com/?p=1253</guid>
		<description><![CDATA[It&#8217;s coming on 4 years now that I&#8217;ve been running NServiceBus. How the time flies. As it has worked its way into the critical infrastructure of many organizations, more and more managers have been asking me questions about how this .NET OSS thing works. In this post, I&#8217;ll try to answer that question based on [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.udidahan.com/wp-content/uploads/open_source_microsoft.png" alt="open source" title="open source" width="250" height="216" style="float:right;" />It&#8217;s coming on 4 years now that I&#8217;ve been running NServiceBus. How the time flies. As it has worked its way into the critical infrastructure of many organizations, more and more managers have been asking me questions about how this .NET OSS thing works. In this post, I&#8217;ll try to answer that question based on the history of .NET.</p>
<p>Although I have been privy over the years to see behind the veil at Redmond, I will be focusing primarily on the externally visible actions of Microsoft and how the industry has reacted on average &#8211; specifically in the enterprise space, where I spend most of my time. </p>
<h3>What managers are concerned about</h3>
<p>When there will be problem with this technology, who will support us?<br />
How will that change when the author of the technology moves on or loses interest?<br />
How long can we expect to be using this technology?<br />
How long will it take to learn it? When will we recoup our investment?</p>
<p>Traditionally, for companies on the Microsoft platform, choosing Microsoft as their primary technology vendor has been the safe bet. As a large company, Microsoft can afford to employ support engineers. These engineers are different from the ones who wrote the technology to begin with. Also, Microsoft has 10 year support guarantees. As a result, companies expected to use the technology for at least that long. With their size, Microsoft also had the ability to create copious amounts of documentation easing learning.</p>
<p>To turn the common phrase, nobody got fired for choosing Microsoft.</p>
<p>Open source seemed like risky business, at the time.</p>
<h3>What changed?</h3>
<p>It started with the Composite Application Block &#8211; CAB.</p>
<p>This technology was put out by the Patterns and Practices (P&#038;P) group at Microsoft. After it came out, the gears of big marketing machines at Microsoft got to work, telling the industry about this great new thing at conferences, and the Microsoft Consulting Services (MCS) folks started using it with clients. CIOs at large companies sent developers to training on CAB by the dozen.</p>
<p>And then CAB was dead. Sorry. Microsoft prefers the word &#8220;done&#8221; to dead.<br />
Just like Don Box said that COM wasn&#8217;t dead, it was done. </p>
<p>&#8220;What about that 10 year support thing?&#8221;, asked the CIOs (among many others).</p>
<p>You don&#8217;t understand, said Microsoft. You see, P&#038;P are not a product group in Microsoft. They don&#8217;t have the resources to provide that kind of support. And the rest of the company isn&#8217;t obliged to support what they put out &#8211; since they&#8217;re not a product group.</p>
<p>You could literally hear the collective jaw of the Microsoft part of the industry drop.</p>
<p>This wasn&#8217;t supposed to happen (like housing prices in the US).</p>
<p>And then came .NET 3.0, and things seemed to go back to normal.</p>
<p>There were lots of wonderful things that came with it &#8211; like LINQ, and&#8230;</p>
<h3>Linq to Sql</h3>
<p>This was BIG.<br />
Finally &#8211; after ObjectSpaces was promised at PDC &#8216;03 and later shelved, then WinFS (same story), it had arrived.<br />
The object-relational mapper (ORM) from Microsoft.</p>
<p>The marketing machine went into high gear &#8211; it was the v3 promise. Linq2Sql (L2S) came from a product group. This was serious. It was shown at conferences and user groups all over the world. Developers were sent to be trained on it.</p>
<p>And then Entity Framework (EF) was announced &#8211; and L2S was done.</p>
<p>CIOs were rubbing their eyes in disbelief. &#8220;But this is from a product group &#8211; you have to support it, right?&#8221;</p>
<p>Well, said Microsoft, yes. We will support it with our support org. It&#8217;s just that we won&#8217;t continue to develop new features for it in the product org. We actually have a different sub-org that will be working on EF and they&#8217;re under a different division (SQL Server) than the sub-org that made L2S.</p>
<p>Jaws were hitting the pavement. All that investment erased. Just like that. It turns out that support without active development doesn&#8217;t mean very much, no matter how many support engineers are involved.</p>
<p>But the industry picked itself back up, and got back to work on the new foundational pieces that came with .NET 3.0. If Microsoft is calling it &#8220;Foundation&#8221;, that must mean they&#8217;re committed to it.</p>
<h3>And then came Workflow Foundation</h3>
<p>Workflow Foundation (WF) was a dream-come-true. At last, Model-Driven Development (MDD) had come to the Microsoft platform. Drag-and-drop on a whole new level. Imagine the reuse. Imagine the maintainability. Programming at higher levels of abstraction. A marketers dream. This was the culmination of previous efforts of Whitehorse in VS2005 and the Software Factories Initiative &#8211; or so we were told.</p>
<p>And then came .NET 3.5 &#8211; and the new WF wasn&#8217;t backwards compatible with the old one.<br />
And then it happened again with .NET 3.5 SP1, and again with 4.0 (no more state machine &#8211; no wait, it&#8217;s back again, but not in the box).</p>
<p>All those companies that had long-running workflows in production needed to manually migrate them each time.</p>
<p>But this had become old news to the folks using Microsoft in the enterprise.<br />
With Microsoft &#8211; you really can&#8217;t be sure any more.</p>
<h3>What about open source?</h3>
<p>Well, it was beginning to look more and more stable in comparison.<br />
Especially the larger, more established projects. Those with active development.<br />
Log4Net. NHibernate. Castle. etc.</p>
<p>There was also the fact that most enterprises were heterogeneous anyway &#8211; doing both Java and .NET development. Open source tools and frameworks were common in the Java space, politically greasing the wheels for .NET OSS in those organization.</p>
<p>Boasting features and capabilities several years ahead of what was coming out of Microsoft, more companies gave them a chance, and were pleasantly surprised. And the virtuous cycle of OSS gained speed. With more use, they become even more stable and got even more features, driving yet more use. Blog posts about them bloomed all over the web. User group presentations were given. At a presentation I gave at TechEd Europe 2006, I used NHibernate in my demo.</p>
<p>OSS had crossed the chasm. No, not everybody used it, or knew of it, but a critical mass of the industry had grown to depend on it.</p>
<p>Microsoft&#8217;s actions over the years had done more for OSS adoption than I think many would have imagined.</p>
<h3>On Pub/Sub, Messaging, and SOA</h3>
<p>Interestingly enough, when the first version of WCF was still in the oven (then called Indigo) there were discussions on whether it would support publish/subscribe messaging. Here we are, 3 versions later, and still no pub/sub, but the discussions continue <img src='http://www.udidahan.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Message brokers were always important for enterprises in the Java space &#8211; IBM MQ; Tibco RV; Sonic; companies were paying millions for this stuff. Microsoft had MSMQ &#8211; finally at v3 with XP and Server 2003, but still with insignificant penetration to the market. BizTalk did have a good run, though, but not so much as a message broker, more as an integration and orchestration engine, unfortunately coming late to the Enterprise Application Integration (EAI) party.</p>
<p>Later, the SQL Server guys came with Service Broker &#8211; messaging in the database. But you could see that their heart wasn&#8217;t in it. The API was clunky. It still didn&#8217;t have pub/sub. There was no binding available for WCF. </p>
<p>After some time making noise in the SOA space with Oslo, that changed as well. Oslo is now Sql Server Modeling.</p>
<p>I imagine that some of the adoption pick-up with NServiceBus can be attributed to the vacuum Microsoft left behind when exiting the messaging/pub-sub/soa space. The way NServiceBus aligns with the principles found in the corresponding Java technologies makes it very palatable to enterprises working with both platforms.</p>
<p>The fact that there&#8217;s active development, a vibrant and growing community, and even <a href="http://www.udidahan.com/training">training</a> available definitely contribute as well.</p>
<h3>In closing</h3>
<p>I don&#8217;t fault Microsoft for any of this. There are a million things that they could have done. Choosing to do one thing means choosing not to do many others. The decisions they made were done with the best intentions. Hindsight is 20/20 of-course.</p>
<p>And that&#8217;s just it &#8211; we do need to take a look back.</p>
<p>If you&#8217;re a manager making a technology related decision, or are working with managers in those positions, knowing the history of today&#8217;s technology can give you a more accurate representation of the risk involved in each choice. Also, understanding the vector that Microsoft has decided to take in various areas is critical, especially if you find out that your architectural choices aren&#8217;t quite aligned with some of those vectors.</p>
<p>In this post, I&#8217;ve tried not to take a stance on whether a certain approach (ORM, Pub/Sub, etc) is good or bad, or even getting into which cases it&#8217;s appropriate or not &#8211; just to describe Microsoft&#8217;s externally visible behavior in that space.</p>
<p>I hope that this short history lesson can help your organization make the right technology decisions in the future for its specific context. Your comments and thoughts are most welcome, as always.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.udidahan.com/2010/04/23/thoughts-on-microsoft-history-and-oss/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>SOA, REST, and Pub/Sub</title>
		<link>http://www.udidahan.com/2008/12/15/soa-rest-and-pubsub/</link>
		<comments>http://www.udidahan.com/2008/12/15/soa-rest-and-pubsub/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 08:34:24 +0000</pubDate>
		<dc:creator>udidahan</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[EDA]]></category>
		<category><![CDATA[Integrated Simplicity]]></category>
		<category><![CDATA[Pub/Sub]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Scalability]]></category>

		<guid isPermaLink="false">http://www.udidahan.com/2008/12/15/soa-rest-and-pubsub/</guid>
		<description><![CDATA[From Integrated Simplicity:
 
The question of how web-based (or 3rd party) consumers can work with pub/sub based services comes up a lot.
Many developers are used to implementing web services exposing methods on them like GetAllCustomers.
When moving to pub/sub and other more loosely coupled messaging patterns, developers look to implement the same pattern, opting for something [...]]]></description>
			<content:encoded><![CDATA[<p>From <a href="http://www.IntegratedSimplicity.com">Integrated Simplicity</a>:</p>
<p><a href="http://www.udidahan.com/wp-content/uploads/image49.png"><img style="border-right: 0px; border-top: 0px; margin: 0px 0px 10px; border-left: 0px; border-bottom: 0px" height="277" alt="SOA &amp; Web" src="http://www.udidahan.com/wp-content/uploads/image-thumb34.png" width="526" border="0"></a> </p>
<p>The question of how web-based (or 3rd party) consumers can work with pub/sub based services comes up a lot.</p>
<p>Many developers are used to implementing web services exposing methods on them like GetAllCustomers.</p>
<p>When moving to pub/sub and other more loosely coupled messaging patterns, developers look to implement the same pattern, opting for something like duplex GetCustomersRequest and GetCustomersResponse. The reasoning is simple and straightforward &#8211; it is difficult to push data over the web to consumers.</p>
<p>However, there are still ways to disconnect the preparation of the data from its usage thus gaining many of the advantages of pub/sub.</p>
<p>By employing REST principles and modelling our customer list as an explicit resource, web-based consumers would simply perform regular HTTP GET operations on the URI to get the list of customers.</p>
<p>The resource itself could be a simple XML file &#8211; it wouldn&#8217;t need to be dynamic at all.</p>
<p>You can get all the scalability benefits of pub/sub for web based consumers. All you need is a bit of REST <img src='http://www.udidahan.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.udidahan.com/2008/12/15/soa-rest-and-pubsub/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Integrated Simplicity</title>
		<link>http://www.udidahan.com/2008/09/03/integrated-simplicity/</link>
		<comments>http://www.udidahan.com/2008/09/03/integrated-simplicity/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 21:55:26 +0000</pubDate>
		<dc:creator>udidahan</dc:creator>
				<category><![CDATA[Integrated Simplicity]]></category>

		<guid isPermaLink="false">http://www.udidahan.com/2008/09/03/integrated-simplicity/</guid>
		<description><![CDATA[
The previously hand-drawn distributed system concepts map has already surfaced a couple of diagrams on scalability and performance. 
I&#8217;m now making the full interactive environment available.
[For any class, by clicking on the '+' beside 'Advanced', you can see all the diagrams in which it takes part]
This is an ongoing, huge undertaking and your comments and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.IntegratedSimplicity.com"><img style="float: right; margin: 0px 0px 10px 10px; border-top-style: none; border-right-style: none; border-left-style: none; border-bottom-style: none" src="http://www.udidahan.com/wp-content/uploads/logo_mid.png"></a>
<p>The previously hand-drawn <a href="http://www.udidahan.com/2008/08/04/distributed-systems-concept-map/">distributed system concepts map</a> has already surfaced a couple of diagrams on <a href="http://www.udidahan.com/2008/08/13/an-answer-of-scale/">scalability and performance</a>. </p>
<p>I&#8217;m now making the full interactive environment available.</p>
<p>[For any class, by clicking on the '+' beside 'Advanced', you can see all the diagrams in which it takes part]</p>
<p>This is an ongoing, huge undertaking and your comments and suggestions are not only welcome, but absolutely necessary to take this to the next level.</p>
<p><a href="http://www.IntegratedSimplicity.com">Get Integrated Simplicity</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.udidahan.com/2008/09/03/integrated-simplicity/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
