<?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>NServiceBus &#8211; Udi Dahan &#8211; The Software Simplist</title>
	<atom:link href="https://udidahan.com/category/nservicebus/feed/" rel="self" type="application/rss+xml" />
	<link>https://udidahan.com</link>
	<description>Enterprise Development Expert &#38; SOA Specialist</description>
	<lastBuildDate>Fri, 30 Oct 2015 10:44:02 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.8.1</generator>
	<item>
		<title>NSBCon 2015 &#8211; Dallas Texas</title>
		<link>https://udidahan.com/2015/10/30/nsbcon-2015-dallas-texas/</link>
					<comments>https://udidahan.com/2015/10/30/nsbcon-2015-dallas-texas/#respond</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Fri, 30 Oct 2015 10:44:02 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[NSBcon]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<guid isPermaLink="false">http://udidahan.com/?p=2650</guid>

					<description><![CDATA[Seeing as it&#8217;s been just about a year since the last NSBCon we ran in New York City, I&#8217;m happy to say we&#8217;re bringing NSBCon back to the US &#8211; this time in Dallas Texas, Dec 1-4. Click here for the full details. First &#8211; the war stories For those of you who have been [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="http://particular.net/nsbcon2015"><img loading="lazy" src="/wp-content/uploads/nsbcon.jpg" alt="nsbcon" title="nsbcon" width="600" height="277" style="border:none;" /></a></p>
<p>Seeing as it&#8217;s been just about a year since the last NSBCon we ran in New York City, I&#8217;m happy to say we&#8217;re bringing NSBCon back to the US &#8211; this time in Dallas Texas, Dec 1-4.</p>
<p><a href="http://particular.net/nsbcon2015">Click here</a> for the full details.</p>
<h3>First &#8211; the war stories</h3>
<p>For those of you who have been wondering about what it would be like to apply the Service-Oriented principles I blog about, we&#8217;ll hear the war story of one brave architect&#8217;s journey down that path, which kinds of messaging patterns helped, and which it didn&#8217;t.</p>
<p>Another point of concern for people considering event-driven approaches to building systems is how to keep control of all of these loosely-coupled bits and pieces. Luckily we&#8217;ll have a session talking about various monitoring and devops techniques to keep on top of everything that&#8217;s happening &#8211; and not just a theory of how that could be done, but a &#8220;from the trenches&#8221; account of how well they actually worked.</p>
<h3>Then &#8211; down to the metal</h3>
<p>In addition to some really &#8220;down and dirty&#8221; sessions about all the cool nifty NServiceBus features that have come out this past year, we&#8217;ll also give you a sneak peek into what&#8217;s coming in the future (after keeping very tight lipped about our future roadmap).</p>
<p>And finally, we&#8217;ll talk a bit about the actor model and Akka.net &#8211; where they fit in message-driven architectures and how to get the two worlds to play together nicely.</p>
<h3>And finally &#8211; an unconference</h3>
<p>When all is said and done, what you really want is some time to talk through your specific challenges with people who&#8217;ve &#8220;been there&#8221; and &#8220;done that&#8221;. That&#8217;s why our last day is a full interactive &#8220;unconference&#8221; meaning that you get to set the agenda, get direct access to all the speakers, and even grab some NServiceBus experts to debug some code with you. </p>
<p>If you&#8217;ve never been to an unconference before, you don&#8217;t know what you&#8217;re missing. </p>
<h3>So, hurry up!</h3>
<p>Discounted &#8220;early bird&#8221; tickets are almost sold out.</p>
<p>I really hope to see you all there.</p>
<p><a href="http://particular.net/nsbcon2015">Check it out</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2015/10/30/nsbcon-2015-dallas-texas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Best US Supermarket running NServiceBus (for years)</title>
		<link>https://udidahan.com/2014/10/21/best-us-supermarket-running-nservicebus/</link>
					<comments>https://udidahan.com/2014/10/21/best-us-supermarket-running-nservicebus/#respond</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Tue, 21 Oct 2014 08:29:04 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Messaging]]></category>
		<category><![CDATA[NSBcon]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Pub/Sub]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=2338</guid>

					<description><![CDATA[I was quite thrilled when I heard that our customer Wegmans got ranked by Consumer Reports as the #1 supermarket chain in the US. Wegmans have been long-time customers of NServiceBus and I recently got the opportunity to go on a guided tour in their flagship store in Rochester and hear all the ways that [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" src="/wp-content/uploads/wegmans1.jpg" alt="wegmans" title="wegmans" width="271" height="375" style="float:right; margin-left:10px; margin-bottom:10px;" />I was quite thrilled when I heard that our customer Wegmans got ranked by Consumer Reports as the <a href="http://www.businessinsider.com/best-supermarkets-in-america-2014-3">#1 supermarket chain in the US</a>.</p>
<p>Wegmans have been long-time customers of NServiceBus and I recently got the opportunity to go on a guided tour in their flagship store in Rochester and hear all the ways that they&#8217;ve been leveraging our platform &#8211; even the scales that people use to weigh their produce are linked up.</p>
<p>Yup &#8211; you may even be eating NServiceBus and not know it <img src="https://s.w.org/images/core/emoji/13.1.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>There are also some pretty powerful back-office processes at play &#8211; things that your regular consumer wouldn&#8217;t even notice but that matter quite a bit.</p>
<p>In any case, I&#8217;ll hand this over to Adam Fyles &#8211; the person who has done the actual work of getting NServiceBus into Wegmans, from the early proof-of-concept days to leveraging it across the enterprise to tell the story himself.</p>
<p>Here&#8217;s Adam presenting at NSBCon USA 2014:</p>
<p><iframe loading="lazy" src="//fast.wistia.net/embed/iframe/t9lt8x1xyh" allowtransparency="true" frameborder="0" scrolling="no" class="wistia_embed" name="wistia_embed" allowfullscreen mozallowfullscreen webkitallowfullscreen oallowfullscreen msallowfullscreen width="640" height="360"></iframe></p>
<p>And if you want the slides or to hear more from Adam, check out his blog at: <a href="http://adamfyles.blogspot.com/">http://adamfyles.blogspot.com/</a>.</p>
<p>For more information on NServiceBus and the rest of the Particular Service Platform, check out <a href="http://particular.net/">http://particular.net/</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2014/10/21/best-us-supermarket-running-nservicebus/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>NSBCon London 2014 Wrap-up</title>
		<link>https://udidahan.com/2014/08/05/nsbcon-london-2014-wrap-up/</link>
					<comments>https://udidahan.com/2014/08/05/nsbcon-london-2014-wrap-up/#respond</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Tue, 05 Aug 2014 10:13:34 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[NSBcon]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[Presentations]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=2304</guid>

					<description><![CDATA[Well, NSBCon London was a blast. It was such a blast that it took me this long to recover and get my head back into blogging. In any case, for those of you who couldn&#8217;t make it, check out this short 2-min video to get a feel for what it was like: The venue was [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Well, NSBCon London was a blast. It was such a blast that it took me this long to recover and get my head back into blogging. In any case, for those of you who couldn&#8217;t make it, check out this <a href="https://particular-1.wistia.com/medias/lz66venwns">short 2-min video</a> to get a feel for what it was like:</p>
<p><a href="//fast.wistia.net/embed/iframe/lz66venwns?popover=true" class="wistia-popover[height=608,playerColor=0db3c8,width=1080]"><img src="https://embed-ssl.wistia.com/deliveries/7aad4cb703e57be19b68ce1ebf9b70e381232426.jpg?image_play_button=true&#038;image_play_button_color=0db3c8e0&#038;image_crop_resized=500x281" alt="" /></a><br />
<script charset="ISO-8859-1" src="//fast.wistia.com/assets/external/popover-v1.js"></script><br />
<noscript><br />
<a href="https://particular-1.wistia.com/medias/lz66venwns"><img loading="lazy" src="https://embed-ssl.wistia.com/deliveries/7aad4cb703e57be19b68ce1ebf9b70e381232426.jpg?image_play_button=true&#038;image_play_button_color=0db3c8e0&#038;image_crop_resized=450x253" alt="NSBCon London Recap" width="450" height="253" /></a><br />
</noscript></p>
<p>The venue was packed, the speakers were great, and all in all the conference was a smashing success. If you don&#8217;t believe me &lt;wink/&gt; you can check out Roy Cornelissen&#8217;s coverage <a href="http://roycornelissen.wordpress.com/2014/07/09/nsbcon-2014-recap/">here</a>.</p>
<h3>All videos now online</h3>
<p>For those of you who couldn&#8217;t make it, we have all the videos recorded for you and you can access them <a href="http://particular.net/nsbcon-2014">here</a>.</p>
<p>Some of the cooler demos included:</p>
<ul>
<li>Szymon Pobiega showing how he plugged the Event Store under NServiceBus for complete transport, subscription, timeout, and saga persistence &#8211; video <a href="https://skillsmatter.com/skillscasts/5037-event-store-and-nservicebus">here</a>
</li>
<li>Dylan Beattie videoing the audience with his iPhone and having that processed through NServiceBus and uploaded to their site in &#8220;real time&#8221; &#8211; <a href="https://skillsmatter.com/skillscasts/5130-media-publishing-workflows-using-nservicebus">check it out</a>
</li>
</ul>
<p>Of course, I really think you should check out the <a href="http://particular.net/nsbcon-2014">full list</a>.</p>
<h3>Onward &#8211; to New York</h3>
<p><a href="http://www.nsbconnyc"><img loading="lazy" src="https://res.cloudinary.com/skillsmatter/image/upload/c_fill,w_300/v1397139794/eeoxx2rgbb8cam66eekq.png" width="300" height="300" alt="NSBCon New York" title="NSBCon New York" style="border:none; float:right; margin-left:10px; margin-bottom:10px;"></a>And for those of you in the US and Canada, we&#8217;re happy to announce that registration is open for NSBCon New York!</p>
<p>The early bird is available until the end of this week (Aug 8), so you should really get going.</p>
<p><a href="https://skillsmatter.com/conferences/6223-nsbcon-nyc-2014#program">Register here</a>.</p>
<p>We&#8217;ve got some really great speakers lined up for you &#8211; Jimmy Bogard will be there, and we&#8217;ll have both Oren Eini and Ted Neward speaking as well (who you might remember from the infamous <a href="http://www.dotnetrocks.com/dnr_photos/ORMSmackdown.jpg" style="font-weight:normal;">ORM Smackdown</a>).</p>
<p>And Carl and Richard from Dot Net Rocks will be there as well &#8211; rockin&#8217; it the way that only DNR can.</p>
<p><a href="https://skillsmatter.com/conferences/6223-nsbcon-nyc-2014#program"></p>
<h3>Hope to see you there!</h3>
<p></a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2014/08/05/nsbcon-london-2014-wrap-up/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>NSBcon Update</title>
		<link>https://udidahan.com/2014/06/16/nsbcon-update/</link>
					<comments>https://udidahan.com/2014/06/16/nsbcon-update/#respond</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Mon, 16 Jun 2014 12:45:32 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[NSBcon]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=2285</guid>

					<description><![CDATA[Just a quick reminder to let you know that NSBcon London is next week. For those of you who have been wondering, yes, you can come to just one of the days if you aren&#8217;t able to take both days off of work. Also, if you want to come but can&#8217;t convince your boss to [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="https://skillsmatter.com/conferences/6198-nsbcon"><img loading="lazy" src="/wp-content/uploads/nsbcon14-300-px-x-300-px1.png" alt="NSBcon" title="NSBcon" width="300" height="300" style="float:right; margin-left:10px; margin-bottom:40px; border:none;" /></a>Just a quick reminder to let you know that NSBcon London is next week.</p>
<p>For those of you who have been wondering, yes, you can come to just one of the days if you aren&#8217;t able to take both days off of work. Also, if you want to come but can&#8217;t convince your boss to pay for it, drop us a line and we&#8217;ll hook you up with a discount. Just send an email to <a href="mailto:nsbcon@particular.net">nsbcon@particular.net</a> and we&#8217;ll take care of everything.</p>
<p>One last thing &#8211; unfortunately, Oren won&#8217;t be able to come speak in London (but still will be speaking in NYC). While no one can quite fill in those shoes (as Oren is quite a big guy), we have someone I think you&#8217;ll really enjoy hearing: James Lewis, one of the main voices in the Microservices arena, will be coming to talk about &#8230; Microservices!</p>
<p>Hope to see you there: <a href="http://www.nsbcon.com">NSBcon.com</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2014/06/16/nsbcon-update/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>NSBcon London 2014</title>
		<link>https://udidahan.com/2014/04/22/nsbcon-london-2014/</link>
					<comments>https://udidahan.com/2014/04/22/nsbcon-london-2014/#comments</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Tue, 22 Apr 2014 14:05:24 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[EDA]]></category>
		<category><![CDATA[ESB]]></category>
		<category><![CDATA[Messaging]]></category>
		<category><![CDATA[MSMQ]]></category>
		<category><![CDATA[NSBcon]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[Workflow]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=2253</guid>

					<description><![CDATA[Since my last post announcing NSBcon you probably haven&#8217;t gone to take a look at what&#8217;s happening. The speaker lineup for NSBcon London 2014 is now complete and we&#8217;ve got a really great mix of talks, if I do say so myself. I&#8217;ve already mentioned that Oren and Greg will be there, but I wanted [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="https://skillsmatter.com/conferences/6198-nsbcon"><img loading="lazy" src="/wp-content/uploads/nsbcon14-300-px-x-300-px1.png" alt="NSBcon" title="NSBcon" width="300" height="300" style="float:right; margin-left:10px; margin-bottom:10px; border:none;" /></a>Since my last post <a href="http://www.udidahan.com/2014/03/13/announcing-nsbcon/">announcing NSBcon</a> you probably haven&#8217;t gone to take a look at what&#8217;s happening. </p>
<p>The speaker lineup for NSBcon London 2014 is now complete and we&#8217;ve got a really great mix of talks, if I do say so myself.</p>
<p>I&#8217;ve already mentioned that Oren and Greg will be there, but I wanted to talk a bit about the rest of the roster:</p>
<h2>First up &#8211; Wonga</h2>
<p>If you&#8217;re living in the UK, you almost can&#8217;t avoid seeing these ads.</p>
<p><img loading="lazy" src="/wp-content/uploads/Grabs_from_Wonga_T_1623046a1.jpg" alt="Wonga" title="Wonga" width="620" height="341" class="alignnone size-full wp-image-2256" srcset="https://udidahan.com/wp-content/uploads/Grabs_from_Wonga_T_1623046a1.jpg 620w, https://udidahan.com/wp-content/uploads/Grabs_from_Wonga_T_1623046a1-300x165.jpg 300w" sizes="(max-width: 620px) 100vw, 620px" /></p>
<p>What you probably didn&#8217;t know is that Wonga has been running on NServiceBus for years now.<br />
(No &#8211; we had nothing to do with the ads, and there&#8217;s nothing we can do about them.)</p>
<p><a href="https://twitter.com/Porkstone">Charlie Barker</a> was there from the beginning and has lived to tell the tale:</p>
<blockquote><p>We faced the problem of scaling our platform to meet rapid growth in customers whilst at the same time increasing the team from 15 to 200 people spread across five countries. We did this by transitioning from N-Tier to SOA even as we were delivering new features and keeping the platform stable. No small feat.</p></blockquote>
<p>This is an interesting story to hear, not only from the point of view of NServiceBus, and I&#8217;d definitely recommend grabbing Charlie over lunch or over a beer. This is probably one of the higher profile startup successes in the UK you&#8217;ll find and, as always, the behind the scenes story is just fascinating.</p>
<h2>And to the cloud!</h2>
<p>No self-respecting technology conference these days can go without spending at least some time talking about the cloud &#8211; and we won&#8217;t be the ones to buck the trend, even though we have a healthy disrespect for all sorts of things, including the ourselves <img src="https://s.w.org/images/core/emoji/13.1.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>You&#8217;ll hear from one of the foremost Azure MVPs and all around cloudy Belgian <a href="https://twitter.com/YvesGoeleven">Yves Goeleven</a> (whose last name nobody is really sure how to pronounce). Yves has been the driving force behind getting all the various bits of Azure infrastructure integrated into NServiceBus and, if you get him to just the right level of inebriation, will spill all the dirty little secrets of the Azure platform that Microsoft doesn&#8217;t want anyone to know.</p>
<p><a href="https://twitter.com/dylanbeattie">Dylan Beattie</a> will then relate his tales of creating loosely-coupled encoding workflows for audio and video on the cloud at Spotlight &#8211; one of the world&#8217;s leading resources for professional actors, casting directors, and production professionals. It ain&#8217;t easy making ordinary people into stars.</p>
<h2>And so much more</h2>
<p>To see the complete lineup, go to <a href="https://skillsmatter.com/conferences/6198-nsbcon#program">NSBcon.com</a>.</p>
<p>And me &#8211; what will I be talking about? That&#8217;s a good question.</p>
<p>Not to steal my own thunder (after stealing everybody else&#8217;s), but you&#8217;ll hear about the deeper integration we&#8217;ve got planned for SignalR, making your event-driven architecture extend from the back of your systems all the way to the browser, so much simpler and smoother than you ever thought possible. </p>
<p>I&#8217;ll also tell you about how we&#8217;re going to enable you to run on queues that don&#8217;t support distributed transactions (like Service Bus for Windows Server) without having to worry about making your logic idempotent. For some background, see my blog post on <a href="http://www.udidahan.com/2012/12/31/life-without-distributed-transactions/">Life without distributed transactions</a>.</p>
<p>In short &#8211; it&#8217;s going to be a kick-ass conference.</p>
<p><a href="http://www.nsbcon.com">Check it out.</a></p>
<p>* and for those of you paying out of pocket, contact <a href="mailto:nsbcon@particular.net">nsbcon@particular.net</a> for a discount.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2014/04/22/nsbcon-london-2014/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Announcing the Particular Service Platform</title>
		<link>https://udidahan.com/2014/04/16/announcing-the-particular-service-platform/</link>
					<comments>https://udidahan.com/2014/04/16/announcing-the-particular-service-platform/#comments</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Wed, 16 Apr 2014 14:41:52 +0000</pubDate>
				<category><![CDATA[EDA]]></category>
		<category><![CDATA[ESB]]></category>
		<category><![CDATA[Messaging]]></category>
		<category><![CDATA[MSMQ]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[Pub/Sub]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Particular]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=2211</guid>

					<description><![CDATA[After many months of hinting about the coming of the Particular Service Platform, it&#8217;s finally here. For everybody who has been building message-driven systems on .NET &#8211; I really do believe that this is the dawn of a new era (and if you know anything at all about me, you know that I don&#8217;t tend [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="/wp-content/uploads/champaign.png" alt="champaign" title="champaign" style="width:90px; height:135px; float:right; margin-left:10px; margin-bottom:10px;" />After many months of hinting about the coming of the <a href="http://www.particular.net">Particular Service Platform</a>, it&#8217;s finally here.</p>
<p>For everybody who has been building message-driven systems on .NET &#8211; I really do believe that this is the dawn of a new era (and if you know anything at all about me, you know that I don&#8217;t tend to exaggerate).</p>
<h3>What is it?</h3>
<p>Imagine designing your solution by graphically creating endpoints and messages, seeing the routing laid out in front of you visually, being able to specify system wide error and audit queues, having your cross-cutting authentication applied automatically to all endpoints, correlating events together into sagas, pressing F5, and as everything springs to life, on your second monitor you can see the messages flowing through your specific debug session synchronized in real time as you step through your code.</p>
<p>Well, you don&#8217;t have to imagine &#8211; that&#8217;s now a reality.</p>
<p>Top that off with some nice production monitoring that includes heartbeats for all of your endpoints, notification of message processing failures (with the ability to send them back for reprocessing), and some cool extensibility to plug in your own custom checks.</p>
<p>It&#8217;s a whole new world of service-oriented development.</p>
<p>This <a href="http://bit.ly/platformOverview">short video</a> will give you a sense of what it&#8217;s like:</p>
<p><a href="//fast.wistia.net/embed/iframe/8ju7eemmdh?popover=true" class="wistia-popover[height=608,playerColor=00a3c4,width=1080]"><img src="https://embed-ssl.wistia.com/deliveries/ff6eb27bcc109ca4241ef62408c91a2e36bf860b.jpg?image_play_button=true&#038;image_play_button_color=00a3c4e0&#038;image_crop_resized=500x281" alt="" /></a><br />
<script charset="ISO-8859-1" src="//fast.wistia.com/assets/external/popover-v1.js"></script></p>
<p>Here&#8217;s some other things you might find interesting.</p>
<h3>Testing you can trust</h3>
<p>I&#8217;ll bet you didn&#8217;t know the level of testing that we&#8217;re now putting into each release. </p>
<p>Every time we put out a new release, we test it on cloud servers configured across all permutations of transports, containers, persistence technologies, server operating systems, as well as for compatibility with previously released versions 2 years back (!). This way, when you want to have a new system subscribe to events published by a system already in production, you&#8217;ll know that it will all &#8220;just work&#8221; – no matter what. </p>
<p>Running all of these tests in the cloud is something that we could never afford back when we were a regular free/open-source project, but is definitely worth it. We know you count on us for your mission-critical systems and will continue doing our very best to be worthy of that trust.</p>
<h3>The roadmap</h3>
<p>Now that the platform is out, the next big thing you can expect is the removal of all distributed transactions.</p>
<p>Over the past months (and even years) we&#8217;ve been making preparations for this, making all sorts of small backwards compatible changes and enhancements so that we can fully control the inbound and outbound behavior of messages. The investments we&#8217;ve been making in automated tests is also in support of this. We want to be absolutely positive that you will get the exact same logical behavior as before without losing any of the transactional guarantees you&#8217;ve come to expect from NServiceBus.</p>
<p>We&#8217;ll give you updates on this and the other things we&#8217;re working on soon, as part of our larger roadmap so that you&#8217;ll know roughly what kind of big features you can expect and when. Of course, we always leave some &#8220;slack&#8221; in our iterations for working on critical patches, enhancements, and refactoring.</p>
<p>In any case, the main idea here is for you to be able to give us feedback and input on what’s important to you and for us to communicate back what we will be able to commit to and when.</p>
<h3>Expressing our thanks</h3>
<p>It&#8217;s been quite a journey this past year – the company has doubled in size and we&#8217;ve really got a great group of people here. While we&#8217;re constantly looking ahead and seeing all the wonderful things that we want to do, I wanted to take a moment and look back.</p>
<p>It&#8217;s been almost two years of work on ServiceMatrix (previously named NSB Studio) – the absolute biggest investment we&#8217;ve made. This past year was really the biggest push, and when taken together with all of the other tools – the production monitoring in ServicePulse that so many people have been clamoring for; the under-the-hood visibility of ServiceInsight; and the unseen glue of ServiceControl tying them all together;  well, it was a very ambitious year.</p>
<p>I wanted to thank everyone who took part in our betas – your feedback was absolutely invaluable;</p>
<p>To our <a href="http://particular.net/champions">Community Champs</a> who keep asking us the difficult questions and pushing us to do better;</p>
<p>To all of you in our community who have believed in us;</p>
<p>To the growing ranks of paying customers who voted with their wallets as well as their hearts;</p>
<p>You have my personal thanks as well as those of the entire team.<br />
It continues to be an honor and a privilege.</p>
<h3>Go and get it</h3>
<p>That’s it – go to <a href="http://www.particular.net">www.particular.net</a> and click the big &#8220;download now&#8221; button and take the new platform for a spin!</p>
<p>I can&#8217;t wait to hear what you all think.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2014/04/16/announcing-the-particular-service-platform/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Loosely-coupled orchestration recording now online</title>
		<link>https://udidahan.com/2014/04/07/loosely-coupled-orchestration-recording-now-online/</link>
					<comments>https://udidahan.com/2014/04/07/loosely-coupled-orchestration-recording-now-online/#comments</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Mon, 07 Apr 2014 13:25:02 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[EDA]]></category>
		<category><![CDATA[Messaging]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Pub/Sub]]></category>
		<category><![CDATA[SOA]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=2205</guid>

					<description><![CDATA[When I was in London a couple of weeks ago teaching my SOA class, I gave an evening presentation called Loosely-Coupled Orchestration which talked about some of the challenges people face when introducing more event-driven and asynchronous patterns into their systems &#8211; for example, dealing with out-of-order message delivery. I&#8217;m happy to say that the [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>When I was in London a couple of weeks ago teaching my SOA class, I gave an evening presentation called Loosely-Coupled Orchestration which talked about some of the challenges people face when introducing more event-driven and asynchronous patterns into their systems &#8211; for example, dealing with out-of-order message delivery.</p>
<p>I&#8217;m happy to say that the recording of that session is now online, courtesy of the good folks at Skills Matter, and you can now view that <a href="https://skillsmatter.com/skillscasts/5090-loosely-coupled-orchestration-with-messaging">here</a>.</p>
<p>In this presentation, you&#8217;ll also see a lot of the new capabilities that will be coming out soon with the release of our new Particular Service Platform &#8211; the suite of tools that makes NServiceBus that much more awesome. From monitoring of production issues, to debugging cross-endpoint message flows, to modeling of message-driven &amp; service-oriented systems, it really takes distributed systems development to the next level.</p>
<p><a href="https://skillsmatter.com/skillscasts/5090-loosely-coupled-orchestration-with-messaging">Check it out!</a></p>
<p>Oh, I almost forgot, there are still some seats left for my course in New York City. <a href="http://www.eventbee.com/v/nservicebus/event?eid=103218412">Details here</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2014/04/07/loosely-coupled-orchestration-recording-now-online/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Code for my Programming in 4D talk</title>
		<link>https://udidahan.com/2014/04/02/code-for-my-programming-in-4d-talk/</link>
					<comments>https://udidahan.com/2014/04/02/code-for-my-programming-in-4d-talk/#comments</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Wed, 02 Apr 2014 11:48:30 +0000</pubDate>
				<category><![CDATA[Business Rules]]></category>
		<category><![CDATA[Messaging]]></category>
		<category><![CDATA[Modeling]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[Versioning]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=2187</guid>

					<description><![CDATA[So, I&#8217;ve been a bad presenter. I&#8217;ve given my Programming in 4D talk already several times and I haven&#8217;t yet uploaded the code for it. And seeing as I&#8217;m going to be giving it again today (at the DevWeek conference in London), I figured that I should finally get my act together and put it [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="http://upload.wikimedia.org/wikipedia/commons/5/55/Tesseract.gif"><img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxITEhUUEhQUFBQWFxoYFRcVFxccFxwUHRcXFxQXFBYbHCggGBolHRYVITEiJSkrLi4uFx8zODMsNygtLisBCgoKDg0OGxAQGywkICQsLCwsLCw0LCwsLCwsLCwsLCwsLDQsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLP/AABEIAMwAzAMBEQACEQEDEQH/xAAbAAEAAwADAQAAAAAAAAAAAAAABQYHAQMEAv/EAEQQAAEDAgMEBAkKBQQDAQAAAAEAAgMEEQUGIRIxQVEHYXGxEyIjMjNicoGRJDRCUmNzocHR8BSSorLhJTWCwkOD0hb/xAAZAQEAAwEBAAAAAAAAAAAAAAAAAwQFAgH/xAAyEQACAQMDAgQEBQUBAQAAAAAAAQIDBBEhMTISQRMzUXEiQmGRFCOBobFDUtHh8PEF/9oADAMBAAIRAxEAPwDDUAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEAQBAd1PSSP0Yx7z6rSe4LpRk9keOSXcm6HI2JTeZR1Fubo3NHxdYLrw5HPiRLDR9DuKOsXtihH2kjf+t16qX1OXVS7EvB0MBtjPiEDOYaLn43Ukbdvs/sRu4X0JGHoywePWWsnl6mbDQf6SfxUsbSX9v3ZHK5+v7EnS5ewKLzaWSU/aOJ/O34KZWkvov3I3ce52YtR4e1h8LRRxxPZ5MNABB4G6l8JdPTlP1I/EecmN1uFxFzhG4t10B1Fu8KpO3g38LwW4VZJa6kZUYfIzhcc26j/AAq06M4k0akWeVREgQBAEAQBAEAQBAEAQEnQZerJgDFTTyA7nNjeW/zWsu1Tm9kcOpFbsnKfo3xB2r2RxD7WWMfgCT+CljbVGRu4giTg6MLC81dTM5hm08+61lIrOZw7qJJQ9H+Ft9JWVEnVHGxt/e6/cpFZPv8Az/o4d0+xIU2A4LFa1NPMRxlmP4hgAUqs19Ptn+WRu5kSVPiNJF6DD6VluJZtH4lSq1iu7OHWkz2jNtSNIxFEPUYAuvw9P0yc+LI6Jceq3+dK/XloF3GlBbJHLk3uzyvlld5z3HtcVIljY5OPBDiR7yvTwGSIb3tHYmh7qeatxOMN2Y33eTbsHErzqQ6SWz182pvuwq8N5e536GO1l9t1uap1M9TwXIYwfLKlw5hcqo0euCZzJ4N/nN15t0K9fRPdBdUdjyS4YfoODuo6FQyt/wC1kiq+p4ZIy02IIPWoGmtGSpp7HyvD0IAgCAIAgCA7aRoL2A7i4X7Lhd01mST9TmbxFmxTmoY1gc5zWuaCyx8XZ3acFvLHYyDxOkHF/wASvWDrfVRje9vxXjcUe4bOl2L04+mL9Vlz4sF3OuiT7HUcwwDrXPjw9T3wpHy3MbeAHvK88eI8JnEmPvt4ng79ZR1vQeH6nRDiGITSNjiZGXONmjbaOBO8kAblE61Xsl9yRU6fdskxlfF3efLSRe1O2/8ASSuHOu//ABnuKK/5H03I1UdJMRpm+xtO7gvHGu+7+x710l2Pp3R/EBeXEnOHHwcTu8lPAqvdv9h40FskQ9DAGFoFyAbAneRwJ61apx6UkQzecl/z583pvuwuYfN7nPoVzKeB09RTvMkO0/whG2HvBA04DT8F5Cmpas7nNxehzVdHLTqyQtvuDwO/ReSt4vZhVn3IWp6O6wXLGtlA1Ow4XA5kXUE6GCWNZMrdVh80Rs9j2nk4EKN05RJFOLPFisbwG7YsdbX32UVdSSXUSUmsvBGqsThAEAQBAEAQHZTmzmnrHeuockeS2ZteaZPkFG8bw11uWhvYrZzhy/QyktjpwWqoqxoDBHFUC12aW2vVvwXsJxkJRlEksTpIJm+CrYgwjzJ422I5bY4heSp52+wjNozrNeUqij8drWzwHzZWXIt61typVIyjql/kt05xlo2VT+MH1fxVfxV6E/hv1PoVbeR+K98Veh50M+v4xvrBe+Kjzw2aJ0QUUMtReUbW2x7Yb8JOJ7eA7Vap5UPEX/LuV6vLoZ95nx/+BmMUkRcQTYg2BCs1bpU8ZW5DToOezIR/SGfowD3kqB//AEF2RN+DfqcU+dJ5yY9hjWkG5F72XtO7lUl04OZ2ygs5JTwOy2PrJ7lb9CDO5cM/fN6b7sdyih83uPQx6pxuohcWRSuY297A8VQq15wliLL0KUZLLROZPwivxB93TSR07PSTOJsPVZ9Z55BKcqs3uzyoqcFsX/E8ahooBT05Nm73ON3udxfIeJ6uC0IxUNZblN5k9CuZPkFbXNdKdtjXE25uAuL9Sj6+tNrsdyj0aFRz46859p3eq19uixa7MrCoFsIAgCAIAgCA5aUQNqxY7WEU55OcPwBW3u37IyluZBUyOZJtNJBGoI3rKqNxnlGjBKUcMveWOkbQQ1zfCM3B/wBIcFapXaek9H6lapbY1iXymFmGSje2aB3nRmzhbk5vBXfhluVdUVLHslU1Xd9J5Cfe6Fx8Un1Cq1a2Ute/qT067jo9jNq/CpoXmOSNzXDhY/hzWfKlOLw0XY1IyWUzobSSHcx5/wCJ/Rc9EvQ96o+ppeQ6Z7KN0oY4SQytc3Q3ttWcAOOhWpbaU0n9ShXeZvBYOmDBf4qGOphaXPLQ4taCXX0DgQNVxOm5UnDvF6ex7Tmo1M9mZA3AKs7qac/+p/6Kh4U/Qu+JH1JrLmFSRvIljcx+nivaQ62/cVetKTjltFW4qJ6ItGIvG1GwcNVfb1RUWxaekA/J6b7sdyhh83ue+hQcq5Riq5ny1MrWQMPmNd5WQ/VaODeblTdu5zyW/GUI4LZmPNMcUYhgDY4mCzGt3NH5nrV3EaSKyUpsynF8YdKTY6c+aza9w56LYvUqKjqy8dDQ8t/N3Kxa+Uyvc8yq53def3u71HfckS2vFlcVEtBAEAQBAEAQBAbRA7bwVvVJ3tC2o9n9DKfL9TI8UHjlZdfkaNLieNQkhLYBmOoo3h8DyNdW/RPaFNTrShp29CKpSjPc1PBc00WIANlIpqngdzHH8lo0q6lt9u/+ylUoyhuSwxuqgPg/Eds/ScxpJHAhxGospnShPUi6mj7bmuq+zHZGz9E/Dw/5seJI7Bmqs+sP5G/on4en6fyPEl6gZprTuf8A0tT8PT9B4kvU7G5mrOMh9wC9VtT/ALTzxJepWqtkstTJM/aebAuNt1mgC/IaLpRUdEG2yt/xBfUnq/VRqWZ4JGsQL30gn5PT/djuXkPm9zjujKmPlDiWB1gb7XDr1VfM09CziONSFxHEHSE33clTrVpTZZp01FHiUBKaf0PeefZf3LUtfKM+55lOzi7y3x71Be80T2vEgVSLIQBAEAQBAEAQGxZddtYK8cnNP4WWzS1jH2MuppN+5lmLts9ZtwviL9HY8CgJQgPdghtPH7QU1v5qIq3Bmq9IlQ9rYXMcQfAt1C1ZNqDa9WZ8EnLDMxdmCpv6V34LNd1V9S/4FP0Lrk2V09JUySuc58YBabkW8YcBoVet6kpwy36lSvFRlhEhAy+HOnu7wgkAB2juty3Kbqf7EWFnBn02YqoOI8K7QnksyV1VTayX1QptbGn9HNS59PO55u50JJPWtCEnKEWyjUSjJpFUg+cn98V0vMPXwL5n8+Qg9gL2Pze5x3RVpv8Aa4/vZe9Rx4s7fMzF+8rHe5prY+V4emo9EOm2eUci1LXyv1M+55lIzWfLfvmq97zLFtxIVUywEAQBAEAQBAEBrmRnbWFTt5WPwuFr0Nacf1Myt5jM1xseOqNzyLlHYjVWJwgPVhZtNH7Q71LQ8yPuR1eDNV6QzenpzzhHeVq1OLM+nyMifvKxnuaiND6OT8krB6n5tWnZ+X+pQueZLUZ/0qT7wfmrHykPzGU1Xnu7VjVOTNOHFGu9GZ+Sy/cnvWtR8uBnVubK1B85P74rpeYePgXnPh8jB7AXa2ZwtyrTf7ZF7cveFGuDJHzMzdvWMzTRwvAap0T6MkP2T1rWvlL3M245lCzOfLH98VUvPMLVtwIhVCwEAQBAEAQBAEBqvRm69BUt9U961rXy0Z1x5hQMfb43vVS63LNDYiVULAQHfQHyjPab3hd0nia9zifFms521pKY/ZkfiVs1OLM2nyMhk3ntWJLc1FsaD0an5PVj1D/1WlZcH7lG65ImKD/bJfvB+atLiQPkZTVee7tWLU5M1IcUa30Z/NZPuT3rWoeXEza3Nldg+cn98V0vMD4F2z36GD2Au1syNblVqv8AbIvbl/uUX9NkvzmbFYxpnCA1TowFoJT9k7vWxar8pGbcczP8xuvMVQu/MLdvwItVicIAgCAIAgCAIDTuiZ94alvqu/tBWpZP8v8AUz7pfGUzMjfHPaq90tSe3ehCKmWQgO2mPjt9od66hyRzLizWs160NOfVd3rbqL4WZcORkc3nHtWJLdmrHYvnRkfJVY+zPcFo2PF+5Su+SJrDD/p045PHerceP3K75GW1jSHuuOKxaqakzTg/hRqvRo75NJ90R+K1bfy4mfX5sgIPnJ/fFdLzDx8C6Z4PkYfYCk7MjW5V6s/6bF7cv9xUP9NkvzmblYxpnCA1Xo30pZj9ke9bNr5SMy45szvHz5ZyzrrzGXaHAjlXJggCAIAgCAIAgNH6IH+NM3m139v+FpWPBr6lG75IrOaW2e7tXF2d25XlQLYQH3D5w7R3r2O6PHsa1mA3w+D/AJd63Z8WZUORQqPLT5PHc9rGO1B3kjsWdG0lL4m8IuO4UdEifwyWGja8Rvc4vFnHmOIVumoUVhFeblUeWcUWYD4ZjWABu2LggbNr/S4fFFX6n0oOlhZNGbjgkFnx0so644z3KbwYPZv7kPXJEfg2z4Wr2GNjbsusxgs0Cw0aOAXqWNA3kpNP85P74qNeYSPgXDPB8jD7A7lI9mRx3KlUVjXUUcQ85pf7yXG1lDn8vBNj48lBmic0kOBBHArHlFp4ZopprKPheHpq2QRailP2f5ratvLiZlfmzN8bPlndqzLnzGXqPBHhUBKEAQBAEAQBAEBfeiN/yhw5j8itGx2kUrvsRWcY7SP6ie9LxHtsVdZxcCAuuUciyT7MtRtRxbw3/wAj/ZHAdZV63tHL4paIqVrlR0iaC+WOHwcewyVsZJAf4w13Bw42Wm4prBRTe57nYrRyC01FEfY8XTqAUTpS7Sf64Z31r0PHLl/BZjrHPCfVcSPhdRuhP6P7o7VVfU6a7o/opo9iCsEQ5OZY+8rmpCTj09OPY9hNJ5z9yv1HQ7Wtuaephk5WeWlVPCxtJr3TLHjZ3WSWyjh81OJ4Z/SsYQ/W+trjXjpZaNFfAsvJUqtOWhVaf5yf3xXi8w9fAt2dz5KL2B3KSXE4juUPL0EU05jklEZFywEGznX0F9wVOm1KeG9izPKjlI92O4EQdmVtjwcPyPEKarRjNakdOo47FNxDDnxHXVvBw3f4WZVoypvXYvU6imaVknSglP2Y71q0PLiZ9bzGZri5vM/tWVceYzQpcEeNQkgQBAEAQBAEAQFy6LZbVY67d6v2PJoqXfFHGe2Wlk7Su7s4tiq0dI+V4ZG0ucdwCz4QlN4iXJSUVlmo5TyIyECWo2XyDXX0bP8A6ctahaRp6y1Zn1bhz0joiSxrMIb4kNy46X4ns5BWJTIVErjqprDtySEv+q06dh5qPqUdWzvpb0RH1WbHNPi2t62qhnd42JY2+dziHPY+nFfraf1XCv13R07R9mSlNnWld5xkZ2tv3KaN7Se7wRu2qImqLHYH+ZOy/tWKnjWhLZkLpyW6JfAZmSVT2OO1tssSDe5tpr2JN4WUeJELmjAmU1Uwx32Xtvqb68VHDV5O86YPTnX0UfsBSS4nMdyNy9kyiqadkkgmbKS67mOFtHECzTuVRW0Zrq/yTyryi8Flhy+GReDMxqGDzWyttIB6r91+1WYJpYZBKSbyiqYtgdgS3x2biCNR1OHBJQydRmduBSsZTTxDQ7I2R6oOvw0XsEksI8nlvJmWJnyr+1YtbzGadLgjyqIkCAIAgCAIAgCAs3R5JasZ++IV2xf5n6FW6XwFgzbhrpqzwQ023WvyHE+4K3Wp9bUSvSn0rJbsHwKnoI7kWJGpPpHdp+i1TU4QprEPuRTnKbzIrmY81l3iMsGjcBuH6lRzqpbHcKbZUKjGCL2Nr7zxKqSr4LMaWSInrnOVaVVsnjTSPKXE71DkkOEAQBAXbo1xEsmGu5wPuOi0rGWU4spXUcYZpvSCARTuH13D3Ft1Zp6Mq9iGzt6KP2ApJcTyO5ndNm+rpiWRSDYB0a5oI5lZjuakJYRfVCE1lk7Q9KkzfSwRv62ktK7V8+6OHaLsywQ5tbVxlzIHxP8Arki1vpDm4dqu0aniLKRWqU+h4yVzGcRbGCBv5pWqqCPacHJlDqJNpxdzKxZy6pNmnFYWDrXJ6EAQBAEAQBAEBN5Nl2auM9f+fyVqzeKqK9ys0zYsJrqRs75pWPLnaNcLeKOYHNas4t6xZnp9mdmMZairATBW2cfoy6HsuopuWMSX21O44zp+5n2P9GuJw3IjErfrRm6pSpuXGSf7MtxqRXJYKRWUUsZtKxzD6wIVadOceSJ4zjLZnmUZ2EAQBAEBK5an2J29en5/krNpLpqEFxHMDXsxVPhIKU+sf7VrtamcjyZ19FH7IXkthDcx6t9I7tWHU5M1ocUSmXcCdO7adpGN/X1BWLa2dR9UtiGtW6FhblsxCrZCzYZYAaABac5qCwilGLk8souJVpe466LHrVXJmhTh0o8ShJQgCAIAgCAIAgCA+o5C0gtNiDcEc16m08o8aTWGWGhzdK3SQB457irsL6S5LJWlaxexYKDNcD97jGfW3fEK3Tu6cu+Pcrzt5r6ltwvMkzLGOUkdRuPgp3GE1qkyHLiTf/6WGYbNXTRSg7zsgOUXgY4ya/dHXX6ojKzJGDVV/BOdTPPAjS/uUE6D+aCftoSxrNbS+5WMX6GKpoLqaSOZvCx1VaVCDeE8fRk8a8u6z7FHxXK1ZTkiWF4txtcKOVtUSzjPsSxrwfchyLb1A1glOEB20smy9ruRC6hLpkmcyWU0amKvbggbyeT/AErezlJmTjDZIZ19FH7IXktj2G5nGF4G6eZznaRg6nn1BZ1K2dSbb2Ls63RFJbltq52QsDWgCwsAFoyahHQpJOTKNjGIF7iL9qyq9bqeEX6VPCyRSqlgIAgCAIAgCAIAgCAIAgCA7qeqew3Y5zT1EhdxqSjxeDmUIy3RO0Ob5m6SBsg+B+IVuF9NctSvK1i9tCx4fm6nfo4ujPrC49zgrcLunL6FeVvOP1LXheMPbZ0Uh7WOVj4ZrXUg1i/QsNPm55GzMxkzfWAuonbRzmDa9jvxX31OitwrB6v0kPgXniALfFRypVO6Uv5Oo1I9m0VzFOhiN4LqOoa7kCdfh/lVZUqXdOP7osRrT7YZRsZ6OK+n86PaHNt1G7ST4NMkVzH5lgkcGLw2JrwWuB1B33tZaNLPQk9ynUx1NotOd/RR+yF3LY4huV+hqBHTtPGx+NykJYgjqSzIqmN4mXE66rPuK3ZFqjSIIlUS2cIAgCAIAgCAIAgCAIAgCAIAgCAIDtp6l7DdjnNPqkhdRnKOzOXFS3RYcPzpOzSQNlHXo74hW4X01y1K8rWL20LNhudKZ+jy6I+sLt/mCuU72nLfQrTtprbUtNBXAjaieD1sd+StJqS01IGmifo8yTt0Lg8fVfr3qKVtTlrjHsdKpJaEPm+eOYRPbC2N7X+O5u4gi3eipyju8o96k+xG579HH7ISWwjuZrW4haMN5bviVRqVcRwXIU8yIF7yTcqg3l5LSWD5Xh6EAQBAEAQBAEAQBAEAQBAEAQBAEAQBAEB209S9huxzmnm0kdy6jOUdmeOKe6LJhueqqOwfszN9ff8AEK3C+qR31K87WD20LXh+e6SUbMofCTz8Zvx4K3C9py30K0rWcdtT3Z+xOmMMbo545AWDzTqDyI5r2VaPS2zmFOXVgyKom2jdZE5dTyaUY4R1Lk6CAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCAIAgCA//Z" title="Click here for the animation" alt="Click here for the animation" style="float:right; margin-left:10px; margin-bottom:10px;" /></a>So, I&#8217;ve been a bad presenter.</p>
<p>I&#8217;ve given my Programming in 4D talk already several times and I haven&#8217;t yet uploaded the code for it.</p>
<p>And seeing as I&#8217;m going to be giving it again today (at the DevWeek conference in London), I figured that I should finally get my act together and put it online.</p>
<p>Interestingly enough, the other conferences I&#8217;ve spoken at either didn&#8217;t record it or didn&#8217;t put the recording online. Hopefully DevWeek will do better &lt;FingersCrossed/&gt;.</p>
<h3>The overall solution</h3>
<p>The scenario I talk about in this presentation is (again) a standard one in the world of retail: customers who want to return products that they&#8217;ve purchased and get a refund.</p>
<p>I&#8217;ve used our new <a href="http://particular.net/ServiceMatrix-1">ServiceMatrix</a> tooling to model the solution like this (click for a larger image):</p>
<p><a href="http://www.udidahan.com/wp-content/uploads/RefundPolicySolutionBig1.png" /><img loading="lazy" src="/wp-content/uploads/RefundPolicySolutionSmall1.png" alt="RefundPolicySolution" title="RefundPolicySolution" width="700" height="379" class="alignnone size-full wp-image-2191" srcset="https://udidahan.com/wp-content/uploads/RefundPolicySolutionSmall1.png 700w, https://udidahan.com/wp-content/uploads/RefundPolicySolutionSmall1-300x162.png 300w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
<p>If you&#8217;d like to download the complete solution, <a href="https://www.dropbox.com/s/yyg32z0zqd41c60/RetailSample.zip">click here</a>. </p>
<p>Now, we&#8217;re going to focus on the RefundPolicy object that you can see towards the bottom left.</p>
<h3>The Refund Policy</h3>
<p>So, in this scenario, what we&#8217;re going to implement is a process whereby if you return your products within 30 days of the purchase, you&#8217;ll receive a 100% refund; if you return your products within 60 days you&#8217;ll receive a 50% refund, and anything longer than that and no refund for you.</p>
<p>Here&#8217;s the code:</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<div class="csharpcode">
<pre><span class="kwrd">public</span> <span class="kwrd">class</span> RefundPolicy : Saga&lt;RefundPolicySagaData&gt;, </pre>
<pre>                            IAmStartedByMessages&lt;OrderAccepted&gt;, </pre>
<pre >                            IHandleMessages&lt;ProductsReturned&gt;, </pre>
<pre>                            IHandleTimeouts&lt;Percent&gt;, </pre>
<pre >                            IHandleSagaNotFound</pre>
<pre>{</pre>
<pre>    <span class="kwrd">public</span> <span class="kwrd">void</span> Handle(OrderAccepted message)</pre>
<pre>    {</pre>
<pre >        Data.OrderId = message.OrderId;</pre>
<pre>        Console.WriteLine(<span class="str">"OrderAccepted"</span>);</pre>
<pre >&nbsp;</pre>
<pre>        Data.Percent = 100;</pre>
<pre >&nbsp;</pre>
<pre>        RequestTimeout(TimeSpan.FromDays(30), 50.Percent());</pre>
<pre >        RequestTimeout(TimeSpan.FromDays(60), 0.Percent());</pre>
<pre>    }</pre>
<pre >&nbsp;</pre>
<pre>    <span class="kwrd">public</span> <span class="kwrd">void</span> Handle(ProductsReturned message)</pre>
<pre >    {</pre>
<pre>        Console.WriteLine(<span class="str">"ProductsReturned"</span>);</pre>
<pre >&nbsp;</pre>
<pre>        Bus.Send&lt;IssueRefund&gt;(m =&gt; m.Percent = Data.Percent);</pre>
<pre >        MarkAsComplete();</pre>
<pre>    }</pre>
<pre >&nbsp;</pre>
<pre>    <span class="kwrd">public</span> <span class="kwrd">override</span> <span class="kwrd">void</span> ConfigureHowToFindSaga()</pre>
<pre >    {</pre>
<pre>        ConfigureMapping&lt;ProductsReturned&gt;(m =&gt; m.OrderId).ToSaga(s =&gt; s.OrderId);</pre>
<pre >    }</pre>
<pre>        </pre>
<pre >    <span class="kwrd">public</span> <span class="kwrd">void</span> Timeout(Percent state)</pre>
<pre>    {</pre>
<pre>        Console.WriteLine(<span class="str">"Timeout"</span>);</pre>
<pre>        Data.Percent = state;</pre>
<pre >&nbsp;</pre>
<pre>        <span class="kwrd">if</span> (state == 0)</pre>
<pre >            MarkAsComplete();</pre>
<pre>    }</pre>
<pre >&nbsp;</pre>
<pre>    <span class="kwrd">public</span> <span class="kwrd">void</span> Handle(<span class="kwrd">object</span> message)</pre>
<pre >    {</pre>
<pre>        <span class="kwrd">if</span> (message <span class="kwrd">is</span> ProductsReturned)</pre>
<pre >            Console.WriteLine(<span class="str">"No refund for you"</span>);</pre>
<pre>    }</pre>
<pre >}</pre>
<pre>&nbsp;</pre>
<pre ><span class="kwrd">public</span> <span class="kwrd">class</span> RefundPolicySagaData : ContainSagaData</pre>
<pre>{</pre>
<pre >    [Unique]</pre>
<pre>    <span class="kwrd">public</span> <span class="kwrd">int</span> OrderId { <span class="kwrd">get</span>; <span class="kwrd">set</span>; }</pre>
<pre >&nbsp;</pre>
<pre>    <span class="kwrd">public</span> Percent Percent { <span class="kwrd">get</span>; <span class="kwrd">set</span>; }</pre>
<pre >}</pre>
</div>
<p></p>
<h3>And what&#8217;s so good about that?</h3>
<p>Well, not to steal my own thunder and give you a reason not to watch the video when it comes out, the trick is in the two RequestTimeout calls that are invoked when an OrderAccepted message arrives. You see, what that does is that it takes the data that defines the behavior of the refund policy and persists that via a queue, which will play back the data to our object according to the defined schedule.</p>
<p>This way, if/when the business decides to change the rules (say, reducing the timeframes to 20 days and 40 days), that will only affect users who are placing new purchases. The customers who made a purchase 50 days earlier (when the rules were still 30/60) will get the correct behavior applied to them.</p>
<h3>Next steps</h3>
<p>Of course, nobody would want a developer to have to open this code and change it in order to make a simple change like 30/60 -> 20/40, so we could externalize the data by creating a dictionary property on the saga where the key is the TimeSpan and the value is the Percent. Then, we could pull those values from either a config file or database and inject them into the property on the saga.</p>
<p>Here&#8217;s how the code of the saga would change:</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<div class="csharpcode">
<pre ><span class="kwrd">public</span> <span class="kwrd">class</span> RefundPolicy : Saga&lt;RefundPolicySagaData&gt;, </pre>
<pre>                            IAmStartedByMessages&lt;OrderAccepted&gt;, </pre>
<pre >                            IHandleMessages&lt;ProductsReturned&gt;, </pre>
<pre>                            IHandleTimeouts&lt;Percent&gt;, </pre>
<pre >                            IHandleSagaNotFound</pre>
<pre>{</pre>
<pre >    <span class="kwrd">public</span> Dictionary&lt;TimeSpan, Percent&gt; DataDefinitions { <span class="kwrd">get</span>; <span class="kwrd">set</span>; }</pre>
<pre>&nbsp;</pre>
<pre >    <span class="kwrd">partial</span> <span class="kwrd">void</span> HandleImplementation(OrderAccepted message)</pre>
<pre>    {</pre>
<pre >        Data.OrderId = message.OrderId;</pre>
<pre>        Console.WriteLine(<span class="str">"OrderAccepted"</span>);</pre>
<pre >&nbsp;</pre>
<pre>        Data.Percent = 100;</pre>
<pre >&nbsp;</pre>
<pre>        <span class="kwrd">foreach</span>(<span class="kwrd">var</span> kv <span class="kwrd">in</span> DataDefinitions)</pre>
<pre >            RequestTimeout(kv.Key, kv.Value);</pre>
<pre>    }</pre>
</div>
<p>And the code to do the property injection would look like this:</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<div class="csharpcode">
<pre ><span class="kwrd">public</span> <span class="kwrd">class</span> RefundPolicyDataConfigurator : INeedInitialization</pre>
<pre>{</pre>
<pre >    <span class="kwrd">public</span> <span class="kwrd">void</span> Init()</pre>
<pre>    {</pre>
<pre >        Dictionary&lt;TimeSpan, Percent&gt; data = <span class="kwrd">null</span> <span class="rem">/* get from config instead */</span>;</pre>
<pre>        Configure.Instance.Configurer</pre>
<pre >            .ConfigureProperty&lt;RefundPolicy&gt;(p =&gt; p.DataDefinitions, data);</pre>
<pre>    }</pre>
<pre >}</pre>
</div>
<p>Classes the implement INeedInitialization are invoked at process startup, and that call to ConfigureProperty instructs the container to set the DataDefinitions property of our RefundPolicy every time it is resolved (which is on every message).</p>
<h3>In closing</h3>
<p>We now have a solution which allows non-developers to make changes to the refund policy definitions without requiring us to deploy any new code to production. Also, any changes that are made will preserve the promises we made to our users in the past.</p>
<p>Of course, if you want changes to rules to impact all users immediately, this approach wouldn&#8217;t be so good.</p>
<p>Again, if you&#8217;d like to download the complete solution, <a href="https://www.dropbox.com/s/yyg32z0zqd41c60/RetailSample.zip">the code is here</a>, and if it wasn&#8217;t already obvious, this code makes use of <a href="http://particular.net/">NServiceBus</a> quite heavily.</p>
<p>When the recording comes online, I&#8217;ll update this post with a link as well as do another blog post.</p>
<p>Hope you like it.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2014/04/02/code-for-my-programming-in-4d-talk/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>On that Microservices thing</title>
		<link>https://udidahan.com/2014/03/31/on-that-microservices-thing/</link>
					<comments>https://udidahan.com/2014/03/31/on-that-microservices-thing/#comments</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Mon, 31 Mar 2014 16:40:36 +0000</pubDate>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Autonomous Services]]></category>
		<category><![CDATA[EDA]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[Pub/Sub]]></category>
		<category><![CDATA[SOA]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=2181</guid>

					<description><![CDATA[Seems that I&#8217;m a bit late to the Microservices party &#8211; original article here. But since I&#8217;ve been getting repeated requests to weigh in on the topic, I guess I&#8217;ll have to risk fanning the flames up again. Also, since quite a few reactions have already been written on the topic (and I don&#8217;t want [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" src="/wp-content/uploads/ants1.jpg" alt="ants" title="ants" width="300" height="182" style="float:right; margin-left:10px; margin-bottom:10px;"/>Seems that I&#8217;m a bit late to the Microservices party &#8211; original article <a href="http://martinfowler.com/articles/microservices.html">here</a>.</p>
<p>But since I&#8217;ve been getting repeated requests to weigh in on the topic, I guess I&#8217;ll have to risk fanning the flames up again.</p>
<p>Also, since quite a few reactions have already been written on the topic (and I don&#8217;t want to repeat them here), I&#8217;ll just point to <a href="http://arnon.me/2014/03/services-microservices-nanoservices">this post by Arnon</a> which sums them all up pretty well.</p>
<p>Now, I don&#8217;t entirely agree with all the commentary Arnon pointed to, or all of his thoughts on the topic, but I&#8217;ll try to take those up some other time.</p>
<p>And before jumping into it, let me say that there is a lot of good stuff in the article and that, regardless of naming, spreading the word more broadly on these approaches has value.</p>
<h3>So, where do I stand on the topic</h3>
<p>First of all, for those of you who have been following my blog for a while I&#8217;d say this:</p>
<p>Microservices almost equals Autonomous Components.</p>
<p>Why &#8220;almost&#8221;?</p>
<p>Because an Autonomous Component (AC) isn&#8217;t necessarily a physical unit of deployment &#8211; very often we&#8217;ll see multiple ACs deployed in the same physical process. One of the most common occurrences is in a web front end built as a composite UI. In the same web server process we&#8217;ll see components from multiple Services.</p>
<p>This is something that was hardly mentioned in the original article.</p>
<h3>On Services and Systems</h3>
<p>In my world, Services are a larger organizing principle that are meant to align solution domain boundaries with problem domain boundaries.</p>
<p>Now, that might sound very similar to this passage from the original article:</p>
<blockquote><p>
&#8220;The microservice approach to division is different, splitting up into services organized around business capability. Such services take a broad-stack implementation of software for that business area, including user-interface, persistant storage, and any external collaborations. Consequently the teams are cross-functional, including the full range of skills required for the development: user-experience, database, and project management.&#8221;
</p></blockquote>
<p>Now, this isn&#8217;t entirely surprising because I did have several conversations with both James and Martin on the topic over the past couple of years.</p>
<p>Still, there is something important missing here that I believe is very important to achieve loose-coupling, and that is that Services necessarily have to span system boundaries.</p>
<p>Let me repeat that: a Service will need to have components that are deployed to more than one system.</p>
<p>Here&#8217;s why:</p>
<p>Let&#8217;s say you have a piece of data like the price of a product. Not only will that data be visible in one system, often it will need to be shown (as well as updated) in other systems too. In order to have appropriate encapsulation of that concept, the owning service will need to be the one that owns the components that operate on that concept in the other systems.</p>
<p>This means that if we need to show the product price on an invoice in a back-end system, then that invoice would have to be a composite UI as well, and the service which owns the price will have a component deployed there which would be responsible for showing the price on the invoice.</p>
<p>In this manner, no code outside the service boundary would know about the concept of the product price and thus could not end up coupled to it.</p>
<p>Although the original article does get into this to some degree (when talking about Decentralized Data Management), I don&#8217;t really see how a microservice/AC could end up having this level of ownership of data.</p>
<p>Still, the point made about different persistence technologies is valid at the level of services (though not ACs).</p>
<h3>How big is a service</h3>
<p>Now, if the price is not shared outside the boundary of the service, then how would order totals be calculated? </p>
<p>The answer is that the totals must (MUST) be calculated in the same service.</p>
<p>This shouldn&#8217;t be surprising as it&#8217;s just good old OO &#8211; encapsulating data with the logic that operates on it. Or, if you&#8217;d like, call it the Single Responsibility Principle: there should only be a single service impacted by a change to the definition of this data.</p>
<p>As a result, you&#8217;ll tend to see services that aren&#8217;t all that small, and probably not so many of them. In my experience, I&#8217;ve seen between 7 and 15 services the majority of the time. </p>
<h3>Cross-service collaboration</h3>
<p>Although I am glad to see the recommendation for event-based interactions between microservices, the focus on cross-process communication ignores some extremely important collaboration scenarios &#8211; the most important of which is in the client tier.</p>
<p>In a web application, it is quite common to have components written in javascript from multiple services interacting among themselves in the browser &#8211; one publishing events, others subscribing to those JS events. It is also quite common to see those JS components request some data from back-end components in the same service in response to those JS events.</p>
<p>This type of synchronous RPC communication within a service boundary is perfectly acceptable, although it stands in contrast to the recommendations of the microservices approach.</p>
<h3>Caveat on sharing data</h3>
<p>I&#8217;ve been going on and on about the importance of not sharing data, but there is one exception to that rule.</p>
<p>There is a special service that I call IT/Ops which (among other things) is responsible for integration with 3rd party systems. As a part of this integration, it encapsulates data transformation logic and, as a result, needs to be able to receive data from the other more business-centric services.</p>
<p>As you can imagine, this puts IT/Ops in the risky position of coupling itself to a lot of things and thus needs to be done carefully. As a result, I recommend that many of the most skilled technical people work within the IT/Ops team, also serving in a consultative capacity to the other service teams.</p>
<h3>In closing</h3>
<p>I am extremely thankful to Martin and James for writing the Microservices article.</p>
<p>I think that the conversations it has sparked are timely, and hopefully more people will ponder these questions of how to structure their code-bases in order to avoid them becoming monolithic.</p>
<p>And while I think that it&#8217;s great to consider aligning team boundaries with service boundaries, people need to understand that it will need to be an evolutionary process &#8211; it will take time to transition an existing code base and an existing team structure to this new model, especially since these teams will have to continue to deliver features and bug fixes through the transition period.  Jumping to the new model directly may cause more harm than good.</p>
<p>This is actually one of the most salient topics of my course (next one in <a href="http://www.eventbee.com/v/nservicebus/event?eid=103218412">NYC in May</a>) &#8211; how do you get there from here. In my experience there are 4 phases that companies go through, often taking at least a couple of years, with larger environments taking potentially longer.</p>
<p>In any case, let&#8217;s keep the conversation going.</p>
<p>What are your thoughts? Have you been applying the Microservices approach, or possibly the one I talk about (I really should give it a name). What&#8217;s been working well for you? What hasn&#8217;t?</p>
<p>Leave me a comment or write your own blog post.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2014/03/31/on-that-microservices-thing/feed/</wfw:commentRss>
			<slash:comments>23</slash:comments>
		
		
			</item>
		<item>
		<title>Announcing NSBcon</title>
		<link>https://udidahan.com/2014/03/13/announcing-nsbcon/</link>
					<comments>https://udidahan.com/2014/03/13/announcing-nsbcon/#comments</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Thu, 13 Mar 2014 12:49:46 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[NSBcon]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=2156</guid>

					<description><![CDATA[I am most thrilled to announce the first NSBcon! &#60;Applause/&#62; It&#8217;s been a long time since my first blog post on NServiceBus (about 7 years ago) and the community has come a long way since then. In any case, this won&#8217;t be a &#8220;looking back&#8221; post but rather one looking forwards. In addition to myself [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="https://skillsmatter.com/conferences/6198-nsbcon"><img loading="lazy" src="/wp-content/uploads/nsbcon14-300-px-x-300-px1.png" alt="NSBcon" title="NSBcon" width="300" height="300" style="float:right; margin-left:10px; margin-bottom:10px; border:none;" /></a>I am most thrilled to announce the first NSBcon!</p>
<p>&lt;Applause/&gt;</p>
<p>It&#8217;s been a long time since my first blog post on NServiceBus (about 7 years ago) and the community has come a long way since then.</p>
<p>In any case, this won&#8217;t be a &#8220;looking back&#8221; post but rather one looking forwards.</p>
<p>In addition to myself and the rest of the crew, we&#8217;ve got some great speakers coming out including the inimitable <a href="http://goodenoughsoftware.net/">Greg Young</a> and the formidable <a href="http://www.ayende.com">Ayende Rahien</a> (aka Oren Eini).</p>
<p><a href="https://skillsmatter.com/conferences/6198-nsbcon">Register here</a>.</p>
<p>For those of you who can&#8217;t make it to London for June 26-27, we&#8217;ll be running another NSBcon in The Big Apple (New York City) on September 29-30. <a href="https://skillsmatter.com/conferences/6223-nsbcon-nyc-2014">Register here</a></p>
<p>If you&#8217;d really like to come but have to pay out of pocket (either because you&#8217;re a contractor or your employer just won&#8217;t pay), send an email to <a href="mailto:nsbcon@particular.net">nsbcon@particular.net</a> and we&#8217;ll get you a nice discount, but please hurry as we don&#8217;t have many of these tickets left.</p>
<p><a href="https://skillsmatter.com/conferences/6198-nsbcon">Hope to see you there!</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2014/03/13/announcing-nsbcon/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>NServiceBus course &#8211; Feb 2014 in London</title>
		<link>https://udidahan.com/2014/01/20/nservicebus-course-feb-2014-in-london/</link>
					<comments>https://udidahan.com/2014/01/20/nservicebus-course-feb-2014-in-london/#comments</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Mon, 20 Jan 2014 12:00:38 +0000</pubDate>
				<category><![CDATA[Courses]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[Training]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=2129</guid>

					<description><![CDATA[I almost forget to mention that Jimmy Bogard will be coming back to London to teach the 4-day Enterprise Development with NServiceBus course on February 10th. Register here &#160;]]></description>
										<content:encoded><![CDATA[<p>I almost forget to mention that Jimmy Bogard will be coming back to London to teach the 4-day Enterprise Development with NServiceBus course on February 10th.</p>
<p><a href="http://skillsmatter.com/course/open-source-dot-net/udi-dahan-nservicebus/ud-886">Register here</a></p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2014/01/20/nservicebus-course-feb-2014-in-london/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Training 2014</title>
		<link>https://udidahan.com/2014/01/19/training-2014/</link>
					<comments>https://udidahan.com/2014/01/19/training-2014/#respond</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Sun, 19 Jan 2014 10:20:11 +0000</pubDate>
				<category><![CDATA[Courses]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[Training]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=2127</guid>

					<description><![CDATA[Just a short post to let you know about my plans for training for the first part of this year. I&#8217;ll be teaching the 5-day Advanced Distributed Systems Design course on the week of March 24-28 in London. Registration is currently open here. I&#8217;ve also decided to come back to New York City and teach [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Just a short post to let you know about my plans for training for the first part of this year.</p>
<p>I&#8217;ll be teaching the 5-day Advanced Distributed Systems Design course on the week of March 24-28 in London. Registration is currently open <a href="http://skillsmatter.com/course/design-architecture/advanced-distributed-systems-design-with-soa/ud-886">here</a>.</p>
<p>I&#8217;ve also decided to come back to New York City and teach the course there on the week of May 12-16. Registration isn&#8217;t open just yet but if you&#8217;d like to reserve a spot, send me an email to <a href="mailto:training@udidahan.com">training@udidahan.com</a>.</p>
<p>You might have also heard some whispering of an NServiceBus conference &#8211; that too will be coming this year.</p>
<p>Stay tuned.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2014/01/19/training-2014/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>NServiceBus Partial Update for 2013</title>
		<link>https://udidahan.com/2014/01/01/nservicebus-partial-update-for-2013/</link>
					<comments>https://udidahan.com/2014/01/01/nservicebus-partial-update-for-2013/#respond</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Wed, 01 Jan 2014 07:53:23 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=2099</guid>

					<description><![CDATA[What with the end of the calendar year, it feels like I should be writing some kind of yearly summary of what&#8217;s been going on with NServiceBus. While we&#8217;ve been making some pretty amazing progress, it still a bit premature for big announcements. In any case, here&#8217;s a partial list of goings-on: Monitoring &#8211; sneak [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" src="/wp-content/uploads/2013_newyear1.jpg" alt="2013_newyear" title="2013_newyear" width="250" height="129" style="float:right; margin-left:10px; margin-bottom:10px;" />What with the end of the calendar year, it feels like I should be writing some kind of yearly summary of what&#8217;s been going on with NServiceBus.</p>
<p>While we&#8217;ve been making some pretty amazing progress, it still a bit premature for big announcements.</p>
<p>In any case, here&#8217;s a partial list of goings-on:</p>
<h3>Monitoring &#8211; sneak peek</h3>
<p>One of the most requested additions to NServiceBus was strong production monitoring capabilities. </p>
<p>Some of the things we have coming include:</p>
<p>1. Endpoints periodically send heartbeats to a central location, and if they stop coming, the administrator gets notified.<br />
2. If messages can&#8217;t be processed for some reason and are sent to the error queue, the administrator gets a nice visual notification with the ability to send the message to be reprocessed.<br />
3. Developers can also plug in their own custom code to periodically report on various things, for example the existence of a folder, accessibility of a URL, etc.</p>
<p>Check out this short video to see how it all works:</p>
<p><iframe loading="lazy" allowfullscreen="true" allowtransparency="true" class="wistia_embed" frameborder="0" height="388" mozallowfullscreen="true" msallowfullscreen="true" name="wistia_embed" oallowfullscreen="true" scrolling="no" src="//fast.wistia.net/embed/iframe/f0y2bmwi2z" webkitallowfullscreen="true" width="640"></iframe></p>
<p>And yes &#8211; it will work across all our supported transports (MSMQ, RabbitMQ, ActiveMQ, SQL Server) as well as in the cloud (on Azure).</p>
<h3>Partners</h3>
<p>This was also a big year for the larger ecosystem.</p>
<p>In addition to our long-time partner <a href="http://www.headspring.com/">Headspring</a>, home of the legendary Jimmy Bogard, many more companies are now <b>Official Partners</b>. </p>
<p>I don&#8217;t want to play favorites here so this list is not in any particular order (except alphabetical). There are also a number of independent consultants that do amazing work but I&#8217;m not including them here for brevity so you might see some prominent countries not listed.</p>
<p>In the US, we have:</p>
<ul>
<li><a href="http://www.architectinginnovation.com/">Architecting Innovation</a> which covers all of the US.</li>
<li><a href="http://www.askcts.com/">CTS</a> &#8211; focusing on the South East.</li>
<li><a href="http://www.headspring.com/">Headspring</a> &#8211; Nation-wide but with a Texas flavor.</li>
<li><a href="http://www.ilmservice.com/">ILM</a> &#8211; focusing on the Mid-West.</li>
</ul>
<p>ILM also happens to be the home of David Boike &#8211; one of our community champions and author of the first <a href="http://www.amazon.com/dp/1782166343/">NServiceBus book</a>.</p>
<p>In Europe, we have:</p>
<ul>
<li><a href="http://www.bbv.ch/">BBV</a> &#8211; focusing on Switzerland, Germany, and Austria</li>
<li><a href="http://www.infosupport.com/">InfoSupport</a> &#8211; focusing on the Netherlands</li>
<li><a href="http://www.webstep.no/">WebStep</a> &#8211; focusing on Scandinavia</li>
</ul>
<p>BBV were the ones who did the heavy lifting for getting our support for ActiveMQ off the ground. </p>
<p>And not to forget the folks down under, there&#8217;s <a href="http://drivenlogic.com.au/">Driven Logic</a> in the Sydney area.</p>
<p>Keep an eye out as there&#8217;ll be some interesting things coming from our partners this coming year.</p>
<h3>In Closing</h3>
<p>I&#8217;ll close with some thank-you&#8217;s:</p>
<p>Thank you to the hundreds of new paying customers, as well as to the customers who&#8217;ve stuck by us over the years who make it possible for us to make enterprise development on .net that much more enjoyable.</p>
<p>Thank you to all the employees at Particular Software &#8211; now twice as many as there were last year, and probably going to double again in 2014. This team, I&#8217;ve got to tell you, is absolutely world-class. </p>
<p>Thank you, my dear reader, for coming back and reading my rambling thoughts time after time. I can&#8217;t believe I&#8217;ve been doing this <a href="http://www.udidahan.com/2013/12/31/omg-10-years-of-blogging/">10 years</a> now.</p>
<p>And, to my wife and kids, well, they don&#8217;t read my blog, but on the off chance they might one day, I&#8217;d better thank them as well.</p>
<p>I wish you all a wonderful 2014.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2014/01/01/nservicebus-partial-update-for-2013/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>NServiceBus Training &#8211; 2013</title>
		<link>https://udidahan.com/2013/11/06/nservicebus-training-2013/</link>
					<comments>https://udidahan.com/2013/11/06/nservicebus-training-2013/#comments</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Wed, 06 Nov 2013 14:46:48 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Courses]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=2065</guid>

					<description><![CDATA[Although I&#8217;ve been scaling back the training I do myself in order to focus on driving the next generation of our service platform, our good friends and partners at Headspring and ILM have stepped up to bring public NServiceBus courses to a location near you. For the complete list, see http://particular.net/courses-and-events. Jimmy Bogard will be [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Although I&#8217;ve been scaling back the training I do myself in order to focus on driving the next generation of our service platform, our good friends and partners at Headspring and ILM have stepped up to bring public NServiceBus courses to a location near you.</p>
<p>For the complete list, see <a href="http://particular.net/courses-and-events">http://particular.net/courses-and-events</a>.</p>
<p><b>Jimmy Bogard</b> will be coming back to London next week to teach the Enterprise Development with NServiceBus course &#8211; Nov 11-14. <a href="http://skillsmatter.com/course/open-source-dot-net/udi-dahan-nservicebus-workshop/ud-886">Register here</a>.</p>
<p><b>David Boike</b>, author of the first NServiceBus book, will be teaching that same course in Minneapolis USA next month &#8211; Dec 9-12. <a href="http://training.ilmservice.com/">Register here</a>.</p>
<p>*</p>
<p>If you&#8217;re not up for the full, intensive, 4-day deep-dive &#8211; there&#8217;s still something for you:</p>
<p><b>Mauro Servienti</b> will be speaking at the Italian Developer Conference in Milan on Nov 27 about the use of NServiceBus in Azure. <a href="http://www.developerconference.it/events/2013/session_details.aspx?idsession=AZ303">Check it out</a>.</p>
<p>And, even though it&#8217;s not technically in 2013:</p>
<p><b>Jimmy Bogard</b> will be delivering a 1-day NServiceBus crash-course at the CodeMash in Sandusky Ohio on Jan 7. Although it&#8217;s only been a week since registration has opened, CodeMash is sold out but if you&#8217;re already registered, make sure to go and see Jimmy. He&#8217;s a great presenter.</p>
<p>*</p>
<p>And, just so that you can get in early before this sells out too, I&#8217;ll be offering my 5-day SOA course again next year &#8211; first in London and then in New York City. The date for NYC isn&#8217;t set yet, but London is good to go: March 24-28, 2014.</p>
<p><a href="http://skillsmatter.com/course/design-architecture/advanced-distributed-systems-design-with-soa/ud-886">Register here</a>.</p>
<p>There&#8217;s also a 10% discount if you book before Jan 23.</p>
<p>Hope to see you there!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2013/11/06/nservicebus-training-2013/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Kaspersky Protection Center built on NServiceBus</title>
		<link>https://udidahan.com/2013/10/01/kaspersky-protection-center-built-on-nservicebus/</link>
					<comments>https://udidahan.com/2013/10/01/kaspersky-protection-center-built-on-nservicebus/#comments</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Tue, 01 Oct 2013 06:24:44 +0000</pubDate>
				<category><![CDATA[NServiceBus]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=2056</guid>

					<description><![CDATA[Today I&#8217;m happy to announce that Kaspersky Lab, one of the world&#8217;s most trusted security companies, has put its trust in NServiceBus &#8211; going live with their new Kaspersky Protection Center, built with NServiceBus. Boris Tveritnev, the architect of the Kaspersky Protection Center, had this to say: &#8220;NServiceBus is the backbone of the messaging infrastructure [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.kaspersky.com/#!"><img loading="lazy" src="/wp-content/uploads/logo1.gif" alt="Kaspersky Lab" title="Kaspersky Lab" width="183" height="50" style="float:right; margin-left:10px; margin-bottom:10px; border:none;" /></a>Today I&#8217;m happy to announce that Kaspersky Lab, one of the world&#8217;s most trusted security companies, has put its trust in NServiceBus &#8211; going live with their new Kaspersky Protection Center, built with NServiceBus.</p>
<p>Boris Tveritnev, the architect of the Kaspersky Protection Center, had this to say:</p>
<blockquote><p>
&#8220;NServiceBus is the backbone of the messaging infrastructure of Kaspersky Protection Center – our innovative platform providing security-related services for millions of connected devices around the globe. Millions of events produced by devices and services are handled by the NServiceBus-powered codebase every day. We chose NServiceBus for its clear architecture and easy yet powerful programming model, which provides reliable solutions for our distributed systems.&#8221;
</p></blockquote>
<p>Dmitry Aleshin, the Director of Product Management added:</p>
<blockquote><p>
&#8220;Kaspersky Protection Center is our vision of how online security in a modern, multi-device era should be offered. This is a single interface for managing licenses and security features on all the devices which a person uses on a daily basis, along with extended convenience and protection offered by the Kaspersky Password Manager service. In future, we are going to increase the number of applications and services to make the virtual lives of people who use Kaspersky Lab products even more comfortable and secure.&#8221;
</p></blockquote>
<p>This is the latest in a series of milestones for Particular Software and NServiceBus in Particular as we see more of the world&#8217;s largest and most trusted brands introduce our Service Platform into their business critical systems. </p>
<p>For more information on the Particular Service Platform, <a href="http://particular.net/service-platform">click here</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2013/10/01/kaspersky-protection-center-built-on-nservicebus/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>The first book on NServiceBus is now out!</title>
		<link>https://udidahan.com/2013/09/19/the-first-book-on-nservicebus-is-now-out/</link>
					<comments>https://udidahan.com/2013/09/19/the-first-book-on-nservicebus-is-now-out/#respond</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Thu, 19 Sep 2013 18:20:29 +0000</pubDate>
				<category><![CDATA[NServiceBus]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=2049</guid>

					<description><![CDATA[David Boike, one of our community champions, has done what I had not been able to do: write a book on NServiceBus. It&#8217;s pretty thorough, going from the absolute basics of one-way messaging and publish/subscribe, through how to handle encryption, fault tolerance, long-running processes, and into aspects of administering a running system like logging, virtualization, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="//www.make-awesome.com/wp-content/uploads/2013/09/learning-nservicebus-cover-small.png" style="float:right; margin-left:10px; margin-bottom:10px;" alt="Learning NServiceBus" title="Learning NServiceBus" />David Boike, one of our community champions, has done what I had not been able to do: write a book on NServiceBus.</p>
<p>It&#8217;s pretty thorough, going from the absolute basics of one-way messaging and publish/subscribe, through how to handle encryption, fault tolerance, long-running processes, and into aspects of administering a running system like logging, virtualization, monitoring, and scaling.</p>
<p>You can buy the book from the publisher&#8217;s website <a href="http://www.packtpub.com/build-distributed-software-systems-using-dot-net-enterprise-service-bus/book">here</a> and of course on <a href="http://www.amazon.com/dp/1782166343/">Amazon</a> as well.</p>
<p>If you&#8217;d like to win a free copy of the book, go to David Boike&#8217;s blog post <a href="http://www.make-awesome.com/2013/09/contest-win-a-free-copy-of-my-book/">here</a>.</p>
<p>This is something of a milestone for NServiceBus and has, indeed, been a long-time coming.</p>
<p>Please pop over to David&#8217;s blog and join me in thanking him for his great work.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2013/09/19/the-first-book-on-nservicebus-is-now-out/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>On Mookid joining NServiceBus, and what that means for Rebus</title>
		<link>https://udidahan.com/2013/09/11/on-mookid-joining-nservicebus-and-what-that-means-for-rebus/</link>
					<comments>https://udidahan.com/2013/09/11/on-mookid-joining-nservicebus-and-what-that-means-for-rebus/#respond</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Wed, 11 Sep 2013 18:30:04 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[The Team]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=2036</guid>

					<description><![CDATA[While I don&#8217;t generally blog about it when we hire people here at Particular Software (as we&#8217;ve been roughly doubling our size each year), this situation is slightly different. Mogens Heller Grabe, creator of Rebus, will be joining us. The advantages to the NServiceBus community are pretty clear &#8211; having more people in the core [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" src="/wp-content/uploads/mogens1.jpg" alt="mogens" title="mogens" width="136" height="150" style="float:right; margin-left:10px; margin-bottom:10px;" />While I don&#8217;t generally blog about it when we hire people here at <br /><a href="http://particular.net">Particular Software</a> (as we&#8217;ve been roughly doubling our size each year), this situation is slightly different. </p>
<p><a href="http://mookid.dk/oncode/">Mogens Heller Grabe</a>, creator of Rebus, will be joining us. </p>
<p>The advantages to the NServiceBus community are pretty clear &#8211; having more people in the core team with experience building service bus technology will help us get more done, faster.</p>
<p>What I want to talk about is the impact to the larger open-source ecosystem.</p>
<h3>On Open Source</h3>
<p>Although NServiceBus moved away from the permissive Apache license some time ago, the source is still and will continue to be available under the OSI approved <a href="http://opensource.org/licenses/RPL-1.5">Reciprocal Public License</a>. </p>
<p>Rebus has always been licensed under the permissive Apache license and, as far as I know, will continue that way.</p>
<p>In order to make sure that the Rebus code base is in no way tainted and ensure that its users remain protected, Mogens will not be able to continue contributing code to Rebus. To hear Mogens comments on this change, see his <a href="http://mookid.dk/oncode/archives/3456">blog post</a> on the topic.</p>
<h3>So you&#8217;re killing Rebus?!</h3>
<p>That question always come up whenever some company hires someone whose working on an open-source project, doesn&#8217;t it? I can only speak for NServiceBus here, but our focus is on getting additional talent &#8211; growing the team, so that we can achieve all the great things we&#8217;ve got planned, not on killing anything.</p>
<p>I don&#8217;t think we could &#8220;kill&#8221; Rebus even if we wanted to. There is a thriving community of users and committers around Rebus who have the choice and ability to keep it going (or not).</p>
<p>And there isn&#8217;t really anything that we could gain commercially from the death of Rebus &#8211; its users probably wouldn&#8217;t switch to NServiceBus anyway. If anything, they&#8217;d most likely go with one of the other free, open source service buses out there &#8211; most notably, Mass Transit.</p>
<h3>So, it&#8217;s just business as usual then</h3>
<p>Pretty much.</p>
<p>We&#8217;re going to continue hiring more people to help realize our vision of the <a href="http://particular.net/service-platform">Particular Service Platform</a>, as well as partnering with companies that help complement this vision (like we&#8217;ve done in the past with <a href="http://ravendb.net/">RavenDB</a>).</p>
<p>And if you&#8217;re either an independent consultant or working at a consulting company and have experience delivering NServiceBus projects, we have an interesting proposal for you, so please <a href="mailto:partnering.with@particular.net">contact us</a>.</p>
<p>Exciting things are coming.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2013/09/11/on-mookid-joining-nservicebus-and-what-that-means-for-rebus/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>NServiceBus 4.0 Released!</title>
		<link>https://udidahan.com/2013/07/11/nservicebus-4-0-released/</link>
					<comments>https://udidahan.com/2013/07/11/nservicebus-4-0-released/#comments</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Thu, 11 Jul 2013 10:45:01 +0000</pubDate>
				<category><![CDATA[NServiceBus]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=1996</guid>

					<description><![CDATA[It&#8217;s here! NServiceBus version 4.0 is now out. Hard to believe it&#8217;s been more than 7 years since I started on this journey. I know I always say this, but this is our biggest release ever. It&#8217;s been over a year since we released version 3.0 and in that time, the adoption of NServiceBus has [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" src="/wp-content/uploads/champaign.png" alt="champaign" title="champaign" width="180" height="270" style="float:right; margin-left:10px; margin-bottom:10px;" />It&#8217;s here!</p>
<p>NServiceBus version 4.0 is now out.</p>
<p>Hard to believe it&#8217;s been more than 7 years since I started on this journey.</p>
<p>I know I always say this, but this is our biggest release ever. It&#8217;s been over a year since we released version 3.0 and in that time, the adoption of NServiceBus has totally exploded. I know I always talk about the big brand names but there have been hundreds of small to medium companies that have been seeing real success on this platform.</p>
<p>OK &#8211; one big name. I feel like I have to. If you&#8217;ve been to McDonald&#8217;s and purchased a happy meal for your kids &#8211; that&#8217;s going through NServiceBus. Yeah, at any McDonald&#8217;s around the world &#8211; and not just happy meals.</p>
<h3>What&#8217;s in the box</h3>
<p>While NServiceBus has historically used MSMQ as its primary queuing infrastructure, we now support RabbitMQ and ActiveMQ out of the box so you have full AMQP compliance at the wire level, and we&#8217;re soon going to be releasing a fully supported IBM MQ transport.</p>
<p>You can see the complete release notes for version 4 of NServiceBus <a href="https://github.com/Particular/NServiceBus/releases/tag/4.0.0">here</a>.</p>
<p>For those organizations who&#8217;ve been ignoring NServiceBus until now because they prefer having everything in a central database, we now support using database tables as queues. </p>
<p>While I&#8217;ve always been big on queuing infrastructure, I understand that it takes time for an organization to change and I hope that this will provide a smooth transition path.</p>
<h3>Try it online now</h3>
<p>If you&#8217;re in a locked-down corporate environment that won&#8217;t let you install anything on your box, but you&#8217;d still like to try NServiceBus out, we&#8217;ve got the solution for you.</p>
<p>Try our new hands-on labs &#8211; you&#8217;ll get remote access to a machine in the cloud with NServiceBus pre-installed on it ready to go.</p>
<p>We&#8217;ve even got a scale-out lab where you&#8217;ll see just how easy it is to build a 4 machine NServiceBus solution.</p>
<p><a href="http://particular.net/HandsOnLabs">Try the labs</a>.</p>
<h3>Modeling</h3>
<p>I&#8217;ve talked before about some modeling tools we&#8217;ve been working on for NServiceBus and I&#8217;m happy to say that they&#8217;re now ready for public beta. Instead of the name NServiceBus Studio (which overlapped far too much with Visual Studio), we&#8217;re now calling this <a href="http://particular.net/ServiceMatrix">ServiceMatrix</a>.</p>
<p><img src="//particular.net/Media/Default/Studio/ServiceMatrixScreen.png" alt="ServiceMatrix" title="ServiceMatrix" /></p>
<p>ServiceMatrix makes building message-driven service-oriented solutions an absolute joy allowing you to operate at much higher levels of abstraction. Find out more <a href="http://particular.net/ServiceMatrix">here</a>.</p>
<h3>Debugging</h3>
<p>While the looser-coupling of message-driven systems makes them more scalable and maintainable, it does make debugging harder since you can&#8217;t just step-through one function to another when everything is invoked asynchronously.</p>
<p>For that reason, we&#8217;ve been working on visualization and management tooling to make things easier. By leveraging the built-in auditing of NServiceBus, we can show you the message causation chain &#8211; which command caused which event, which in turn caused what other messages to flow. We also hook into the error queue to show you when messages fail (in orange below) and the full stack trace of the exception.</p>
<p>Of course, you can always see the full body and headers of each message.</p>
<p><img src="//particular.net/Media/Default/Profiler/InsightScreen.png" alt="ServiceInsight" title="ServiceInsight" /></p>
<p>This tool, called <a href="http://particular.net/ServiceInsight">ServiceInsight</a> is now in its second beta and the feedback has been overwhelming &#8211; &#8220;oh my God, how could you have waited this long to release this?! Even our testers and admins are using it.&#8221;.</p>
<h2>In Particular</h2>
<p><a href="http://particular.net"><img src="//particular.net/Themes/ParticularSoftware/Styles/images/logo.png" title="Particular Software" alt="Particular Software" style="float:right; margin-left:10px; margin-bottom:10px; margin-right:10px; border:none;" /></a>You might have noticed that all of these links are going to the <a href="http://particular.net">Particular.net</a> domain, and that the existing NServiceBus.com now redirects there as well.</p>
<p>After talking things over internally, the team agreed that we wanted to be much more than &#8220;just&#8221; a service bus. The new products I mentioned above are the first step in that direction, but there is more to come.</p>
<p>We wanted a name that wouldn&#8217;t pigeon-hole us but, I&#8217;ve got to tell you, it&#8217;s extremely hard to find a name for a software company (and a corresponding domain) that isn&#8217;t already taken.</p>
<p>When we hit on the name Particular Software and saw that ParticularSoftware.com was open, we were quite thrilled. You see, we&#8217;re very particular about the software we use, and we want to write software for people who are just as discerning as us. Getting Particular.net was nice too.</p>
<h3>In closing</h3>
<p>I want to take this opportunity to thank our community for believing in us all this time, and an especially big thank you to our <a href="http://particular.net/champions">community champions</a> who have been gently shepherding thousands of new users in their first NServiceBus steps.</p>
<p>To our partners that have been building solutions for their customers on NServiceBus &#8211; you have our deepest appreciation. We&#8217;ve also got some new things coming just for you that you&#8217;ll really like. </p>
<blockquote><p>By the way, if you&#8217;re an independent consultant or working at a consulting company and would like partner with us, please <a href="http://particular.net/partners">reach out to us</a>.</p></blockquote>
<p>And, although we&#8217;re constantly growing the team &#8211; it seems like there&#8217;s always so much more to be done. When I started down this path over 7 years ago, I never imagined that this could go on this long. Today, I&#8217;m pretty sure that there&#8217;s at least another 7 years more to go. </p>
<p>We&#8217;re dedicated to making this the best service platform out there.</p>
<p><a href="http://particular.net/service-platform">Check it out</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2013/07/11/nservicebus-4-0-released/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
		<item>
		<title>Life without distributed transactions</title>
		<link>https://udidahan.com/2012/12/31/life-without-distributed-transactions/</link>
					<comments>https://udidahan.com/2012/12/31/life-without-distributed-transactions/#comments</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Mon, 31 Dec 2012 10:34:44 +0000</pubDate>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Consistency]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[DDD]]></category>
		<category><![CDATA[EDA]]></category>
		<category><![CDATA[ESB]]></category>
		<category><![CDATA[Messaging]]></category>
		<category><![CDATA[MSMQ]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[Pub/Sub]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=1913</guid>

					<description><![CDATA[Occasionally I get questions about the issue of transactional messaging &#8211; why is it so important, why does NServiceBus default to this behavior, and if we didn&#8217;t use it, what bad things could happen. I&#8217;m talking specifically about the ability to enlist a queue in a distributed transaction here. I think the reason for this [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" src="/wp-content/uploads/article-new_ehow_images_a06_co_v2_preferred-transaction-bankruptcy_-800x8001.jpg" alt="transactions" title="transactions" width="250" height="167" style="float:right; margin-left:10px; margin-bottom:10px; " />Occasionally I get questions about the issue of transactional messaging &#8211; why is it so important, why does NServiceBus default to this behavior, and if we didn&#8217;t use it, what bad things could happen. I&#8217;m talking specifically about the ability to enlist a queue in a distributed transaction here.</p>
<p>I think the reason for this interest is the rise in popularity of cloud platforms and queuing systems like RabbitMQ (which don&#8217;t support distributed transactions) and the difficulty of setting up distributed transactions even in on-premise.</p>
<p>Of course, there&#8217;s also the regular scalability hand-wringing going on even though most people wouldn&#8217;t bump up against those limits anyway.</p>
<p>In this post, I&#8217;ll talk about the nature of the problem, explain the pitfalls in some of the common solutions, but I&#8217;ll put off the description of how to provide consistency without distributed transactions to a future post as this one is already going to be quite long.</p>
<p>I&#8217;ll start with the basic fault-tolerance issues and then explain how things spiral out from there.</p>
<h3>Starting with the basics</h3>
<p>OK, so we have a queuing system in place that dispatches messages to our business logic which does some transactional work against a database.</p>
<p>Let&#8217;s say that we completed the transaction against our database but before we could acknowledge to the queue that the message was processed successfully, our machine crashed. What our machine comes up again, the queue will once again dispatch us the same message. Unless we have some logic to detect that we&#8217;ve already processed it (called &#8220;idempotence&#8221; in the REST community), we will end up processing it again.</p>
<p>In short, the problem is duplicates.</p>
<h3>Attempted solutions to the duplicate problem</h3>
<p>Most queuing systems don&#8217;t do anything about duplicates, actually giving it a proper architectural name: At-least-once message delivery, as opposed to the Once-and-only-once model that a queue that supports distributed transaction provides.</p>
<p>The solution often suggested is to have your logic check to see if it has already processed a message with that ID before &#8211; in essence storing the ID of each message processed for some period of time. Of course, there is some performance overhead with that, but it might be a small price to pay compared to dealing with it in the logic of every use case.</p>
<p>On the other hand, you&#8217;ll often have some messages (like Update commands) for which it looks like you can safely process them multiple times, in which case you might want not to pay the performance overhead there. The thing is, if your logic publishes an event in addition to the regular database work (something that is quite common) and you process the same message twice, you will probably end up publishing the event twice as well. </p>
<p>These duplicates are different in that here we have two distinct messages with different IDs that contain the same business data. This means that recipients of these messages will not be able to filter them out at an infrastructure level anymore.</p>
<h3>NOTE: Deduplication abilities in queues</h3>
<p>Although the Azure Service Bus doesn&#8217;t support distributed transactions meaning you still have the issue mentioned above, Microsoft added the ability to detect and filter out duplicates based on message contents rather than just the ID. This helps quite a bit but it&#8217;s important to understand that that doesn&#8217;t cover everything for you. Let me explain:</p>
<h3>More complex logic</h3>
<p>In some of your most important use cases, you may have both entity updates as well as entity creation happening together in your domain model. You might be using some kind of event model (like I wrote about <a href="http://www.udidahan.com/2009/06/14/domain-events-salvation/">here</a>) to percolate out the information that an entity was created in order to keep your service layer decoupled from the internals of the domain model.</p>
<p>In the callback code from these domain events, you will likely publish out an event on the queuing system containing information like the ID of the entities created as well as other business data. And there&#8217;s the rub.</p>
<p>You see, without distributed transactions, you can run into some problematic scenarios:</p>
<p>For example, if you don&#8217;t make sure that your event publishing calls to the queuing system include the same transaction object as the one you used when retrieving the original message from the queue, then those calls could &#8220;escape&#8221; before you know if the database transaction is going to succeed. Deadlocks always happen at the lousiest times. Anyway, if you&#8217;re using database generated IDs for your entities, then those IDs will get published out in events despite the database rolling back and your subscribers will now be making decisions on <b><i>wrong</i></b> data &#8211; not just eventually consistent data.</p>
<p>In this case, processing the message again doesn&#8217;t really solve the problem &#8211; it just means that you&#8217;ll be publishing events with different IDs, so an infrastructure like Azure Service Bus couldn&#8217;t really de-duplicate them.</p>
<p>On the other hand, if you do use the same transaction and combine in the infrastructural message ID based de-duplication described above (as identifying duplicate calls for complex business logic is damn hard), you&#8217;ll run into another problem. </p>
<p>Consider what would happen if your server crashes right after finishing its database work but before it completes the transaction against the queuing system. When going to retry the message, the infrastructure filtering thing would know not to call your business logic again and that message would be quietly swallowed. Unfortunately, the event publishing calls to the queuing system from the first time the message was processed were rolled back and since your business logic isn&#8217;t called again, the event publishing won&#8217;t happen again.</p>
<p>Oops.</p>
<h3>In closing</h3>
<p>I hope I&#8217;ve been able to clarify what kind of scenarios distributed transactions solve for you and some of the difficulties in solving them yourself.</p>
<p>Now, to be clear, you could solve these problems by going in-depth on each of your use cases, analyzing the consistency needs and structuring the code differently to address those needs. But give this another thought, if our consistency is dependent on calling otherwise independent APIs in exactly the right order, and that a change in this order would not cause any visible functional effects, what would happen when developers with less expertise maintain this code?</p>
<p>The folks in the event sourcing community have their solution to this which is based on writing their business logic differently. As the adoption of this pattern is still pretty limited (probably still in the Innovator section of the Technology Adoption Curve), it&#8217;ll be interesting to see how it holds up with larger teams in the mainstream.</p>
<p>Oh, and in case it wasn&#8217;t clear from before, the guys in the REST community haven&#8217;t even begun addressing this problem when it comes to server-to-server integration.</p>
<p>We&#8217;re working on a solution for this with NServiceBus that won&#8217;t require you to change how you write business logic. We&#8217;ve got one big release to do before we can roll this in, and that&#8217;s coming soon (with all sorts of cool things like support for ActiveMQ and queues in the database). The solution we&#8217;ve found is architecturally sound but you&#8217;ll have to wait for my next post to hear about it.</p>
<p>Stay tuned.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2012/12/31/life-without-distributed-transactions/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
		<item>
		<title>Service-Oriented API implementations</title>
		<link>https://udidahan.com/2012/12/10/service-oriented-api-implementations/</link>
					<comments>https://udidahan.com/2012/12/10/service-oriented-api-implementations/#comments</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Mon, 10 Dec 2012 15:29:27 +0000</pubDate>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[ESB]]></category>
		<category><![CDATA[Messaging]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Web Services]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=1896</guid>

					<description><![CDATA[It&#8217;s quite common for our systems to need to expose an API for external parties to call that isn&#8217;t exactly aligned with our service boundaries &#8211; at least, when you follow the &#8220;vertical services&#8221; model rather than the &#8220;layered services&#8221; approach. I&#8217;ve blogged many times about the problems with layering, so I won&#8217;t go into [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" src="/wp-content/uploads/gears1.jpg" alt="gears" title="gears" width="250" height="167" style="float:right; margin-left:10px; margin-bottom:10px;"/>It&#8217;s quite common for our systems to need to expose an API for external parties to call that isn&#8217;t exactly aligned with our service boundaries &#8211; at least, when you follow the &#8220;vertical services&#8221; model rather than the &#8220;layered services&#8221; approach. I&#8217;ve blogged many times about the problems with layering, so I won&#8217;t go into that now beyond to say that you really, REALLY, should avoid it.</p>
<h3>A short intro to SOA, done right</h3>
<p>In the &#8220;vertical services&#8221; approach I espouse, you often see components from multiple services deployed to any given endpoint. While these services usually don&#8217;t need to communicate with each other at all, occasionally you&#8217;ll see them leaving &#8220;breadcrumbs&#8221; behind for each other &#8211; things like UserId or OrderId in the session. What&#8217;s especially important is that these IDs are accessible even before the entity is finalized &#8211; this enables each service to collect its own data without needing any other service to know about that data.</p>
<p>In an ecommerce environment, we would see one service owning money, another the product catalog (excluding prices, those would be owned by the previous service), another service owning the customers&#8217; payment info (credit cards, etc), and yet another owning shipping addresses &#8211; all of these separate from the one that owns the shopping cart. Let&#8217;s call these Finance, Catalog, Payment, Shipping, and finally Shopping &#8211; just so that we have something to reference later.</p>
<h3>The API</h3>
<p>While we can do all sorts of cool browser composition with the UI in our own system, enabling each service to collect and display its own information, if we want to expose an API for clients to call, we wouldn&#8217;t want to force those clients to have to make a separate call to each service in order to make a purchase. Instead, we&#8217;d want something that looks like:</p>
<p>MakePurchase(Guid orderId, Dictionary<Guid, int> cart, CreditCardInfo cc, Address shippingAddress)</p>
<p>In case you were wondering, the service which owns the definition of this API is different from all of the above services &#8211; it is a service that is primarily technical in nature and is responsible for things like integration and data transformations. I call this service IT/Ops.</p>
<h3>Getting the data from the API to the services</h3>
<p>So, we don&#8217;t want any of our business-centric services to know about anybody else&#8217;s data structures, so that leaves it to IT/Ops to pass the data to them. The thing is that we still want to do that in the most loosely-coupled way possible &#8211; with messaging being a good candidate for that.</p>
<p>So, what we&#8217;ll do is have IT/Ops send a message containing the data to the other services, but with a slight twist.</p>
<p>Here&#8217;s what the code would look like with <a href="http://particular.net/nservicebus">NServiceBus</a>:</p>
<pre class="csharpcode">
Bus.SendLocal(<span class="kwrd">new</span> Order { Id = orderId, Cart = cart, 
                          CreditCard = cc, ShippingAddress = shippingAddress });</pre>
<p>
Why the SendLocal?</p>
<p>So that the components from the other services can all run together with IT/Ops in the same process giving a nice tight deployment model.</p>
<p><b>UPDATE:</b></p>
<p>If you&#8217;re using a transport like RabbitMQ that is set up as a remote broker, the overhead of going back through the broker might not be worth the improved reliability you&#8217;d get by going through messaging. In that case, you might want to consider the <a href="http://www.udidahan.com/2009/06/14/domain-events-salvation/">Domain Events</a> approach. This would give you a similar level of decoupling but then IT/Ops would need to set up an surrounding transaction, well, that is if you want all the services processing to succeed/fail as one unit. If you don&#8217;t, you&#8217;d probably be better off just sending messages from IT/Ops to endpoints that host each of the components of the other services.</p>
<p><b>End Update</b></p>
<p>Before we get to the services, let me show you the Order class &#8211; specifically, the interfaces it implements:</p>
<pre class="csharpcode">
<span class="kwrd">public</span> <span class="kwrd">class</span> Order : ShoppingOrder, PaymentsOrder, ShippingOrder
{
    <span class="kwrd">public</span> Guid OrderId { <span class="kwrd">get</span>; <span class="kwrd">set</span>; }
    <span class="kwrd">public</span> Dictionary&lt;Guid, <span class="kwrd">int</span>&gt; Cart { <span class="kwrd">get</span>; <span class="kwrd">set</span>; }
    <span class="kwrd">public</span> CreditCardInfo CreditCard { <span class="kwrd">get</span>; <span class="kwrd">set</span>; }
    <span class="kwrd">public</span> Address ShippingAddress { <span class="kwrd">get</span>; <span class="kwrd">set</span>; }
}

<span class="kwrd">public</span> <span class="kwrd">interface</span> ShoppingOrder
{
    Guid OrderId { <span class="kwrd">get</span>; <span class="kwrd">set</span>; }
    Dictionary&lt;Guid, <span class="kwrd">int</span>&gt; Cart { <span class="kwrd">get</span>; <span class="kwrd">set</span>; }
}

<span class="kwrd">public</span> <span class="kwrd">interface</span> PaymentsOrder
{
    Guid OrderId { <span class="kwrd">get</span>; <span class="kwrd">set</span>; }
    CreditCardInfo CreditCard { <span class="kwrd">get</span>; <span class="kwrd">set</span>; }
}

<span class="kwrd">public</span> <span class="kwrd">interface</span> ShippingOrder
{
    Guid OrderId { <span class="kwrd">get</span>; <span class="kwrd">set</span>; }
    Address ShippingAddress { <span class="kwrd">get</span>; <span class="kwrd">set</span>; }
}</pre>
<p>Each of the above interfaces represents the data that each service cares about. Therefore, each service will provide an assembly that handles that message/data and persists it to its database, like this:</p>
<pre class="csharpcode">

<span class="kwrd">public</span> <span class="kwrd">class</span> ShoppingAPIHandler : IHandleMessages&lt;ShoppingOrder&gt;
{
    <span class="kwrd">public</span> <span class="kwrd">void</span> Handle(ShoppingOrder message)
    {
        <span class="rem">//persist to shopping service db</span>
    }
}

<span class="kwrd">public</span> <span class="kwrd">class</span> PaymentsAPIHandler : IHandleMessages&lt;PaymentsOrder&gt;
{
    <span class="kwrd">public</span> <span class="kwrd">void</span> Handle(PaymentsOrder message)
    {
        <span class="rem">//persist to payment service db</span>
    }
}

<span class="kwrd">public</span> <span class="kwrd">class</span> ShippingAPIHandler : IHandleMessages&lt;ShippingOrder&gt;
{
    <span class="kwrd">public</span> <span class="kwrd">void</span> Handle(ShippingOrder message)
    {
        <span class="rem">//persist to shipping service db</span>
    }
}</pre>
<p>Since the Order object being sent is a polymorphic match for all of these interfaces, NServiceBus knows to invoke all of these handlers. By the way, if you care about the order of invocation, then you can control that as well (but I won&#8217;t get into that here).</p>
<p>Also, since all of these handler assemblies are deployed to the same endpoint, and the Order object is sent just once, this means that all the handlers will be invoked in a single transaction on a single thread &#8211; either all of them succeeding, or all failing. Since they&#8217;re all connected on the same Order Id, referential integrity can be preserved as well.</p>
<h3>Wrapping up</h3>
<p>When you are building a system on SOA principles, you&#8217;ll often find that you need a service like IT/Ops to handle data transformation and other broker-centric tasks. While much of SOA is based on the Bus Architectural Style &#8211; meaning primarily publish/subscribe interaction between services &#8211; that doesn&#8217;t mean that your business-centric services cannot have their components deployed in the same process.</p>
<p>I&#8217;d go so far as to say that if you aren&#8217;t deploying components from multiple services in process with each other at least some of the time then it&#8217;s quite likely that your service boundaries are probably incorrect.</p>
<p>Anyway, I hope you found this post interesting. Shout out to Slawek who gave me the idea for this post.</p>
<p>By the way, if you&#8217;d like to learn more about these kinds of patterns, the next batch of courses is open for registration &#8211; but the early bird prices are almost over, so you&#8217;d better hurry. </p>
<p>Register for &nbsp;&nbsp;<a href="http://www.eventbee.com/v/nservicebus/event?eid=918444435">Denver CO, USA</a>, &nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.professional-developer-training.net/items.aspx?catId=c45">Bad Ems, Germany</a>, &nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.eventbee.com/v/nservicebus/event?eid=948045332">Perth, Australia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2012/12/10/service-oriented-api-implementations/feed/</wfw:commentRss>
			<slash:comments>45</slash:comments>
		
		
			</item>
		<item>
		<title>NServiceBus Events in Sweden</title>
		<link>https://udidahan.com/2012/08/31/nservicebus-events-in-sweden/</link>
					<comments>https://udidahan.com/2012/08/31/nservicebus-events-in-sweden/#respond</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Fri, 31 Aug 2012 11:33:15 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[Presentations]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=1861</guid>

					<description><![CDATA[The one and only Andreas Ohlund will be touring through Sweden as a part of the .NET Best Practices Community Days organized by Edument and Informator. He&#8217;ll be hitting Göteborg on Sep 12, Stockholm on Sep 13, and Malmö on Sep 14. These full-day events will include topics like CQRS, REST, as well as async [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>The one and only Andreas Ohlund will be touring through Sweden as a part of the .NET Best Practices Community Days organized by Edument and Informator. He&#8217;ll be hitting Göteborg on Sep 12, Stockholm on Sep 13, and Malmö on Sep 14.</p>
<p>These full-day events will include topics like CQRS, REST, as well as async and functional programming.</p>
<p>Full information and registration is available <a href="http://www.edument.se/events/2012/dot-Net-Best-Practices-Community-Day-2012-Overview.html">here</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2012/08/31/nservicebus-events-in-sweden/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>NServiceBus Security Issue Fixed</title>
		<link>https://udidahan.com/2012/08/29/nservicebus-security-issue-fixed/</link>
					<comments>https://udidahan.com/2012/08/29/nservicebus-security-issue-fixed/#respond</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Wed, 29 Aug 2012 17:33:05 +0000</pubDate>
				<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=1859</guid>

					<description><![CDATA[Just wanted to follow up to say that the issue has been fixed in version 3.2.8 of NServiceBus. You can download this via our website or through NuGet. Despite our best efforts, we weren&#8217;t able to fix the issue in such a way that you&#8217;d be able to do a zero-downtime upgrade in all cases [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Just wanted to follow up to say that the issue has been fixed in version 3.2.8 of NServiceBus. You can download this via our website or through NuGet. Despite our best efforts, we weren&#8217;t able to fix the issue in such a way that you&#8217;d be able to do a zero-downtime upgrade in all cases (like in every NServiceBus upgrade so far), but we think that you wouldn&#8217;t incur more than 5 to 10 minutes of downtime on this.</p>
<p><a href="http://tech.groups.yahoo.com/group/nservicebus/message/15582">Full information here.</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2012/08/29/nservicebus-security-issue-fixed/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>NServiceBus Security Issue Found</title>
		<link>https://udidahan.com/2012/08/29/nservicebus-security-issue-found/</link>
					<comments>https://udidahan.com/2012/08/29/nservicebus-security-issue-found/#respond</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Wed, 29 Aug 2012 08:28:44 +0000</pubDate>
				<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=1857</guid>

					<description><![CDATA[For anybody that is using NServiceBus that isn&#8217;t receiving messages via our public list, I wanted to let you know that we&#8217;ve uncovered a security issue. This affects systems using WireEncryptedString on types that aren&#8217;t messages themselves but are used in messages. Here&#8217;s the full information.]]></description>
										<content:encoded><![CDATA[<p>For anybody that is using NServiceBus that isn&#8217;t receiving messages via our public list, I wanted to let you know that we&#8217;ve uncovered a security issue. This affects systems using WireEncryptedString on types that aren&#8217;t messages themselves but are used in messages.</p>
<p><a href="http://tech.groups.yahoo.com/group/nservicebus/message/15568">Here&#8217;s the full information</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2012/08/29/nservicebus-security-issue-found/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>NServiceBus Community Events in Germany</title>
		<link>https://udidahan.com/2012/08/21/nservicebus-community-events-in-germany/</link>
					<comments>https://udidahan.com/2012/08/21/nservicebus-community-events-in-germany/#respond</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Tue, 21 Aug 2012 17:35:44 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<category><![CDATA[Presentations]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=1844</guid>

					<description><![CDATA[Daniel Marbach will be doing a road trip through Germany talking about NServiceBus. Daniel&#8217;s been working with NServiceBus for some time, been active on the discussion group, contributed to the Ninject container support, and has also taken the 5-day Advanced Distributed Systems Design course. In short, if you&#8217;ve got in-depth NServiceBus questions, or even if [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.planetgeek.ch/author/danielmarbach/">Daniel Marbach</a> will be doing a road trip through Germany talking about NServiceBus. Daniel&#8217;s been working with NServiceBus for some time, been active on the discussion group, contributed to the Ninject container support, and has also taken the 5-day Advanced Distributed Systems Design course. In short, if you&#8217;ve got in-depth NServiceBus questions, or even if you&#8217;ve never heard of it and want to get an overview, Daniel&#8217;s got you covered.</p>
<p>Here&#8217;s the plan:</p>
<ul>
<li><a href="http://www.altnetberlin.de/Neues/25092012einfuehrunginnservicebusmitdanielmarbach">Sep 25 in Berlin</a></li>
<li><a href="http://dd-dotnet.de/?p=114">Sep 26 in Dresden</a></li>
<li><a href="http://dotnet-leipzig.de/veranstaltungen/dnug-event-2012-nservicebus/">Sep 27 in Leipzig</a></li>
</ul>
<p>If you&#8217;re in and around one of those areas, drop by and support the community. If you have some friends or colleagues that are working on distributed systems, drag them along as well. They&#8217;ll thank you for it later.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2012/08/21/nservicebus-community-events-in-germany/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>With thanks to and from our community</title>
		<link>https://udidahan.com/2012/07/25/with-thanks-to-and-from-our-community/</link>
					<comments>https://udidahan.com/2012/07/25/with-thanks-to-and-from-our-community/#respond</comments>
		
		<dc:creator><![CDATA[udidahan]]></dc:creator>
		<pubDate>Wed, 25 Jul 2012 17:19:53 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[NServiceBus]]></category>
		<guid isPermaLink="false">http://www.udidahan.com/?p=1814</guid>

					<description><![CDATA[A post from one of the long-time users of NServiceBus on our discussion group caught my eye a couple of weeks ago and I wanted to blog it as well. Our organically growing team here at NServiceBus Ltd have been working around the clock (literally) on both product and support, and deserve recognition for all [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>A post from one of the long-time users of NServiceBus on our discussion group caught my eye a couple of weeks ago and I wanted to blog it as well. Our organically growing team here at NServiceBus Ltd have been working around the clock (literally) on both product and support, and deserve recognition for all their efforts.</p>
<p><a href="http://tech.groups.yahoo.com/group/nservicebus/message/14537">Werner posts</a>:</p>
<blockquote><p>
As this is a support forum, the nature of the threads are almost always about problems; which is fine. But I just feel like posting something not related to problems <img src="https://s.w.org/images/core/emoji/13.1.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>After spending 2 weeks with [version] 3.x I must say that I like it a lot, and have recommended that we make a global change to the new version (we&#8217;re using 1.9 and 2.0). </p>
<p>I like the support that I see in this forum. Both from other users and especially from the people now making a living developing and supporting NServiceBus. No one mentioned, no one forgotten; thanks to all and keep up the good work!
</p></blockquote>
<p>&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>The most incredible thing about NServiceBus is our community &#8211; over 1600 of the best and brightest of the .NET developer ecosystem &#8211; over 500 of which have gone to the 5-day Advanced Distributed Systems Design course. In addition to going about building the most reliable software their industries have ever seen, many are there to lend a helping hand to those just getting started. </p>
<p>Not surprisingly, we&#8217;ve seen more people downloading NServiceBus than actually in the community, at least a 2 to 1 ratio. In my work with clients, I often see somewhere in the area 5-10 people actively developing with NServiceBus in a company, but only one of them downloading new releases and bringing them into the company. </p>
<p>I&#8217;ve heard mention of this &#8220;power law&#8221; before, but I&#8217;ve got to tell you, when I started on this journey with NServiceBus 6 years ago, in my wildest dreams I wouldn&#8217;t have ever thought that tens of thousands of developers around the world would be using my baby.</p>
<p>Thank you all.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://udidahan.com/2012/07/25/with-thanks-to-and-from-our-community/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
