<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://davidpallmann.spaces.live.com/mmm2008-05-17_13.22/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fdavidpallmann.spaces.live.com%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>David Pallmann's Blog</title><description>Distilled Ramblings about Distributed Systems</description><link>http://davidpallmann.spaces.live.com/</link><language>en-US</language><pubDate>Wed, 23 Jul 2008 11:36:44 GMT</pubDate><lastBuildDate>Wed, 23 Jul 2008 11:36:44 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><live:identity><live:id>-1630591290702063730</live:id><live:alias>davidpallmann</live:alias></live:identity><image><title>David Pallmann's Blog</title><url>http://tkfiles.storage.live.com/y1pce97X6F_85TMj-ElwN8gqhSAFMjuvYQ79dd2rfvqrev_-p5Dta8wHQ</url><link>http://davidpallmann.spaces.live.com/</link></image><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>San Diego Code Camp</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!569.entry</link><description>&lt;div&gt;This Sunday I'll be speaking at the San Diego Code Camp &lt;a href="http://www.socalcodecamp.com/sessions.aspx"&gt;http://www.socalcodecamp.com/sessions.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I have a 12:30 session on the Neuron ESB and a 3:45 session on SOA Design Patterns and how to implement them using Microsoft technologies.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+San+Diego+Code+Camp&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=davidpallmann.spaces.live.com&amp;amp;GT1=davidpallmann"&gt;</description><category>SOA/WCF/ESB Talks</category><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!569.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!569.entry</guid><pubDate>Fri, 27 Jun 2008 14:37:48 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!569/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!569.entry#comment</wfw:comment><dcterms:modified>2008-06-27T14:37:48Z</dcterms:modified></item><item><title>The Programmer's Guide to Quality Assurance</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!519.entry</link><description>&lt;div&gt;Tonight I'll speaking this evening at the L.A. .NET Users Group in Los Angeles.  &lt;a href="http://www.ladotnet.org/default.asp"&gt;http://www.ladotnet.org/default.asp&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;My topic is, &lt;strong&gt;The Programmer's Guide to Quality Assurance&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I've been amassing this content for some time (may become a book someday). If I get a good reception to it, I may start blogging it.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+The+Programmer's+Guide+to+Quality+Assurance&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=davidpallmann.spaces.live.com&amp;amp;GT1=davidpallmann"&gt;</description><category>Software Development</category><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!519.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!519.entry</guid><pubDate>Mon, 02 Jun 2008 19:18:21 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!519/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!519.entry#comment</wfw:comment><dcterms:modified>2008-06-02T19:18:21Z</dcterms:modified></item><item><title>Licensed to WSDL</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!509.entry</link><description>&lt;p&gt;A long, long time ago in a galaxy far away... way back in January... I decided to order a personalized license plate advertising my area of specialization, SOA and ESB. Little did I know this was going to be an extreme exercise in patience. I finally was able to pick up the plate shown below and puit it on my car today (in May), after a grueling 4-month wait.  
&lt;p&gt;&lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gszS9mxusJkPKek3TstTcxS2jh5axqMSDI95CNl_gEVJjmtdZevQeQBckRVTS07Fvk" target="_blank"&gt;&lt;img height=134 alt="license_plate" src="http://byfiles.storage.live.com/y1pvhHyq8t_9gszS9mxusJkPKek3TstTcxS2jh5axqMSDI95CNl_gEVJjmtdZevQeQBckRVTS07Fvk" width=268&gt;&lt;/a&gt; 
&lt;p&gt;I originally wanted to have it read NEURON, the name of our ESB, but that was already taken (by a neurologist, no doubt). Interestingly, I have discovered the acronym ESB is also a neurological term (meaning, &amp;quot;Electrical Stimulation of the Brain&amp;quot;). So if you're ever googling for Neuron ESB and get some medical hits, you'll know why. 
&lt;p&gt;Now everyone will know what drives me. :) Or more accurately, the computer people will and no one else will have a clue. 
&lt;p&gt; &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+Licensed+to+WSDL&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=davidpallmann.spaces.live.com&amp;amp;GT1=davidpallmann"&gt;</description><category>SOA</category><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!509.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!509.entry</guid><pubDate>Fri, 23 May 2008 20:23:15 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!509/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!509.entry#comment</wfw:comment><dcterms:modified>2008-05-23T23:43:46Z</dcterms:modified></item><item><title>Crazy Weather Day in California - Including Tornadoes</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!502.entry</link><description>&lt;div&gt;Many people think of Southern Califonia as having day after day of sunny weather. And often enough, that's true: I remember one year in the 90s where we literally had 200 straight days of sunshine in a row (they say the two most boring places to be a weatherman are L.A. and Seattle).&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;But not today. Today was probably the craziest day in California weather history. In the greater L.A. area, all of the following was going on, in various parts, all at the same time:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;rainstorms&lt;/div&gt;
&lt;div&gt;strong winds&lt;/div&gt;
&lt;div&gt;mudslides&lt;/div&gt;
&lt;div&gt;hail&lt;/div&gt;
&lt;div&gt;snow&lt;/div&gt;
&lt;div&gt;thunderstoms&lt;/div&gt;
&lt;div&gt;tornadoes&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;That's right, snow. In California. In late May.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;It's the torndaes (plural) that got my attention, because they were about 7 miles from my house for awhile. They were powerful enough to overturn trucks and railroad boxcars. Photos below.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9guRaVuxP-cf7YymqwEn_n1IjM79Kn_6nz0a3rbP9DKFuPMrxber7p2YSRHewLK492w" target="_blank"&gt;&lt;img height=198 alt=tornadoes src="http://byfiles.storage.live.com/y1pvhHyq8t_9guRaVuxP-cf7YymqwEn_n1IjM79Kn_6nz0a3rbP9DKFuPMrxber7p2YSRHewLK492w" width=300&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Did I say today was the craziest day in California weather history? The news just gave tomorrow's forecast: &amp;quot;more of same.&amp;quot;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+Crazy+Weather+Day+in+California+-+Including+Tornadoes&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=davidpallmann.spaces.live.com&amp;amp;GT1=davidpallmann"&gt;</description><category>California</category><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!502.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!502.entry</guid><pubDate>Fri, 23 May 2008 03:25:56 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!502/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!502.entry#comment</wfw:comment><dcterms:modified>2008-05-23T03:25:56Z</dcterms:modified></item><item><title>Neuron ESB and Endpoints</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!485.entry</link><description>&lt;div&gt;
&lt;h1 style="margin:24pt 0in 0pt"&gt;&lt;font face=Cambria color="#365f91" size=5&gt;Neuron ESB and Endpoints&lt;/font&gt;&lt;/h1&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Today I’d like to talk about how Neuron ESB connects to physical endpoints in the enterprise. &lt;/font&gt;&lt;a href="http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!477.entry"&gt;&lt;u&gt;&lt;font face=Candara color="#800080" size=3&gt;Two blog posts ago&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face=Candara size=3&gt; I talked about Neuron’s topic network architecture, and in my &lt;/font&gt;&lt;a href="http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!480.entry"&gt;&lt;u&gt;&lt;font face=Candara color="#800080" size=3&gt;last blog post&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face=Candara size=3&gt; I focused on the &lt;b style=""&gt;internal&lt;/b&gt; side of the bus, where channels implement pub-sub over a variety of Microsoft technologies ranging from WCF to BizTalk Server. But just how do those publisher and subscriber nodes relate to the physical world of services and clients? And what about non-service applications? We’ll answer that here as we talk about the &lt;b style=""&gt;external&lt;/b&gt; side of the bus.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;First off, let’s mention in passing that one way you can program against Neuron is to write .NET programs using Neuron’s API. If you do that, you are directly creating a publisher or subscriber node. We’ll discuss the API and when you might choose to use it at another time. For now, we want to focus on scenarios where you &lt;u&gt;don’t&lt;/u&gt; want to do that. Rather, you have existing endpoints in the enterprise and you want Neuron to be able to talk to them. &lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;External endpoints fall into 2 distinct categories: they’re either service-oriented or they aren’t. &lt;/font&gt;
&lt;p style="margin:0in 0in 0pt 0.5in;text-indent:-0.25in"&gt;&lt;span style="font-family:Symbol"&gt;&lt;span style=""&gt;&lt;font size=3&gt;·&lt;/font&gt;&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;b style=""&gt;Service endpoints&lt;/b&gt; are service-oriented applications which of course come in two roles: clients (which initiate messaging) and services (which respond to messages). &lt;/font&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt 0.5in;text-indent:-0.25in"&gt;&lt;span style="font-family:Symbol"&gt;&lt;span style=""&gt;&lt;font size=3&gt;·&lt;/font&gt;&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;b style=""&gt;Adapter endpoints &lt;/b&gt;are non-service oriented applications such as a legacy system or a line-of-business application. Neuron can access these kinds of endpoints using adapters. Like service endpoints, adapter endpoints can be send-oriented (resembling clients) or receive-oriented (resembling services).&lt;/font&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Neuron can communicate with both service and adapter endpoints in request-reply or 1-way messaging patterns.&lt;/font&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;Service Endpoints&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Service endpoints are first- or second-generation service programs. Neuron uses WCF to interact with service endpoints and thus inherits the ability to interconnect to services via a wide variety of transports and security models.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;A web client connects to the ESB through a &lt;b style=""&gt;client connector&lt;/b&gt; (Figure 1). The client connector is both a WCF endpoint that the client can send messages to and a bridge to a Neuron publisher node. The client connector is mapped to a Neuron publisher Id and topic: when a client sends a message, the client connector receives the message and publishes it over the bus using the assigned publisher and topic. As described in &lt;/font&gt;&lt;a href="http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!445.entry"&gt;&lt;u&gt;&lt;font face=Candara color="#800080" size=3&gt;a previous post on service pass-through&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;, the hosting port on the ESB server looks to the client just like its target service, except that the address is different. &lt;span style=""&gt; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt; &lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gsi8YGGd5Xg3EfnXnLk_iRr1GFJQh4rXEewEVaixTD00LtKki-zklExARHn5LnyYPs" target="_blank"&gt;&lt;img height=200 alt=ServiceConnectors src="http://byfiles.storage.live.com/y1pvhHyq8t_9gsi8YGGd5Xg3EfnXnLk_iRr1GFJQh4rXEewEVaixTD00LtKki-zklExARHn5LnyYPs" width=156&gt;&lt;/a&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style=""&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;i style=""&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;span style=""&gt; &lt;/span&gt;Figure 1: Client and Service Connectors&lt;/font&gt;&lt;/font&gt;&lt;/i&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;A service is connected to the ESB through a &lt;b style=""&gt;service connector&lt;/b&gt; (Figure 1) and acts reciprocally to a client connector as you would expect. The service connector is a Neuron subscriber node and a bridge to a WCF channel by which messages can be sent to the service. The service connector is mapped to a Neuron subscriber Id. When the subscriber receives a message over the bus, the service connector relays it to the service. &lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;The bus gives you the freedom to enjoy a great variety of configuration possibilities that would be impossible if you directly connected your clients and services. &lt;/font&gt;
&lt;p style="margin:0in 0in 0pt 0.5in;text-indent:-0.25in"&gt;&lt;span style="font-family:Symbol"&gt;&lt;span style=""&gt;&lt;font size=3&gt;·&lt;/font&gt;&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;b style=""&gt;Loosely-coupled routing&lt;/b&gt;. Although Figure 1 only shows 2 endpoints, there could be any number of them communicating together. Doing so through the bus is far more attractive than the alternative, where services become clients of other services; such tightly coupled routing requires every module to know the connection details of every other module. It’s much smoother to communicate by named topics.&lt;/font&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 0pt 0.5in;text-indent:-0.25in"&gt;&lt;span style="font-family:Symbol"&gt;&lt;span style=""&gt;&lt;font size=3&gt;·&lt;/font&gt;&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;b style=""&gt;Mediation&lt;/b&gt;. There’s no requirement for the client and service endpoints to use the same method of communication or the same service model. For example, you could have a client that uses username/password security interacting with a service that uses X.509 certificate security through the bus. Even programs that have a different idea about message format or version can be made to work together by having the bus perform transformations on messages as they are en route.&lt;/font&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 0pt 0.5in;text-indent:-0.25in"&gt;&lt;span style="font-family:Symbol"&gt;&lt;span style=""&gt;&lt;font size=3&gt;·&lt;/font&gt;&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;b style=""&gt;Workload Sharing&lt;/b&gt;. You can have more than one instance of the same service, and the bus can perform workload sharing among them.&lt;/font&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 0pt 0.5in;text-indent:-0.25in"&gt;&lt;span style="font-family:Symbol"&gt;&lt;span style=""&gt;&lt;font size=3&gt;·&lt;/font&gt;&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;b style=""&gt;Service Policy&lt;/b&gt;. What should happen to a message if the target service is not available to receive it? Neuron lets you specify policy to control delivery aspects such as retries and failover to alternate destinations.&lt;/font&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt 0.5in;text-indent:-0.25in"&gt;&lt;span style="font-family:Symbol"&gt;&lt;span style=""&gt;&lt;font size=3&gt;·&lt;/font&gt;&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;b style=""&gt;Services and Non-Services Working Together&lt;/b&gt;. You’re completely free to have your clients and services interact with non-services. The bus &lt;u&gt;extends the reach&lt;/u&gt; of your services and other I.T. assets. &lt;/font&gt;&lt;/font&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;Adapter Endpoints&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Enterprises often have line of business applications and/or legacy systems that are core to the business but are not service-oriented. Often these applications are “silos” in the sense that they have little or no interaction with other applications in the enterprise. Neuron provides comprehensive adapter support to bring these other systems onto the bus and make them accessible to the rest of the enterprise.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Neuron supports 2 families of adapters:&lt;/font&gt;
&lt;p style="margin:0in 0in 0pt 0.5in;text-indent:-0.25in"&gt;&lt;span style="font-family:Symbol"&gt;&lt;span style=""&gt;&lt;font size=3&gt;·&lt;/font&gt;&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;b style=""&gt;WCF LOB Adapters&lt;/b&gt; are the successor to BizTalk adapters. Adapters have already been developed for Oracle database, SAP and Siebel by Microsoft, and many other adapters are in developed by Microsoft &lt;span style=""&gt; &lt;/span&gt;and other members of the community. As more and more of these adapters are developed, they benefit not only WCF and BizTalk Server but Neuron ESB as well.&lt;b style=""&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt 0.5in;text-indent:-0.25in"&gt;&lt;span style="font-family:Symbol"&gt;&lt;span style=""&gt;&lt;font size=3&gt;·&lt;/font&gt;&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;b style=""&gt;Neuron .NET Adapters &lt;/b&gt;are Neuron’s own adapter model. They have an interface that makes them very easy to write (the design goal was that field engineers could write one on site if necessary).Neuron ships with a versatile collection of these adapters.&lt;b style=""&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;For Neuron .NET adapters, an &lt;b style=""&gt;endpoint connector &lt;/b&gt;(Figure 2)&lt;b style=""&gt; &lt;/b&gt;works analogously to a service connector or a client connector. WCF LOB Adapters are a different matter: because they are designed to look like WCF bindings, they can be used with service connectors or client connectors.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt; &lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gtdHbwAicTwWAp2jiVux6_uaXGWnZbYEEbmaI1jJlWU_zTvw0GKGZoU5SsDshXfJTw" target="_blank"&gt;&lt;img height=200 alt=EndpointConnectors src="http://byfiles.storage.live.com/y1pvhHyq8t_9gtdHbwAicTwWAp2jiVux6_uaXGWnZbYEEbmaI1jJlWU_zTvw0GKGZoU5SsDshXfJTw" width=140&gt;&lt;/a&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;&lt;em&gt;Figure 2: Endpoint Connectors&lt;/em&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Just like service endpoints, adapter endpoints can operate in a client/sender role or a service/receive role; and just like service endpoints, adapter endpoints can utilize request-reply or 1-way messaging. An adapter defines one or more modes of behavior that define what it does and which direction and pattern messaging the mode needs.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;To talk to a &lt;i style=""&gt;send mode&lt;/i&gt; adapter endpoint, the endpoint connector acts like a service connector, relaying bus messages to the adapter. The endpoint connector has an associated Neuron subscriber on which it receives bus messages which are then passed on to the adapter for delivery.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;To talk to a &lt;i style=""&gt;receive mode&lt;/i&gt; adapter endpoint, the endpoint connector acts like a client connector, relaying adapter messages to the bus. The endpoint connector has an associated Neuron publisher on which incoming messages from the adapter are published onto the bus over a designated topic.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Interaction with adapters is optionally transacted: both Neuron adapters and Neuron pub-sub channels may implement transactions, and if they do the hand-off between them is also linked transactionally. This makes it possible to have &lt;u&gt;transacted end-to-end communication&lt;/u&gt; through the bus, as long as the channel and adapter components you select support transactions.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;As with service/client connectors, you may set up adapter policies to control the behavior of adapter endpoints in the face of errors. You can determine retry counts and actions to take when a message can’t be delivered.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;The adapters that ship with Neuron include ActiveMQ,&lt;span style=""&gt;  &lt;/span&gt;RFID via BizTalk Server, eConnect (Great Plains accounting), SMTP email, files, MSMQ, SQL Server, and WebSphere MQ) and we’ll be taking more about them individually down the road.&lt;/font&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;Putting it all together: Service and Adapter Endpoints&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara&gt;&lt;font size=3&gt;Neuron’s strong support for services and adapters lets you break down the walls between your SOA applications, legacy systems, and line of &lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;Neuron’s strong support for services and adapters lets you break down the walls between your SOA applications, legacy systems, and line of business applications, and other groups of systems that up till now have had limited reach.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;All of your systems are now connected, but with loosely-coupled routing through named pub-sub topics. Actions such as changing the connection specifics of an endpoint, adding new endpoints, or removing endpoints can be done without disrupting the rest of the enterprise and without the need to make code changes to existing programs.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt; &lt;/font&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+Neuron+ESB+and+Endpoints&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=davidpallmann.spaces.live.com&amp;amp;GT1=davidpallmann"&gt;</description><category>ESB</category><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!485.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!485.entry</guid><pubDate>Mon, 19 May 2008 01:28:11 GMT</pubDate><slash:comments>13</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!485/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!485.entry#comment</wfw:comment><dcterms:modified>2008-05-19T01:28:11Z</dcterms:modified></item><item><title>The Neuron ESB Channel Model</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!480.entry</link><description>&lt;div&gt;
&lt;h1 style="margin:24pt 0in 0pt"&gt;&lt;font face=Cambria color="#365f91" size=5&gt;The Neuron ESB Channel Model&lt;/font&gt;&lt;/h1&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;In my &lt;a href="http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!477.entry"&gt;previous post &lt;/a&gt;I discussed the importance of topics in Neuron and how each topic is implemented as an individual publish-subscribe network, called a &lt;b style=""&gt;topic network&lt;/b&gt;. Topic networks are based on a modular channel model and can be powered by technologies ranging from WCF peer networking to BizTalk Server. Today we’ll look at the channel model in more detail.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;ESBs have &lt;b style=""&gt;endpoint architecture&lt;/b&gt;, meaning there is a common stack all endpoints go through in order to interact with each other. This is conceptually no different than using a WCF client to talk to a WCF service: a common stack on both ends of the connection work together to facilitate communication and cooperative processing. The difference with the ESB stack is the functionality provided, which includes publish-subscribe communication to N parties and the ability to layer integration functionality (transformations, rules, workflow) into your messaging at any point.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;How does the ESB stack pull off the publish-subscribe communication between &lt;span style=""&gt; &lt;/span&gt;N parties? You might assume all those ESB stacks simply connect to an ESB Server in a hub-and-spoke arrangement, but that’s not the case at all. Or more accurately, it’s up to the &lt;b style=""&gt;channel&lt;/b&gt;. A channel is simply a software module that implements publish-subscribe using some base technology. The four channel types included with Neuron implement pub-sub over peer networking, WCF TCP, MSMQ, and BizTalk Server. Each of the channels provide &lt;u&gt;the same&lt;/u&gt; functionality but with &lt;u&gt;varying&lt;/u&gt; qualities of service. Since each topic is a separate channel choice, you are free to run different qualities of service side by side. You might, for example, favor speed for some business conversations but require reliability for others. &lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;Although the channel’s responsibility is to implement publish-subscribe, applications are not limited to that one messaging pattern. Neuron’s stack also allows request-reply, direct point-to-point connections, and itinerary routing (where the message determines the delivery points). All of these patterns are always available, regardless of which channel you use.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;All publish-subscribe systems have to deal with backlog, where published messages come in faster than they can be delivered. A channel’s implementation must provide a strategy for handling backlog.&lt;/font&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;Peer Networking Channel&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;Peer Channel uses Windows peer-to-peer networking. In WCF, this technology is packaged up as the NetPeerTcpBinding. With PeerChannel you create a cloud or mesh of messaging nodes. The nodes are interconnected using both TCP and UDP, and will also take advantage of IPv6 on the network if they are able to. Any message sent by a node is delivered to all others nodes on the mesh in a highly parallel fashion that doesn’t require server infrastructure. A mesh is self-organizing, changing its shape in response to nodes joining/leaving and activity. This automatic optimization keeps the number of hops to a minimum and slower nodes are moved to the outside of the mesh.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;Peer networking often brings to mind consumer applications such as instant messaging, music and file sharing, or multi-player gaming. However, there are enterprise scenarios where peer networking is ideal. Its great strengths are its high speed, its parallelism, and its scalability.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;In Neuron, each topic powered by Peer Channel is a separate mesh. The behavior of a PeerChannel mesh is a natural fit for publish-subscribe messaging. Neuron deployments have been known to operate meshes with as many as 1500 nodes that stretch across the U.S. over multiple geographic locations.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;There’s a catch with peer channel, however. The base technology is not reliable enough to suit most enterprises. There are no message delivery assurances: &lt;span style=""&gt; &lt;/span&gt;you can lose messages (sometimes large blocks of messages if there’s a lot of CPU contention) nor are messages guaranteed to arrive in order. The good news is that Neuron ESB provides an optional reliability layer that provides delivery assurances through message caching.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;In its native form, peer channel is server-less. In fact, you can shut down &lt;u&gt;all&lt;/u&gt; of your servers and parties can continue to message. Adding in the reliability layer or enabling certain features such as auditing will require you to keep at least one server up and running however.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;The peer networking channel &lt;span style=""&gt; &lt;/span&gt;is volatile, meaning there is no durable storage of messages. Performance is very good, but is limited by the slowest node in the mesh. &lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;Peer channel &lt;span style=""&gt; &lt;/span&gt;is best suited for scenarios requiring low-latency (high speed) communication and/or the need to broadcast to many recipients simultaneously. &lt;/font&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;WCF TCP Channel&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;The WCF TCP channel interconnects parties using WCF TCP with reliable messaging. The channel connects parties to an ESB server via TCP. A massively efficient TCP publishing engine on the server copies incoming published messages out to connected subscribers with matching subscriptions.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;The server publishing engine can become backlogged, where published messages are coming in faster than they can be relayed out. The engine will buffer backlogged messages up to a threshold; once that threshold is exceeded, flow control kicks in and publishers will be slowed down as needed.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;In a server farm scenario, each server will have a different collection of parties connected to it. The servers share incoming messages with each other laterally so that any incoming messages is relayed to all servers for distribution.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;&lt;font face=Calibri&gt;&lt;span style=""&gt; &lt;/span&gt;The WCF TCP channel is volatile, meaning there is no durable storage of messages. There are delivery assurances within the scope of a connection, but sudden client or server loss can lose messages. &lt;/font&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;The TCP channel is a good choice for applications that don’t require durable or transacted messaging.&lt;/font&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;MSMQ Channel&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;The MSMQ channel implements publish-subscribe over queues. Messaging is durable, transacted, and reliable. There is a publish queue for a topic, and a recipient queue for each subscriber. An MSMQ publishing engine on the server moves messages between queues.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;Parties do not have to be online in order to receive messages from each other because undelivered messages persist in the queues. This characteristic allows you to take systems offline and online without being disruptive.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;The MSMQ queues used by the channel are durable, providing reliable store-and-forward messaging. In a backlog situation, messages that cannot be immediately processed accrue in publisher or subscriber queues until they can be processed.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;The server’s MSMQ publishing engine is transactional. A delivery either fully completes or the queue reads and writes are rolled back. The engine processes messages in batches when it can for efficiency.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;The MSMQ channel is a good choice for transacted, durable communication.&lt;/font&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;BizTalk TCP Channel&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;The BizTalk TCP channel performs publish-subscribe over BizTalk Server. The channel connects parties to BizTalk Server via TCP, and BizTalk’s messaging engine performs the publish-subscribe messaging.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;Making changes to the Neuron ESB &lt;span style=""&gt; &lt;/span&gt;configuration automatically programs BizTalk Server to make matching changes to its configuration. For example, defining new publishers and subscribers in Neuron will cause new send ports and receive ports to be created in BizTalk.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;With BizTalk as the messaging engine, you gain the many features of BizTalk including strong retry/recovery capabilities. With a small amount of BizTalk configuration you can link messages to features such as Business Activity Monitoring (BAM),, transformations , the rules engine, and orchestrations.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;The BizTalk channel is durable and is well-suited for mission-critical applications that require high reliability and/or the unique characteristics and features of BizTalk Server’s. It is not the best choice for low-latency applications, as BizTalk’s message box database limits performance.&lt;/font&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;What about Services, Legacy Systems, and Line of Business Apps?&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;Does this mean there are only 4 protocols you can use to communicate with in Neuron? Not at all--the endpoint architecture and channel model we’ve been describing is how Neuron makes publish-subscribe happen, but this is the &lt;u&gt;internal&lt;/u&gt; side of the bus. Externally, you can connect a wide, wide variety of services and non-services to the bus… everything from WCF services to WebSphereMQ. We will talk about the &lt;u&gt;external&lt;/u&gt; side of the bus in future articles. &lt;/font&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;Summary&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;The Neuron ESB channel model provides a modular system for switching in different technologies for messaging. This not only makes it possible to leverage a wide range of existing technologies, but anticipates new technologies and provides a path for accommodating them.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt; &lt;/font&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+The+Neuron+ESB+Channel+Model&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=davidpallmann.spaces.live.com&amp;amp;GT1=davidpallmann"&gt;</description><category>ESB</category><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!480.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!480.entry</guid><pubDate>Wed, 14 May 2008 19:43:03 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!480/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!480.entry#comment</wfw:comment><dcterms:modified>2008-05-14T19:43:03Z</dcterms:modified></item><item><title>Topic Networks: How Neuron ESB Implements Publish-Subscribe</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!477.entry</link><description>&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Today I’d like to talk about how Neuron ESB implements publish-subscribe over topics. Topics are important in Neuron both logically and architecturally. Logically, topics model business conversations and are an important tool for organizing information. Architecturally, topics are independent networks that give the bus its distributed nature and scalability.&lt;/font&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;A Logical View of Topics&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Logically speaking, topics represent business conversations and are usually named accordingly. Topics can have simple names like Orders or Inventory, or a topic can have a hierarchy of subtopics, expressed with dotted names such as Orders.New, Orders.Approved, Orders.Shipping.US, Orders.Shipping.International, and so forth. A party expresses interest in a topic with a &lt;i style=""&gt;subscription&lt;/i&gt;. Subscriptions may be wildcarded, as in Orders.* which expresses interest in Orders as well as all of its subtopics (Orders.New, etc.). By modeling your solution after actual business conversations and entities, you raise the likelihood that your messaging system will be a successful and long-lived one. &lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Together, topics and subscriptions define a virtual circuit between publishers (senders) and subscribers (receivers) about some subject of interest. In Figure 1, a publisher named OrderEntry has published a message on the topic Orders.New. Of the 3 other parties, only 2 have matching subscription: (OrderApproval and OrderFulfillment. The other subscriber, PaymentApproval, is only interested Orders.Paid and does not see messages published on Orders.New.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt; &lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gtNg2cueVzVW-NxorL_Wo_DDKHby9g2wHBNQO-55_N7_AvtZK44Te29nAXaaTbyj6M" target="_blank"&gt;&lt;img height=200 alt="esb_intro_pubsub" src="http://byfiles.storage.live.com/y1pvhHyq8t_9gtNg2cueVzVW-NxorL_Wo_DDKHby9g2wHBNQO-55_N7_AvtZK44Te29nAXaaTbyj6M" width=274&gt;&lt;/a&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;&lt;em&gt;Figure 1: Topical Publish-Subscribe&lt;/em&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style=""&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Although bus communication is pub-sub based, that doesn’t limit you to pub-sub as a messaging pattern. Parties can also use point-to-point messaging, request-reply messaging, and itinerary-based routing.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;The ability to easily add, change, and remove parties, topics, and subscriptions—even while running live—results in great flexibility and easy change management.&lt;/font&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;An Architectural View of Topics&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Architecturally speaking, each topic is an &lt;i style=""&gt;individually configured network&lt;/i&gt; called &lt;b style=""&gt;a topic network&lt;/b&gt;. Figure 2 shows 3 topic networks, named Inventory, Orders, and CallCenter. Each topic network is separately assigned a communication technology to drive it, such as peer networking, WCF TCP, MSMQ, or BizTalk Server. This allows you to run topics with a mix of qualities of service, a refreshing change from messaging systems with a single “one size fits all” QoS. Each topic network can also refer to separate server infrastructure, making topics the primary division for scaling out. The distributed topic network design is very different from the classic EAI hub-and-spoke design. There is no central hub and no central message store that all messages must pass through; instead, each topic network performs its functions independently. While you could run all of your topics over the same technology and off of the same server, you could just as easily run each topic over a different technology and different servers. Moreover, some of the technologies that can power topics require little or no server infrastructure at all.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt; &lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gtz8AlFaPoAjONy6AqAVpOOUAYmXvX-3EG_lbqUex0cTfsMDzOsNZuVir51x5h3Wf4" target="_blank"&gt;&lt;img height=200 alt="topic_networks" src="http://byfiles.storage.live.com/y1pvhHyq8t_9gtz8AlFaPoAjONy6AqAVpOOUAYmXvX-3EG_lbqUex0cTfsMDzOsNZuVir51x5h3Wf4" width=284&gt;&lt;/a&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style=""&gt;&lt;font face=Candara size=3&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;i style=""&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;Figure 2: Topic Networks&lt;/font&gt;&lt;/font&gt;&lt;/i&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;If each topic is really a separate network, what sort of network is it, and what are its characteristics? The answer to&lt;span style=""&gt;  &lt;/span&gt;that is determined by the channel you select. A &lt;b style=""&gt;channel&lt;/b&gt; is a modular software driver that implements pub-sub for Neuron ESB using some base technology, such as WCF or BizTalk Server. The channel has complete freedom to implement pub-sub any way it wishes, as long as it provides the expected functionality. Some channels are volatile, emphasizing speed over reliability. Others channels are durable, stressing reliability over speed.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;In a future article, we will dig into channels more deeply and compare the various trade-offs between them.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt; &lt;/font&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+Topic+Networks%3a+How+Neuron+ESB+Implements+Publish-Subscribe&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=davidpallmann.spaces.live.com&amp;amp;GT1=davidpallmann"&gt;</description><category>ESB</category><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!477.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!477.entry</guid><pubDate>Tue, 13 May 2008 23:43:53 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!477/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!477.entry#comment</wfw:comment><dcterms:modified>2008-05-13T23:43:53Z</dcterms:modified></item><item><title>Service Pass-Through in Neuron ESB</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!445.entry</link><description>&lt;h1 style="margin:24pt 0in 0pt"&gt;&lt;font face=Cambria color="#365f91" size=5&gt;Service Pass-Through in Neuron ESB&lt;/font&gt;&lt;/h1&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Today I’d like to talk about how you can connect your services (and clients) to pass message traffic through an ESB, rather than directly connecting to each other. We call this “service pass-through”. &lt;/font&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;Why Service Pass-Through?&lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gsPJ3EmoCgVzbiIX3DB4VrAhw0MnT9JqYGf8RrIgYP10A53iUdJxR8I8grj0t-gpHQ" target="_blank"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Before getting into &lt;u&gt;how&lt;/u&gt; this is done, let’s explore &lt;u&gt;why&lt;/u&gt; you might want to.&lt;/font&gt; 
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;b&gt;Loosely-coupled routing&lt;/b&gt;. Imagine you have a client that interacts with a service (Figure 1a), but now you have a requirement to involve a third program that also needs to know about the information the client is exchanging with the service. How do you bring this third system into the mix? A conventional answer is to either make the original service a client of a new service (Figure 1b); or make the original client a client of two services (Figure 1c).&lt;/font&gt;&lt;/font&gt; 
&lt;p style="margin:0in 0in 10pt"&gt;&lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gu31JTzZ0EnwP2SA08mgqV1VEBaxvRs8x0R_gNiaB0WRTFSfrPIe2XtAcrkiAgSreY" target="_blank"&gt;&lt;img height=200 alt="service_coupling" src="http://byfiles.storage.live.com/y1pvhHyq8t_9gu31JTzZ0EnwP2SA08mgqV1VEBaxvRs8x0R_gNiaB0WRTFSfrPIe2XtAcrkiAgSreY" width=239&gt;&lt;/a&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;i&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;Figure 1: interconnecting services in code is not loose coupling&lt;/font&gt;&lt;/font&gt;&lt;/i&gt; 
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt; &lt;/font&gt;&lt;font face=Candara size=3&gt;Neither of these answers is very satisfactory because they force you to tightly couple your routing. If you are a fan of SOA and value loose coupling in other areas of your work, this tight coupling of how your services are linked should offend you.&lt;/font&gt; 
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;span&gt; &lt;/span&gt;In contrast, if your client and service are have an ESB interposed between them (Figure 2), the ESB can share information with other messaging parties. This approach helps keeps your services pure, context-free and reusable, as you don’t have to add program code to link services together.&lt;/font&gt;&lt;/font&gt; 
&lt;p style="margin:0in 0in 10pt"&gt;&lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9guL4ChRp9yZd2XLTNcdp_LPTfFGP_dvWFVL3hZ6iOx0L8z6P5hFp3UWd9Y2GNeYgEs" target="_blank"&gt;&lt;img height=200 alt="service_coupling2" src="http://byfiles.storage.live.com/y1pvhHyq8t_9guL4ChRp9yZd2XLTNcdp_LPTfFGP_dvWFVL3hZ6iOx0L8z6P5hFp3UWd9Y2GNeYgEs" width=269&gt;&lt;/a&gt; 
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span&gt;&lt;font face=Candara size=3&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;&lt;em&gt;Figure 2: passing service traffic through the ESB easily accommodates additional parties.&lt;/em&gt;&lt;/font&gt; 
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;b&gt;Mediation of differences&lt;/b&gt;. You might have clients and services that can’t interact directly because they aren’t quite compatible, due to differences in transport, security model, message format, or semantics. You can connect each of them to an ESB, however, and the ESB can then interconnect them, mediating between&lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gttcbbmBqj3Jwit8CdrzXAoGmVsWV1ViFkm0B1S-a6ln4zDU4uxGIL0CQeFsBbriyg" target="_blank"&gt;&lt;/a&gt; their differences. &lt;/font&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;&lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gtUL77M2XIhLR23-jLskedrcuTY4w28jUvLtrPB01ttPez7IPCGeNz2-PjYpWQ0BN4" target="_blank"&gt;&lt;img height=200 alt="service_coupling3" src="http://byfiles.storage.live.com/y1pvhHyq8t_9gtUL77M2XIhLR23-jLskedrcuTY4w28jUvLtrPB01ttPez7IPCGeNz2-PjYpWQ0BN4" width=270&gt;&lt;/a&gt; &lt;/font&gt; 
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span&gt;&lt;font face=Candara size=3&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;&lt;em&gt;Figure 3: Mediation bridges differences in protocol, security model, message format, semantics&lt;/em&gt;&lt;/font&gt; 
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;b&gt;Workload Sharing&lt;/b&gt;. The ESB can work with multiple instances of services and share workload across them. You can freely add services instances or take them away while running; workload distribution automatically adjusts.&lt;/font&gt;&lt;/font&gt; 
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;b&gt;When Worlds Collide&lt;/b&gt;. You can get services and non-services to work together. Neuron interconnects easily to services and clients using WCF. Neuron also interconnects to non-services such as legacy system and line-of-business systems using adapters. Once joined to the ESB, these programs can interact even though there be huge gap between the technologies they are use and when they were created.&lt;/font&gt;&lt;/font&gt; 
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;b&gt;Auditing and Compliance Monitoring&lt;/b&gt;. You may want to keep an audit of your messages in order to show compliances with state, federal, or industry regulations. If your messaging traffic flows through the bus, the bus can take care of the rest.&lt;/font&gt;&lt;/font&gt; 
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt; &lt;/font&gt;&lt;font face=Candara size=3&gt; &lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gvHFR4liMp6Q7vxhJxbErOvoxqwrNE61JFv8hualWRUmLn-D2WCtDGbwL6E7mfNuL4" target="_blank"&gt;&lt;img height=200 alt="service_coupling4" src="http://byfiles.storage.live.com/y1pvhHyq8t_9gvHFR4liMp6Q7vxhJxbErOvoxqwrNE61JFv8hualWRUmLn-D2WCtDGbwL6E7mfNuL4" width=295&gt;&lt;/a&gt;&lt;/font&gt; 
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt; &lt;/font&gt;&lt;i&gt;&lt;font face=Candara size=3&gt;Figure 4: Both services and non-services can work cooperatively&lt;/font&gt;&lt;/i&gt; 
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;The Mechanics of Service Pass-Through&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;When you define a service to Neuron (usually by importing metadata), one or more service endpoint definition(s) are created. By itself, a service definition is nothing more than an interesting record in a repository. I blogged yesterday about how you can use this repository to create WCF clients based on central configuration. &lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Things get more interesting when you authorize service-pass through for your service definition. You can enable service pass-through for the client-side and/or the service-side, as shown in Figure 5.&lt;/font&gt; 
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt; &lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gs3hyMqeCw6j6xlOrY6gADQtHJxA-CQNZ7zmLdQi2fONs0LnH0KWbSVyBeiDRufQ-w" target="_blank"&gt;&lt;img height=200 alt="service_coupling5" src="http://byfiles.storage.live.com/y1pvhHyq8t_9gs3hyMqeCw6j6xlOrY6gADQtHJxA-CQNZ7zmLdQi2fONs0LnH0KWbSVyBeiDRufQ-w" width=271&gt;&lt;/a&gt;&lt;/font&gt; 
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt; &lt;/font&gt;&lt;i&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;Figure 5: A service definition with client- and service-side pass-through enabled&lt;/font&gt;&lt;/font&gt;&lt;/i&gt; 
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Enabling client-side pass through causes Neuron to create a &lt;b&gt;client connector&lt;/b&gt;, which is a hosting service for clients. This hosting service looks just like the client’s actual target service, with the same binding and security model. The only difference is that you point the client to a different address on the ESB Server. Client-side pass- through maps incoming client messages to an ESB topic and to a publisher. As client messages are received, the ESB publishes those messages on a topic. Any party with a subscription to that topic receives a copy of the message. This works for both 1-way and request-reply messaging.&lt;/font&gt; 
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Enabling service-side pass through causes Neuron to create a &lt;b&gt;service connector&lt;/b&gt;, which is a client to the service used by the ESB Server. This client has a matching binding and security model for the service it is connecting to. The service connector is mapped to a topic and a subscriber. As messages are received over the ESB, the service connector passes them on to the service. Replies from the service are passed back over the bus to the originating client.&lt;/font&gt; 
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span&gt;&lt;font face=Candara size=3&gt;&lt;/font&gt;&lt;/span&gt;
&lt;div&gt;&lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gv4eLXhlRbBP2bluTZzK3cjs5SpzoAq3aorxTP220Qv8zjvCunH--9a3kXd6PpmHBE" target="_blank"&gt;&lt;img height=200 alt="service_coupling6" src="http://byfiles.storage.live.com/y1pvhHyq8t_9gv4eLXhlRbBP2bluTZzK3cjs5SpzoAq3aorxTP220Qv8zjvCunH--9a3kXd6PpmHBE" width=244&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face=Candara size=3&gt;For true client-service pass-through, you w&lt;/font&gt;&lt;font face=Candara size=3&gt;ould enable both client-side and service-side pass-through. In some scenarios, you may choose to only enable one side or the other.&lt;/font&gt;&lt;/div&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Notice that in service pass-through, you aren’t asked to modify your client and service in any way, other than to change the address the client points to. &lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Service pass-through the ESB avoids tightly-coupled routing and keeps your services more modular and reusable. It allows for mediation between program differences and allows services and non-services to interact. &lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;&lt;/font&gt; &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+Service+Pass-Through+in+Neuron+ESB&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=davidpallmann.spaces.live.com&amp;amp;GT1=davidpallmann"&gt;</description><category>WCF</category><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!445.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!445.entry</guid><pubDate>Wed, 07 May 2008 01:37:39 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!445/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!445.entry#comment</wfw:comment><dcterms:modified>2008-05-07T15:10:22Z</dcterms:modified></item><item><title>Centralizing your WCF Configuration with Neuron ESB</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!442.entry</link><description>&lt;p style="margin:0in 0in 10pt"&gt;&lt;b style=""&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;Centralizing Your WCF Configuration with Neuron ESB&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Today I’d like to talk about how you can store your WCF configuration information centrally with Neuron ESB . While it’s great that WCF allows you to move details such as endpoint, binding, and other information out of code and into config file settings, it can still be inconvenient to work with many individual config files. If you are dealing with large numbers of services, you may desire a way to centralize your configuration information. Neuron ESB provides a service repository for this purpose, plus a neat factory for creating WCF clients. Together, they free you from needing local WCF configuration settings.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;There are a number of ways you can program against Neuron, ranging from WCF to JMS to Neuron’s own .NET API. In this case, we’re going to use the Neuron API to retrieve configuration information and create a WCF client; the rest is pure WCF from there. &lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Adding services to the Neuron service repository is very straightforward. An import wizard can guide you through the steps or you can set things up manually. Service definitions can be imported from metadata at URL, file, or via searching a UDDI directory. The appropriate WSDL, schema, and service endpoints are added to the repository. Neuron employs the same classes for service import that are used by &lt;i style=""&gt;Add Service Reference&lt;/i&gt; in Visual Studio and the SvcUtil tool. &lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style=""&gt;&lt;font size=3&gt;&lt;font face=Candara&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;&lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gvFSVujr1QUAzBnSq6Re78BFKjncEhow4FnvF8KBISW2iPxD7RQk2AeRzJO-hVxEnw" target="_blank"&gt;&lt;img height=200 alt="service_def" src="http://byfiles.storage.live.com/y1pvhHyq8t_9gvFSVujr1QUAzBnSq6Re78BFKjncEhow4FnvF8KBISW2iPxD7RQk2AeRzJO-hVxEnw" width=271&gt;&lt;/a&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;&lt;em&gt;Figure 1: Service Definition in Neuron's ESB Explorer&lt;/em&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;The service repository itself is of course platform independent, making no assumptions about what technologies are used to build services and clients. &lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;For WCF developers, Neuron provides a client factory class that uses the central repository to create auto-configured WCF clients. Here’s how this works. Imagine you are writing a WCF client for an order entry service that has a service contract named IOrderEntry. To develop your WCF client, you go through the usual steps, including generating client code from metadata. However, you don't worry about creating a System.ServiceModel section in your local config file. Instead, you import the target service in Neuron’s service repository. &lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;To instantiate a WCF client in your code, you use Neuron’s Client&amp;lt;T&amp;gt; class, where T is the interface you want a client for. &lt;span style=""&gt; &lt;/span&gt;For example:&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:Consolas"&gt;&lt;font size=3&gt;&lt;span style=""&gt;      &lt;/span&gt;IOrderEntry oeClient = new Client&amp;lt;IOrderEntry&amp;gt;();&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;What this does is scan the central service repository for a service to locate a matching interface. If a match is found, a WCF proxy is created, using the address, binding, and other information defined in the repository. From this point forward, your client program is using pure WCF, and accesses the service in the usual manner, via named methods:&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt 0.5in"&gt;&lt;span style="font-family:Consolas"&gt;&lt;font size=3&gt;IOrderEntry oeClient = new Client&amp;lt;IOrderEntry&amp;gt;();&lt;br&gt;PriceList pricelist = oeClient.GetPriceList();&lt;br&gt;int orderId = oeClient.SubmitOrder(order);&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;In the example above, we created the client simply by specifying an interface to Client&amp;lt;T&amp;gt;. In all but the smallest deployments that’s probably not enough information to make a good match. What environment is the service in? Is it available and in good health? Do you have rights to access it? You can be more specific by using alternative constructors to Client&amp;lt;T&amp;gt;. For example, Client&amp;lt;T&amp;gt;(&lt;i style=""&gt;name&lt;/i&gt;) will locate a specific service endpoint in the repository by its unique name. More powerful is Client&amp;lt;T&amp;gt;(&lt;i style=""&gt;criteria&lt;/i&gt;), which will match an array of name-value properties against properties in the repository. You can use repository properties to indicate any information you like about a service, such as the environment it serves or the version of its contracts.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;One valuable service the Client&amp;lt;T&amp;gt; class provides is sparing a developer from having to learn and keep up with the connection details for a target service. Each time a connection is made, the latest information in the service repository determines address, binding details, security settings, and so on. Similarly, administrators can make changes to service locations and access details without worrying about being disruptive to developers.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Another value provided by the Client&amp;lt;T&amp;gt; class is indirection. When you set up a service definition in the Neuron ESB repository, you can optionally enable pass-through of service traffic through the ESB (a subject we will go into more detail about in a separate article). Pass-through of service traffic is transparent to the client and service, but doing so allows additional parties on the bus to share in the messaging. Pass-through also enables bus-managed scenarios such as workflow sharing among multiple service instances. All of this is transparent to the WCF developer, however. if you invoke Client&amp;lt;T&amp;gt; and the matching service definition enables service traffic pass-through, the WCF client that is created will point to a hosting service on the ESB. If service pass-through is not enabled, the WCF client that is created points directly to the actual service. Either way, the usage is the same and the developer won’t know the difference.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;Client&amp;lt;T&amp;gt; and the service repository is an example where Neuron adds value, yet you are still using solid, familiar WCF technology to create your clients and services.&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Candara size=3&gt;&lt;/font&gt; &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+Centralizing+your+WCF+Configuration+with+Neuron+ESB&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=davidpallmann.spaces.live.com&amp;amp;GT1=davidpallmann"&gt;</description><category>ESB</category><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!442.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!442.entry</guid><pubDate>Tue, 06 May 2008 00:29:57 GMT</pubDate><slash:comments>13</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!442/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!442.entry#comment</wfw:comment><dcterms:modified>2008-05-06T00:29:57Z</dcterms:modified></item><item><title>Neuron ESB Management Experience</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!424.entry</link><description>&lt;div&gt;
&lt;h1 style="margin:24pt 0in 0pt"&gt;&lt;font face=Cambria color="#365f91" size=5&gt;Neuron ESB Management Experience&lt;/font&gt;&lt;/h1&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;Today I’d like to talk about the Neuron ESB management experience. Neuron takes management seriously and a lot of effort has gone into providing a one-stop administrative experience for configuration, deployment, activity reporting, operations monitoring, change management, and problem response &lt;/font&gt;&lt;/span&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;ESB Explorer&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;Neuron’s management tool is called ESB Explorer, shown in Figure 1 below. ESB Explorer’s UI is styled after MS CRM, with a navigation bar at left and a workspace area to the right. It should have a familiar feel to any Outlook user. &lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;&lt;span style=""&gt; &lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gtfFtgJCpGZpvG80jbbh-bTXs7CnRoLycY1GgJVHV_rJO8It_E4_Sed6AvaHkOKqOI" target="_blank"&gt;&lt;img height=200 alt=fig1 src="http://byfiles.storage.live.com/y1pvhHyq8t_9gtfFtgJCpGZpvG80jbbh-bTXs7CnRoLycY1GgJVHV_rJO8It_E4_Sed6AvaHkOKqOI" width=271&gt;&lt;/a&gt;&lt;/span&gt;&lt;br&gt;&lt;i style=""&gt;Figure 1: ESB Explorer (click for larger image)&lt;/i&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;The navigation bar has 7 sections. We’ll be digging into these areas individually down the road.&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 0pt 0.5in;text-indent:-0.25in"&gt;&lt;span style="font-family:Symbol"&gt;&lt;span style=""&gt;&lt;font size=3&gt;·&lt;/font&gt;&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;b style=""&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;Messaging&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt; is where you set up your logical messaging model of publisher, subscribers, topics, and subscriptions.&lt;/span&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 0pt 0.5in;text-indent:-0.25in"&gt;&lt;span style="font-family:Symbol"&gt;&lt;span style=""&gt;&lt;font size=3&gt;·&lt;/font&gt;&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;b style=""&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;Data &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;is a repository for various data artifacts including XML schema, WSDL metadata, XSLT transformations, sample messages, and message templates.&lt;b style=""&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 0pt 0.5in;text-indent:-0.25in"&gt;&lt;span style="font-family:Symbol"&gt;&lt;span style=""&gt;&lt;font size=3&gt;·&lt;/font&gt;&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;b style=""&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;Connections &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;is where you define service- and adapter-based physical endpoint connections.&lt;b style=""&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 0pt 0.5in;text-indent:-0.25in"&gt;&lt;span style="font-family:Symbol"&gt;&lt;span style=""&gt;&lt;font size=3&gt;·&lt;/font&gt;&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;b style=""&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;Security&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt; is where you define credentials, set up access control lists, set encryption keys, and other security-related functions.&lt;b style=""&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 0pt 0.5in;text-indent:-0.25in"&gt;&lt;span style="font-family:Symbol"&gt;&lt;span style=""&gt;&lt;font size=3&gt;·&lt;/font&gt;&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;b style=""&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;Integration&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt; is where you set up integration functions (schema validation, transformations, business rules, workflows, etc.) and string them together into processing pipelines.&lt;b style=""&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 0pt 0.5in;text-indent:-0.25in"&gt;&lt;span style="font-family:Symbol"&gt;&lt;span style=""&gt;&lt;font size=3&gt;·&lt;/font&gt;&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;b style=""&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;Deployment &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;span style=""&gt; &lt;/span&gt;is where you define zones and environments, manage resources such as databases and queues, and define deployment configurations.&lt;b style=""&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt 0.5in;text-indent:-0.25in"&gt;&lt;span style="font-family:Symbol"&gt;&lt;span style=""&gt;&lt;font size=3&gt;·&lt;/font&gt;&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;b style=""&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;Activity&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt; is where you monitor activity in real-time, access database-driven activity reports, monitor server health, and take action on failed messages.&lt;b style=""&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;The ESB Explorer lets you work in online or offline mode. In online mode, saving your changes causes them to be applied live. In online mode, saved changes only take effect when you restart your ESB Server(s).&lt;/font&gt;&lt;/span&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;Entity Management&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;Many of the pages in the ESB Explorer are for managing entities such as topics, publishers, subscribers, and services. &lt;span style=""&gt; &lt;/span&gt;The Explorer handles entity management consistently with a list/item view. Figure 2 shows the page for managing subscribers.&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;&lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gu69V5kJy7f85Km8-D8OVHHu75zoSQFgeNwXtMxPBogwIMHfhfufL-q_Hg4DZT7tQI" target="_blank"&gt;&lt;img height=200 alt=fig2 src="http://byfiles.storage.live.com/y1pvhHyq8t_9gu69V5kJy7f85Km8-D8OVHHu75zoSQFgeNwXtMxPBogwIMHfhfufL-q_Hg4DZT7tQI" width=271&gt;&lt;/a&gt;&lt;br&gt;&lt;i style=""&gt;Figure 2: ESB Explorer (click for larger image)&lt;/i&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;If you are dealing with large numbers of entities, you can organize them by category. Entity management pages let you filter your view by category, alphabetically, or by search term.&lt;/font&gt;&lt;/span&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;Diagrams&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;The ESB Explorer provides a number of visualizations, such as communication diagrams and deployment diagrams. The communication diagram in Figure 3 shows the relationship between publishers, subscribers, and topics.&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;&lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gtizxj1c3fERTc9_cLQGS9IYmR8j7KGtFiTkswss-tb8s-fk7fAGU7-DBrMWVvkXUQ" target="_blank"&gt;&lt;img height=200 alt=fig3 src="http://byfiles.storage.live.com/y1pvhHyq8t_9gtizxj1c3fERTc9_cLQGS9IYmR8j7KGtFiTkswss-tb8s-fk7fAGU7-DBrMWVvkXUQ" width=271&gt;&lt;/a&gt;&lt;br&gt;&lt;i style=""&gt;Figure 3: Communication diagram (click for larger image)&lt;/i&gt;&lt;/font&gt;&lt;/span&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;Real-time Activity Monitoring&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;Both the server- and client-side components of Neuron are instrumented to report activity in real-time through WMI and performance counters. You can monitor this activity in ESB Explorer with a variety of real-time views. Figure 4 shows a chart of message counts.&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;&lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gsESY5hWktmxSbj92wdnYQrf1WYbUba0_ZjA5Bh7c1G2AAhU6Qh_QH8T9fDD6gsMV0" target="_blank"&gt;&lt;img height=200 alt=fig4 src="http://byfiles.storage.live.com/y1pvhHyq8t_9gsESY5hWktmxSbj92wdnYQrf1WYbUba0_ZjA5Bh7c1G2AAhU6Qh_QH8T9fDD6gsMV0" width=271&gt;&lt;/a&gt;&lt;br&gt;&lt;i style=""&gt;Figure 4:Real-time Activity Chart (click for larger image)&lt;/i&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;Because Neuron activity information is reported via WMI and performance counters, nearly any operations monitoring tool can also &lt;/font&gt;&lt;/span&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;Reports&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;In addition to real-time reporting, Neuron can also log activity information to a database. For example, you can enable message auditing for any topic(s) in your ESB configuration, which will record every send and every receive. You can this information from a variety of perspectives, such as message history reports, failed message reports, and business event reports.&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;&lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gsw-HLY-pEX1b3Ns-VExOTEhrslNIVtHE-OtUAKJAMSjyUZ-hMVZPcPWYn7gJ2t_6Q" target="_blank"&gt;&lt;img height=200 alt=fig5 src="http://byfiles.storage.live.com/y1pvhHyq8t_9gsw-HLY-pEX1b3Ns-VExOTEhrslNIVtHE-OtUAKJAMSjyUZ-hMVZPcPWYn7gJ2t_6Q" width=271&gt;&lt;/a&gt;&lt;br&gt;&lt;i style=""&gt;Figure 5: Message History Report (click for larger image)&lt;/i&gt;&lt;/font&gt;&lt;/span&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;Resource Management&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;Your ESB configuration can optionally make use of enterprise resources such as databases and queues. Neuron can create, configure, and check these resources. It can also generate SQL and WSH scripts if you need this work done by others such as a DBA.&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;&lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gt3TPFklVkttqXwy6CybKCO_2wV6qDXYDX-HmDR2TfwYGO8QyL5YzHkdqTsAimqnR0" target="_blank"&gt;&lt;img height=200 alt=fig6 src="http://byfiles.storage.live.com/y1pvhHyq8t_9gt3TPFklVkttqXwy6CybKCO_2wV6qDXYDX-HmDR2TfwYGO8QyL5YzHkdqTsAimqnR0" width=271&gt;&lt;/a&gt;&lt;br&gt;&lt;i style=""&gt;Figure 6: Database Artifact Creation (click for larger image)&lt;/i&gt;&lt;/font&gt;&lt;/span&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;Wizards and Guides&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;Wizard and guides help you through performing tasks for the first time. There are wizard for setting up pub-sub topics, importing services, searching service directories, and setting up deployment configurations. Guides such as the Getting Started Center (Figure 1, above) and Samples Browser help you find what you need.&lt;/font&gt;&lt;/span&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;Configuration Checking&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;Neuron ESB is a product with a rich set of communication and integration capabilities, so enforcing a correct configuration is critical. If you have inconsistencies in your configuration, you want to find that out at configuration time, not at runtime. An example of an inconsistency is a subscriber with a subscription to Inventory, where no topic named Inventory has been defined.&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;The ESB Explorer performs a consistency check any time you attempt to save an updated configuration. Inconsistencies either need to be fixed, or you can mark the offending entities as disabled for the time being. Once your configuration is consistent, you can save it. The Neuron ESB server performs an identical consistency check as part of its power-on self tests.&lt;/font&gt;&lt;/span&gt;
&lt;h2 style="margin:10pt 0in 0pt"&gt;&lt;font face=Cambria color="#4f81bd" size=4&gt;Administration API&lt;/font&gt;&lt;/h2&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;The ESB Explorer is an extremely powerful management tool. Everything it does is accomplished through an administration API, which means you can do all of this in .NET code if you choose to and have appropriate rights.&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt;That does it for our introduction to what management is all about in Neuron ESB. We’ll be frequently referring to ESB Explorer as we discuss how to configure individual feature areas in future articles.&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style="font-family:'Candara','sans-serif'"&gt;&lt;font size=3&gt; &lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+Neuron+ESB+Management+Experience&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=davidpallmann.spaces.live.com&amp;amp;GT1=davidpallmann"&gt;</description><category>ESB</category><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!424.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!424.entry</guid><pubDate>Fri, 02 May 2008 18:29:38 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!424/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!424.entry#comment</wfw:comment><dcterms:modified>2008-05-02T18:29:38Z</dcterms:modified></item><item><title>A High Level View of the Neuron ESB Architecture</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!421.entry</link><description>&lt;div&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;b&gt;&lt;span style="font-size:12pt;color:black;font-family:'Arial','sans-serif'"&gt;A High Level View of the Neuron ESB Architecture&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;Today I’d like to provide a very high level view of the &lt;a href="http://www.neuronesb.com/"&gt;&lt;span style="color:white;text-decoration:none;text-underline:none"&gt;Neuron ESB &lt;/span&gt;&lt;/a&gt;architecture. Understanding this will help put individual features and concepts in context as I describe them in upcoming articles.&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;The bus is best thought of as having a distinct outside and inside, as the figure below illustrates.&lt;/span&gt;
&lt;p style="margin:0in 0in 0pt 55.5pt;text-indent:-0.25in;line-height:normal"&gt;&lt;span style="font-size:12pt;color:black;font-family:Symbol"&gt;·&lt;/span&gt;&lt;span style="font-size:7pt;color:black;font-family:'Times New Roman','serif'"&gt;         &lt;/span&gt;&lt;span style="font-size:12pt;color:black;font-family:'Candara','sans-serif'"&gt;The outside of the bus is concerned with connecting to diverse enterprise applications, services, and legacy systems&lt;/span&gt;&lt;span style="font-size:12pt;color:black;font-family:'Candara','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:auto auto auto 55.5pt;text-indent:-0.25in;line-height:normal"&gt;&lt;span style="font-size:12pt;color:black;font-family:Symbol"&gt;·&lt;/span&gt;&lt;span style="font-size:7pt;color:black;font-family:'Times New Roman','serif'"&gt;         &lt;/span&gt;&lt;span style="font-size:12pt;color:black;font-family:'Candara','sans-serif'"&gt;The inside of the bus is concerned with interconnecting endpoints via publish-subscribe messaging and performing integration services.&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gsv_lSEnZrxsY-Zzlt_W1YAMCFUABUYbtfAjZmGqQ-MT3a3xZPuFDsPffjs22A8bI0" target="_blank"&gt;&lt;span style="font-size:12pt;color:white;font-family:'Segoe UI','sans-serif';text-decoration:none;text-underline:none"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;b&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;&lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gtCVrm4wAmnusYy0_q6IeALfqWxTOxC9GC8erEBXU_5nCx2H_lSB2VaKO5CSc-8cLI" target="_blank"&gt;&lt;img height=510 alt="esb_intro_connections" src="http://byfiles.storage.live.com/y1pvhHyq8t_9gtCVrm4wAmnusYy0_q6IeALfqWxTOxC9GC8erEBXU_5nCx2H_lSB2VaKO5CSc-8cLI" width=730&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;b&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;The Outside of the Bus &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;The outside of the bus has exacty one purpose: to establish connections to any kind of business endpoint in the enterprise. Neuron has strong support for both services and non-services. Applications can talk to the bus in a way that is natural to them in terms of protocol, security model, and message format.&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt 25.5pt;text-indent:-0.25in;line-height:normal;tab-stops:list 1.0in"&gt;&lt;span style="font-size:10pt;color:black;font-family:Symbol"&gt;&lt;span style=""&gt;·&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;For service-oriented endpoints, Neuron uses WCF to connect both clients and services. &lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt 25.5pt;text-indent:-0.25in;line-height:normal;tab-stops:list 1.0in"&gt;&lt;span style="font-size:10pt;color:black;font-family:Symbol"&gt;&lt;span style=""&gt;·&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;For non-service endpoints, Neuron uses adapters to communicate. Neuron supports several types of adapters.&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt 25.5pt;text-indent:-0.25in;line-height:normal;tab-stops:list 1.0in"&gt;&lt;span style="font-size:10pt;color:black;font-family:Symbol"&gt;&lt;span style=""&gt;·&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;When you have an endpoint that's neither a service nor has an existing adapter, you can consider wrapping the endpoint with a service, or writing a new adapter (writing a Neuron adapter is nowhere near the daunting task it is in many other products). There is also a .NET API for Neuron that can be helpful in new integrations.&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;Service support is extensive. You start by defining a service to Neuron. You can locate a service endpoint in a UDDI directory, import a service from its WSDL, or manually define the service as you prefer. You can specify any standard WCF binding or any custom binding you may have. You can use any of the &lt;a href="http://msdn.microsoft.com/en-us/library/ms730301.aspx"&gt;&lt;span style="color:white;text-decoration:none;text-underline:none"&gt;common WCF security scenarios&lt;/span&gt;&lt;/a&gt;, spanning transport security to message security to federated security.&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;Adapters supported include WCF LOB adapters, which are superseding the earlier family of BizTalk Adapters. There are already WCF LOB adapters for Oracle, SAP and Siebel available from Microsoft, and many more adapters are available or in development from a variety of sources. Neuron also supports its own .NET adapters, which have a simple interface and are easy to write. Adapters that come with Neuron include ActiveMQ, BizTalk RFID, eConnect (Great Plains), file, MSMQ, SharePoint Server, SMTP Email, SQL Server, and WebSphere MQ.&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;Anyone who's done a lot of enterprise integration in the EAI space knows that integration jobs can vary from the simple to the complex to the really difficult. We've put a lot into Neuron to make enterprise connectivity as simple and painless as possible, as often as possible.&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;b&gt;&lt;span style="font-size:12pt;color:black;font-family:'Arial','sans-serif'"&gt;The Inside of the Bus&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;The inside of the bus is concerned with interconnecting endpoints through publish-subscribe messaging. Each endpoint that connects to the bus is related to Neuron's internal publish-subscribe messaging model.&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;Every endpoint is mapped to a &lt;b&gt;party&lt;/b&gt;. A party is just a messasging node: we call a party that send messages a &lt;b&gt;publisher&lt;/b&gt;, and a party that receives messages a &lt;b&gt;subscriber&lt;/b&gt;. &lt;b&gt;Subscriptions&lt;/b&gt; link a party to one or more topics of interest. Finally, a &lt;b&gt;topic&lt;/b&gt; is a name for a business conversation. So, for example, you might have a publisher named OrderEntry and a subscriber named OrderProcessing, both subscribing to the topic Orders. When OrderEntry publishes a message over the topic Orders, OrderEntry receives a copy  of the message because it has a matching subscription. If additional parties want to know about orders, all they have to do is subscribe to the Orders topic. Publish-subscribe is extremely flexible, and Neuron allows you to add parties and change subscriptions live while the system is running.&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;What makes the communication happen? Neuron supports a varierty of Microsoft technologies to perform the communication, from WCF to BizTalk Server. You can also run a mix of technologies, such that different topics provide different qualities of service. More on that later.&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;The inside of the bus has another job, which is to provide &lt;b&gt;integration&lt;/b&gt; functions. While a message is en route between endpoints, the bus can apply pipelines of processing steps. Functions that can be performed include validating schema, transforming a message, executing rules, executing a workflow, performing additional messaging, and moving message data to/from persistent storage. Integration services are part of what it takes to mediate differences between endpoints: you might for example need to transform a message from one endpoint in order to make it intelligible to another endpoint. They also allow to apply business rules or workflows via the bus instead of having to make code changes to your business programs.&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;Integration functions can be provided by services. This modularity gives you the freedom to use any technology or product you wish to power them, and to change them out at any time. Not only can you use the rules engine, workflow engine, or transformation technology of your choice, but you can run more than one side by side.&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;b&gt;&lt;span style="font-size:12pt;color:black;font-family:'Arial','sans-serif'"&gt;Benefits&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;What does this design do for you? Why connect everything to the bus? What is the gain?&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt 25.5pt;text-indent:-0.25in;line-height:normal;tab-stops:list 1.0in"&gt;&lt;span style="font-size:10pt;color:black;font-family:Symbol"&gt;&lt;span style=""&gt;·&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;You can get programs that could never directly interact to work together through the bus.&lt;br&gt;&lt;i&gt;We call this mediation, and it's a faster and cheaper alternative to rewriting your apps.&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt 25.5pt;text-indent:-0.25in;line-height:normal;tab-stops:list 1.0in"&gt;&lt;span style="font-size:10pt;color:black;font-family:Symbol"&gt;&lt;span style=""&gt;·&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;You create additional value from your existing I.T. assets by extending their reach.&lt;br&gt;&lt;i&gt;CFOs really like getting new value from previous money spent.&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt 25.5pt;text-indent:-0.25in;line-height:normal;tab-stops:list 1.0in"&gt;&lt;span style="font-size:10pt;color:black;font-family:Symbol"&gt;&lt;span style=""&gt;·&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;Changes in routing between parties is now a painless configuration exercise instead of an application code change project.&lt;br&gt;&lt;i&gt;Easy change management makes I.T. and your entire organization more agile.&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt 25.5pt;text-indent:-0.25in;line-height:normal;tab-stops:list 1.0in"&gt;&lt;span style="font-size:10pt;color:black;font-family:Symbol"&gt;&lt;span style=""&gt;·&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;Business rules and workflows can be deployed externally to application code.&lt;br&gt;&lt;i&gt;And you can deploy them while running live, without having to schedule downtime or code changes.&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt 25.5pt;text-indent:-0.25in;line-height:normal;tab-stops:list 1.0in"&gt;&lt;span style="font-size:10pt;color:black;font-family:Symbol"&gt;&lt;span style=""&gt;·&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;Messages can be audited, checked for policy compliance, and replayed for disaster recovery.&lt;br&gt;&lt;i&gt;Make your enterprise more consistent. Replace a fragmented view of individual applications with an enterprise-wide view of activity. &lt;/i&gt;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt 25.5pt;text-indent:-0.25in;line-height:normal;tab-stops:list 1.0in"&gt;&lt;span style="font-size:10pt;color:black;font-family:Symbol"&gt;&lt;span style=""&gt;·&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;Patterns of messages can be linked to business events.&lt;br&gt;&lt;i&gt;Relate messaging to business events. Get real-time notification about what is transpiring in your organization. Feed BI and analysis tools with the information they need.&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt 25.5pt;text-indent:-0.25in;line-height:normal;tab-stops:list 1.0in"&gt;&lt;span style="font-size:10pt;color:black;font-family:Symbol"&gt;&lt;span style=""&gt;·&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;Accelerate SOA adoption.&lt;br&gt;&lt;i&gt;If you're serious about SOA, at some point you're going to realize that your business services need to be complemented by infrastructure services. Neuron ESB gives you a versatile set of infrastructure services (while preserving your right to use best of breed products to power them) along with a central repository and one-stop management experience.&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt;line-height:normal"&gt;&lt;span style="font-size:12pt;color:black;font-family:'Segoe UI','sans-serif'"&gt;There's another big benefit of the Neuron ESB architecture that I will be devoting a separate article to: it provides an abstraction layer for your enterprise architecture. This allows you to change the underlying technologies for communication and integration without being disruptive or forcing you to reinvent your architecture. More on that soon.&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'"&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt; &lt;/font&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+A+High+Level+View+of+the+Neuron+ESB+Architecture&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=davidpallmann.spaces.live.com&amp;amp;GT1=davidpallmann"&gt;</description><category>ESB</category><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!421.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!421.entry</guid><pubDate>Wed, 30 Apr 2008 19:19:11 GMT</pubDate><slash:comments>3</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!421/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!421.entry#comment</wfw:comment><dcterms:modified>2008-04-30T19:19:11Z</dcterms:modified></item><item><title>Neuron ESB 2.0 Released!</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!413.entry</link><description>&lt;div&gt;&lt;font face="Segoe UI" size=2&gt;&lt;em&gt;I've been guilty of not blogging for quite some time. No, I wasn't held hostage by terrorists... but close to it :) I and my fellow engineers have been heads-down, working around the clock to complete some very cool software--that I can now talk about. I'm very pleased to announce completion of Neuron ESB.&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Segoe UI" size=2&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;font face="Segoe UI" size=2&gt;Neudesic has &lt;/font&gt;&lt;a href="http://www.neuronesb.com/PR-20080429-NeudesicReleasesNeuronESB2-Final.pdf"&gt;&lt;u&gt;&lt;font face="Segoe UI" color="#800080" size=2&gt;released&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face="Segoe UI" size=2&gt; version 2.0 of its Enterprise Service Bus product, &lt;/font&gt;&lt;a href="http://www.neuronesb.com/"&gt;&lt;u&gt;&lt;font face="Segoe UI" color="#800080" size=2&gt;Neuron ESB&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face="Segoe UI" size=2&gt;. Neuron ESB is a full-featured ESB based on the Microsoft platform. It provides a sophisticated communication and integration backbone with easy change management and a one-stop administrative experience. Neuron combines the capabilities and best practices of the SOA and EAI disciplines using proven Microsoft technologies. Neuron ESB accelerates SOA adoption by providing the necessary infrastructure services to complement your business services. Neuron communicates equally well with non-services such as legacy systems and LOB applications via adapters. Intelligent routing interconnects endpoints using publish-subscribe messaging and a named topic hierarchy. Mediation brings together programs that otherwise could not interact due to differences in protocol, security model, or message format. Integration services provide EAI functionality such as schema validation, message transformation, auditing, rules engine processing, and workflow execution. Event-based processing includes real-time notifications, the ability to link message patterns to business events, and complex event processing. ESBs can be zoned by location or administrative control, and zones can be federated. Neuron ESB is suitable for solutions ranging from departmental scope to enterprise-wide, mission-critical applications that span wide geographies. &lt;/font&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style=""&gt;&lt;font face="Segoe UI" size=2&gt;&lt;em&gt;Now that Neuron ESB is released, you can expect plenty of blogging from me about ESBs in general, Neuron ESB in particular, and how real-world customer challenges are met. &lt;/em&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span style=""&gt;&lt;font face="Segoe UI" size=2&gt;&lt;em&gt;Have an ESB question? Interested in having someone come out and speak about ESBs? Drop me a note.&lt;/em&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+Neuron+ESB+2.0+Released!&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=davidpallmann.spaces.live.com&amp;amp;GT1=davidpallmann"&gt;</description><category>ESB</category><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!413.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!413.entry</guid><pubDate>Tue, 29 Apr 2008 22:34:10 GMT</pubDate><slash:comments>6</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!413/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!413.entry#comment</wfw:comment><dcterms:modified>2008-04-29T22:34:10Z</dcterms:modified></item><item><title>Buying a Piano (When Parenting Gets Pricey)</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!366.entry</link><description>&lt;div&gt;Our family is now the proud owner of a Yamaha T118 upright piano. It is a very nice piano for the money and I'm sure it will serve us well for years to come. &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;However, I am quite certain that I started the week with no plans or budget for a piano whatsoever, so how did this C&lt;em&gt;oup d'Wallet&lt;/em&gt; happen? The answer--and a warning to parents everywhere--is that my wife and I can only blame ourselves for planting the seeds of this expense two years ago, when we encouraged our oldest daughter to start taking piano lessons. You see, we encourage our children to try lots of things--it's important to find out early in life what interests you and where your special abilities are. When we started them on piano lessons, we of course didn't run out and buy a piano; a $400 electronic keyboard gives them something to practice on, and who knows how long they will stay at it?&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The problem is, the kids have come through. Not only is our oldest daughter doing well now in her second year, our younger daughter has also started piano and is advancing rapidly. And now they're getting into areas like pedaling technique, where an electronic keyboard just won't do anymore. Ka-Ching, time to buy a piano, no way around it. It's not like you can put it off till later.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;div&gt;There's a picture of a T118 below, though ours is polished mahogany, not black. &lt;/div&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;a href="http://byfiles.storage.live.com/y1pvhHyq8t_9gu3nd3bF2-X0u9-vvM1W0yjdDMGOYhfoJOsIYD8MtZSWpDFTcVTUoqP8NYxzEBZTmw" target="_blank"&gt;&lt;img height=200 alt="Yamaha T118 Piano" src="http://byfiles.storage.live.com/y1pvhHyq8t_9gu3nd3bF2-X0u9-vvM1W0yjdDMGOYhfoJOsIYD8MtZSWpDFTcVTUoqP8NYxzEBZTmw" width=219&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;As for how we ended up selecting this particular model, we simply decided not to chance a used piano or a questionable brand. Before we knew it we were walking into a local Yamaha dealer, armed with some knowledge of appropriate pricing from the Internet. As it turns out the prices were more than reasonable and no haggling was necessary. Although we knew we'd have to stay near the low end of the product line, we were hoping to get something sturdier than a &amp;quot;spinnet&amp;quot; beginner piano. The first model we saw was too spindly and fragile for our liking, but we knew we had found the right model when we came across the T118: while it's affordably priced, the outer woodwork is sturdy and attractive; and it's insides are near identical to the successful U line of Yamaha pianos that are often used in schools and colleges. It has a 10 year warranty, and if we decide down the road we need something different we can trade up.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;An unexpected side effect of ths purchase is that my wife and I keep drifting over to the piano to see what we can remember from our own piano lesson days. Perhaps we'll get back into it...&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+Buying+a+Piano+(When+Parenting+Gets+Pricey)&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=davidpallmann.spaces.live.com&amp;amp;GT1=davidpallmann"&gt;</description><category>Joys of Parenthood</category><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!366.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!366.entry</guid><pubDate>Mon, 10 Mar 2008 01:12:17 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!366/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!366.entry#comment</wfw:comment><dcterms:modified>2008-03-10T01:39:45Z</dcterms:modified></item><item><title>neuronesb.com</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!350.entry</link><description>&lt;div&gt;The Neuron ESB now has its own dedicated web site, &lt;a href="http://www.neuronesb.com"&gt;http://www.neuronesb.com&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;What's on the site? It's purpose is to provide easy access to:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Product information
&lt;li&gt;Vertical solutions
&lt;li&gt;News
&lt;li&gt;White papers
&lt;li&gt;Case studies and customer testimonials
&lt;li&gt;Support resources
&lt;li&gt;Discussion forum&lt;/ul&gt;
&lt;p&gt;Some of that content is up there now, and a lot more is on the way.
&lt;p&gt; 
&lt;p&gt; &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+neuronesb.com&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=davidpallmann.spaces.live.com&amp;amp;GT1=davidpallmann"&gt;</description><category>ESB</category><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!350.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!350.entry</guid><pubDate>Tue, 05 Feb 2008 16:14:55 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!350/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!350.entry#comment</wfw:comment><dcterms:modified>2008-02-05T16:14:55Z</dcterms:modified></item><item><title>WCF Security Hydra</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!345.entry</link><description>&lt;div&gt;The Hydra was the many-headed serpent of Greek mythology. I have created a &lt;strong&gt;WCF security hydra&lt;/strong&gt; by connecting 28 WCF services and clients that use each of &lt;a href="http://msdn2.microsoft.com/en-us/library/ms730301.aspx"&gt;the 14 common WCF security scenarios&lt;/a&gt; to the same Neuron ESB. All of the endpoints can operate at the same time, so the resemblance to the hydra is more than superficial. The bus can also mediate between endpoints, allowing clients and services of different security models to interact with each other (try &lt;em&gt;that&lt;/em&gt; without an ESB and you won't get very far).&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The scenarios are:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Internet unsecured
&lt;li&gt;Intranet unsecured
&lt;li&gt;Anonymous message security
&lt;li&gt;Certificate message security
&lt;li&gt;Issued Token (federated) message security
&lt;li&gt;Kerberos message security
&lt;li&gt;Mutual certificate message security
&lt;li&gt;Username message security
&lt;li&gt;Windows message security
&lt;li&gt;Anonymous transport security
&lt;li&gt;Basic transport security
&lt;li&gt;Certificate transport security
&lt;li&gt;Windows transport security
&lt;li&gt;Trusted subsytem&lt;/ul&gt;
&lt;p&gt;As anyone who has played with WCF knows, the security capabilities of WCF are extensive but can be a bit overwhelming to master. It definitely feels like a major accomplishment to reach this point. I can now confidently implement each of these scenarios using WCF configuration, using WCF code, or using Neuron's ESB Explorer UI settings. All of this shows how capable WCF is, especially when combined with the Neuron ESB.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+WCF+Security+Hydra&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=davidpallmann.spaces.live.com&amp;amp;GT1=davidpallmann"&gt;</description><category>ESB</category><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!345.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!345.entry</guid><pubDate>Tue, 29 Jan 2008 08:05:47 GMT</pubDate><slash:comments>3</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!345/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!345.entry#comment</wfw:comment><dcterms:modified>2008-01-29T08:05:47Z</dcterms:modified></item><item><title>Software Etudes and Code Kata</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!339.entry</link><description>&lt;div&gt;
&lt;div&gt;I just became familiar with the idea of &lt;a href="http://jamesshore.com/Blog/Etudes-for-Excellence.html"&gt;Software Etudes&lt;/a&gt; (James Shore) and &lt;a href="http://codekata.pragprog.com/2007/01/code_kata_one_s.html"&gt;Code Kata&lt;/a&gt; (Dave Thomas), thanks to Sam Gentile's blog. As soon as I read these postings I said &amp;quot;Of course! How obvious in hindsight!&amp;quot; to myself and immediately embraced the concept. I absolutely love the idea of repetive exercises for software developers that build strong basic skills.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The etude technique works really well in classical disciplines. If you've ever taken piano lessons, you probably remember etudes, repetitive exercises that do fun things like make you play without using a certain note in the scale. The most [in]famous etudes are by Czerny, Chopin, and Hanon. Some of these etudes are good music in their own right, others less appealing, but their purpose is to develop an area in you through repetitive exercise. For example, one etude might focus on improving your ability to play parallel octaves, whereas another might focus on rapid chromatic thirds. Vocal training also uses these kind if exercises. For example, a vocalist might use exercises which transcend high, medium, and low pitch ranges (which tend to resonate in the head, chest, or abdomen) and strive for a consistent tone.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Code Kata is essentially the same idea as software etudes, borrowing a term from Karate for exercises designed to develop discipline and skills.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I'm going to promote awareness of software etudes/code kata within my own organization. I think their use is critical on the path to becoming a Master Developer.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+Software+Etudes+and+Code+Kata&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=davidpallmann.spaces.live.com&amp;amp;GT1=davidpallmann"&gt;</description><category>Computers and Internet</category><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!339.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!339.entry</guid><pubDate>Tue, 22 Jan 2008 20:42:41 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!339/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!339.entry#comment</wfw:comment><dcterms:modified>2008-01-22T20:42:41Z</dcterms:modified></item><item><title>Transactions in the Real World (continued)</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!337.entry</link><description>&lt;div&gt;Previously I blogged about &lt;a href="http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!335.entry"&gt;my real-world experience with how transactions don't always work&lt;/a&gt;, where an ATM told me it couldn't give me $400 cash but happily debited my checking account anyway. This episode is all the more shocking because it had to do with banking. Banking! If transactions work &lt;em&gt;anywhere&lt;/em&gt;, surely it's in that context. Or so one would think.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;To continue the saga: to get the &amp;quot;compensation logic&amp;quot; going for my failed transaction, I sent my bank a message, explaining that the $402 debit was erroneous and why. I also mentioned that the $102 debit that followed was correct (the ATM had dispensed cash for that second attempt). I heard nothing for a few days, so I repeated my message. Finally, I received a response that an investigation would be requested of the bank that owns the ATM, and I would be getting a form in the mail, and I'd need to return it promptly. &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;So far the forms haven't come, but something more interesting has already occurred. In reviewing my online banking statement (something I now do almost daily given recent events), I saw my $402 had been credited back, provisionally, to my account. How nice. And right above that... a credit for $102 as well. Aaargh!!! The compensation logic had &lt;strong&gt;also&lt;/strong&gt; failed! The $102 transaction had been fine, whoever read my message didn't read it very carefully. Now I've been overpaid.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I'm pretty sure this is a sign that civilization as we know it is crumbling. Better start keeping your money in a mattress.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+Transactions+in+the+Real+World+(continued)&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=davidpallmann.spaces.live.com&amp;amp;GT1=davidpallmann"&gt;</description><category>Computers and Internet</category><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!337.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!337.entry</guid><pubDate>Sat, 22 Dec 2007 01:00:24 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://davidpallmann.spaces.live.com/blog/cns!E95EF9DC3FDB978E!337/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!337.entry#comment</wfw:comment><dcterms:modified>2007-12-22T01:00:24Z</dcterms:modified></item><item><title>Transactions in the Real World (or, how to lose $400)</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!335.entry</link><description>&lt;div&gt;No sooner did I embark on writing my first transacted resource manager than I was taught the importance of handling transactions in a very personal way!&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;A few days ago I attempted to withdraw $400 from my banking account (at a large, well-known bank) using the ATM of another large, well-known bank. The ATM informed me it was happy to accept my transaction if I agreed to a $2 charge, which I did. After the usual chugging and churning, the machine informed me the transaction could not be performed. &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Thinking I might have exceeded my daily ATM withdrawal limit, I tried again with the same machine, this time asking to withdraw only $100. Once again I acknowledged the $2 fee, and this time around the machine happily dispensed $100 to me. I merrily went on my way, not giving this exchange another thought.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;A few days later, I was reviewing my online banking statement and saw debits for $402 as well as $102 listed. My first (failed) transaction hadn't been a real transaction at all! I had neither received my cash, nor did the rollback take place. &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Given that both banks involved here are large and established (implying their I.T. people know what they are doing), and given that one of the reasons we have transaction technology at all is for financial institutions, this is doubly sad. Make that triply sad, since I am [at least temporarily] out $400.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;There is another kind of transaction that uses compensation logic instead of rollback. I'm currently awaiting a response to my inquiry about this incident, and we'll see if the &amp;quot;compensation logic&amp;quot; is at all satisfactory. If it isn't, I might have to apply my own compensation logic and change banks--though I must admit, I'm not sure which end is at fault.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I've long viewed transactions as important, but this experience does add perspective. I wonder how many other transactions we go through on a regular basis aren't working the way we assume?&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+Transactions+in+the+Real+World+(or%2c+how+to+lose+%24400)&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=davidpallmann.spaces.live.com&amp;amp;GT1=davidpallmann"&gt;</description><category>Computers and Internet</category><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!335.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!335.entry</guid><pubDate>Sun, 09 Dec 2007 23:08:54 GMT</pubDate><slash:comme