<?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%2fcategory%2fESB%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: ESB</title><description /><link>http://davidpallmann.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catESB</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><cf:parentRSS>http://davidpallmann.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>-1630591290702063730</live:id><live:alias>davidpallmann</live:alias></live:identity><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>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><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><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><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>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><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><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><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><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>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><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><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>ESBs: Physically Decentralized, Logically Centralized</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!277.entry</link><description>&lt;div&gt;A characteristicsof ESBs is that they are &lt;u&gt;physically decentralized&lt;/u&gt; but &lt;u&gt;logically centralized&lt;/u&gt;. What exactly does this mean? To some this may sound like a contradiction.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;This simply means that a bus is &lt;em&gt;physically&lt;/em&gt; more like the point-to-point architecture (spread out, no hub) but &lt;em&gt;functionally&lt;/em&gt; more like the hub-and-spoke architecture (pub-sub messaging, centralized configuration and activity tracking, easy change management).&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Envision a football team. The players are dispersed over the playing field, but they are executing on a common game plan. Although the players are physically distributed, their actions are in concert. And taking out one player doesn't kill the team.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;An ESB has servers that contain infrastructure services, but there is no hub and no single point of failure. Each application connects to the bus through a lightweight client container which interacts with the infrastructure services to perform messaging and integration functions. For those who find this explanation insufficiently technical, understand that there's more than one way to build an ESB. Just as you could use a variety of technologies to build a point-to-point architecture (WCF? .NET Remoting? CORBA?) or a hub-and-spoke architecture (BizTalk? JMS?), there's more than one way to build a bus. &lt;a href="http://www.neudesic.com/Main.aspx?SS=7&amp;amp;PE=75"&gt;Here's how we do it &lt;/a&gt;in Neuron, our Microsoft-based ESB.&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+ESBs%3a+Physically+Decentralized%2c+Logically+Centralized&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><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!277.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!277.entry</guid><pubDate>Sat, 20 Oct 2007 02:44:33 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!277/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!277.entry#comment</wfw:comment><dcterms:modified>2007-10-20T02:44:33Z</dcterms:modified></item><item><title>The Infrastructure Controversy</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!266.entry</link><description>&lt;div&gt;As hot debates rage over SOA / ESB / REST, the central controversy seems to boil down to a fairly simple question: how much infrastructure is appropriate in an enterprise for communication and integration?&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Not only is the question simple, but there are really only 3 possible positions to take and they align with 3 different architectures.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;1. No Infrastructure / Point-to-Point architecture&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;2. A Dominant Infrastructure / Hub-and-Spoke architecture &lt;/div&gt;&lt;/div&gt;
&lt;div&gt;3. A Thin Infrastructure / Bus architecture &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Even though I believe approach #3 works best most often in an enterprise setting, I'll freely admit there's a place for all 3 approaches. Let's look at the consequenecs of choosing each of these approaches.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;The No Infrastructure / Point-to-Point Approach&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;In this approach applications are directly connected to each other. Using SOA best practices and WS-* compatible technologies like WCF, it's fairly easy to create solutions. &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Con: You only have point-to-point communication. There's no intelligent routing. Your applications are not loosely coupled, they're tightly coupled.&lt;/div&gt;
&lt;div&gt;Con: You have no integration facilities. What happens when you need to introduce a transformation between systems to accomomdate a versioning issue?&lt;/div&gt;
&lt;div&gt;Con: There's no facility for change management. Making any kind of change, such as adding a new application to the mix or, always forces you to make code changes to one or more of your existing applications.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The bottom line: This model works okay at a limited level, such as a departmental solution, if your needs are high on communication and low on integration. But it's far too limited and rigid to use at enterprise scale. &lt;strong&gt;Change management is hard, not easy&lt;/strong&gt;.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;The Dominant Infrastructure / Hub-and-Spoke Approach&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;In this approach you likely have a major product at the center of a hub-and-spoke architecture. The product at the hub does a lot of nice things for you, such as intelligent routing, transformation of messages, application of rules, and orchestrated business processing. Change management is significantly easier.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Con: The hub can be a single point of failure.&lt;/div&gt;
&lt;div&gt;Con: The hub can be a congestion point (bottleneck).&lt;/div&gt;
&lt;div&gt;Con: The hub tends to be a large, complex software product. This goes against the SOA trend towards small, distibuted software.&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;Con: You are probably eternally tied to a proprietary commercial product. Your freedom of choice is severely curtailed.&lt;/div&gt;
&lt;div&gt;Con: Moreover, you have to hire people who specialize in the EAI product.&lt;/div&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The bottom line: This model is a big improvement over point-to-point, but overly thick and centralized infrastructures are going out of style. &lt;strong&gt;The days where a customer standardizes on a single product for EAI functions like transformations, rules engine, workflow, integration etc. are over&lt;/strong&gt;. Customers want granular freedom of choice about the platforms and products they use to power EAI functions, and the ability to change their minds. They certainly don't want to be forcibly chained to any particular product.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;The Thin Infrastructure / Bus Approach&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;In this approach you have a thin infrastructure that is physically distributed but logically centralized, and it grows as your needs grow. Business endpoints connect to the bus through lightweight software containers instead of talking to a hub. EAI functionality is provided through integration services, and each service can be powered by any platform/technology/product the customer chooses. For example, a customer could power a transformation service with BizTalk and power a Rules Engine service with some other product. Change management is very easy. &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The bottom line: This approach avoids the two extremes of no infrastructure and too much infrastructure, and preserves customer freedom of choice to change out product(s) while the architecture remains constant.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Con: ESBs are new, and often misunderstood. I genuinely believe the reason many people are arguing against ESBs is that they confuse them with the hub-and-spoke product-centric approach.&lt;/div&gt;
&lt;div&gt;Con: Some commercial ESBs violate their own principles and tie you to an expensive product. Obviously these are to be avoided.&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+The+Infrastructure+Controversy&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><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!266.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!266.entry</guid><pubDate>Fri, 05 Oct 2007 17:32:36 GMT</pubDate><slash:comments>16</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!266/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!266.entry#comment</wfw:comment><dcterms:modified>2007-10-05T17:37:02Z</dcterms:modified></item><item><title>ESB: Appendix or Skeleton?</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!255.entry</link><description>&lt;div&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="color:#1f497d"&gt;&lt;font face=Arial color="#000000" size=2&gt;Is an ESB about as useful as a human appendix? &lt;/font&gt;&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&lt;font face=Arial color="#000000" size=2&gt;A recent ZDNet article, &lt;/font&gt;&lt;a href="http://blogs.zdnet.com/service-oriented/?p=945"&gt;&lt;font face=Arial color="#002060" size=2&gt;ESB: Useless as a Human Appendix?&lt;/font&gt;&lt;/a&gt;&lt;font face=Arial color="#000000" size=2&gt;&lt;strong&gt;,&lt;/strong&gt; quotes an &lt;font color="#002060"&gt;article by &lt;/font&gt;&lt;/font&gt;&lt;a href="http://www.ibm.com/developerworks/webservices/library/ws-soa-esbarch/index.html?ca=drs-"&gt;&lt;font face=Arial color="#002060" size=2&gt;Bobby Woolf&lt;/font&gt;&lt;/a&gt;&lt;font face=Arial color="#000000" size=2&gt; that raises this question. &lt;/font&gt;&lt;/span&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="color:#1f497d"&gt;&lt;font face=Arial color="#7f7f7f" size=2&gt;&lt;font color="#3f3f3f"&gt;&amp;quot;ESB-oriented architecture is inherently flawed in that it builds connectivity no one might ever want to use. The business does not derive additional value until systems connect to each other and are working together. Until then, the ESB is just cost with no benefit. It might make the IT department feel good because they have built something, but it will not make the business feel any better, because the business is not accomplishing anything it couldn’t have already accomplished without the ESB. &lt;strong&gt;The ESB becomes the equivalent of a human appendix&lt;/strong&gt; for the IT department, a vestigial organ within the topology of deployed applications&lt;/font&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;font face=Arial color="#000000" size=2&gt;The point being made in the article is &lt;u&gt;not&lt;/u&gt; that ESBs are worthless, but that they shouldn't be built for their own sake. In other words, infrastructure should be built when it is needed, not because it might be needed someday.&lt;/font&gt;
&lt;p&gt;&lt;font face=Arial color="#000000" size=2&gt;I think most people would generally agree with this sentiment. Moreover, there's nothing special about &amp;quot;ESB&amp;quot; in this thought. It has always been a wise practice to build infrastructure you need, not infrastructure you might need. Unfortunately, many ESBs (and ESB-wannabes) are compromised of fat products where you either get everything or nothing. That's a sign of providing ESB capabilities without the right architecture to go with it.&lt;/font&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;&lt;font face=Arial&gt;&lt;font size=2&gt;&lt;font color="#000000"&gt;A good ESB design gives you a &lt;u&gt;thinfrastructure&lt;/u&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:'Calibri','sans-serif'"&gt;™&lt;/span&gt; that you expand with more functionality when you need capabilities like transformation, a rules engine, or adapters. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&lt;font face=Arial&gt;&lt;font size=2&gt;&lt;font color="#000000"&gt;In the case of the Neuron ESB, you add the heavy hitters (rules service, BAM service, transformation service, management auditing, etc..) as you have need for them, in the form of new services. Nothing forces them on a customer in advance, or necessarily ever. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;&lt;font face=Arial&gt;&lt;font size=2&gt;&lt;font color="#000000"&gt;A properly designed ESB isn’t an appendix. It’s the skeleton.&lt;/font&gt;&lt;/font&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+ESB%3a+Appendix+or+Skeleton%3f&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><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!255.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!255.entry</guid><pubDate>Mon, 17 Sep 2007 15:55:14 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!255/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!255.entry#comment</wfw:comment><dcterms:modified>2007-09-17T15:55:14Z</dcterms:modified></item><item><title>The ESB as a Business Eventing System</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!224.entry</link><description>&lt;div&gt;In explaining the Enterprise Service Bus to audiences, I often make the point that an ESB is cross-discipline, drawing the best ideas from SOA, EAI, MOM, and EDA. Often, SOA and EAI receive the most attention in these discussions because the people I'm takling to have extensive backgrounds in one or the other. Today, I'd like to focus specifically on the Event Driven Architecture (EDA) aspect of an ESB. One of the most exciting things an ESB gives you is a business-wide eventing system.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Events are a simple idea, which makes them convenient for technical and non-technical people alike. When learning how a business works, business owners, managers, and analysts will often naturally describe business proceses in terms of events and who-does-what in response to those events. Events are doubly nice because they can be technically implemented very simply, as messages.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;In an ESB, mapping an event model to how programs interact is a snap. All programs communicate through publish-subscribe topics. For example, an Order Entry program may produce orders, which are sent over the ESB on the topic &amp;quot;orders.new&amp;quot;. An Order Processing service receives orders because it has a subscription to &amp;quot;orders.new&amp;quot; or perhaps &amp;quot;orders.*&amp;quot;. With a sufficiently granular hierarchy of topic names, it's usually very straightforward to map an event-oriented discussion of business processing to a publish-subscribe model. When more than simple sequencing is needed, orchestration is added to the mix to provide deluxe worfklow and transaction control.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Too often in our industry, when business requirements gathering gives way to technical design and implementation, something gets &amp;quot;lost in translation&amp;quot; and the result is not quite what was intended. This is where the ESB and publish-subscribe gets exciting, because the same model that was used to describe the business non-technically is maintained throughout design and implementation. That is, when everything is said and done the programs in the enterprise are communicating by signaling events over logical business topics, still using the same eventing model that was originally described by the business owners. Keeping the same eventing model from requirements gathering to implementation avoids much of the &amp;quot;lost in translation&amp;quot; problem. And that's a big improvement over the past.&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+The+ESB+as+a+Business+Eventing+System&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><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!224.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!224.entry</guid><pubDate>Sat, 10 Mar 2007 20:54:07 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!224/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!224.entry#comment</wfw:comment><dcterms:modified>2007-03-10T20:54:07Z</dcterms:modified></item><item><title>ESB presentation at So. Cal Architecture User Group</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!223.entry</link><description>&lt;div&gt;Last week I presented on ESB to the Southern California .NET Architecture User Group which met in Santa Ana. About 40 people were present and we had some great discussions. This is a group of very intelligent people.&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+ESB+presentation+at+So.+Cal+Architecture+User+Group&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><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!223.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!223.entry</guid><pubDate>Fri, 23 Feb 2007 00:56:19 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!223/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!223.entry#comment</wfw:comment><dcterms:modified>2007-02-23T00:56:19Z</dcterms:modified></item><item><title>Making the Case for ESB: Architecturally</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!219.entry</link><description>&lt;div&gt;The industry continues to debate whether or not it likes the Enterprise Service Bus (ESB) concept. As an ESB advocate, I think the case for an ESB can be made on several levels. Today, I'd like to focus on why the ESB makes sense architecturally.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Figure 1 shows some comparative architectures. Let's consider the first two.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Point to Point&lt;/strong&gt; architectures (Figure 1, left) started getting a bad name in the last decade. If each system in your enterprise needs to connect to most/all of the other systems in your enterprise, you soon encounter the &amp;quot;n squared&amp;quot; problem where the addition of each new system increasingly adds to your integration and management costs. It's difficult to configure and manage systems in a point-to-point architecture, or to ensure that policies are enforced across the enterprise. 
&lt;li&gt;&lt;strong&gt;Hub and Spoke&lt;/strong&gt; architectures (Figure 2, center) integrate everything to a central hub. With centralized configuration, a reduced number of integration points, and centralized tracking, hub-and-spoke is a big improvement over point-to-point architectures. But hub-and-spoke is now falling into disfavor: the hub is undesirable because it can be a single point of failure, because it can be a congestion point, and because it typically ends up being a very complex piece of software that may also tie you eternally to a single EAI product.&lt;/ul&gt;
&lt;div&gt;It would seem, then, that a point-to-point architecture is overly decentralized while a hub-and-spoke architecture is overly centralized. There's another option, but many people seem unwilling to shift from what they're used to. Many EAI people cling to hub-and-spoke, perhaps because their preferred server products are designed around this architecture and it's all they're familiar with. Many SOA people seem to be suggesting that we go back to point-to-point architectures, but don't explain how the classic problems of point-to-point will be resolved.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;p&gt;&lt;img src="http://tkfiles.storage.msn.com/x1pTep_x_MO7tC98hoLHOQLlUinOuR4atCYIVa8wC7lgrdoSKoyz0c2F9JL3wEaUuGk5vNlhr7MttQN3RPaa-2aJ16U1IDKcyXUwqVSfkJVYjc"&gt; 
&lt;p&gt;Let's examine an alternative architecture, the bus architecture. The idea of the bus architecture is simple but profound: &lt;strong&gt;logically centralized, physically decentralized&lt;/strong&gt;. In other words, the parts that make up the system are distributed, but they cooperatively implement what looks, feels, and acts like a centralized system. This is analogous to how a football team works: the players are spread out over the playing field, but they're working together to execute a common game plan. 
&lt;p&gt;In an ESB, the &lt;strong&gt;bus architecture&lt;/strong&gt; (Figure 1, right) provides a set of infrastructure services that provide essential services such as intelligent routing, security, mediation, and configuration. These infrastructure services can be physically distributed but work together to enforce the enterprise's processes and policies. Connected to the infrastructure services are business endpoints and integration endpoints. Business endpoints are business programs, accessed either directly as services or through adapter mechanisms. Integration endpoints provide EAI functionality such as transformations, orchestrations, and rules engines; they are applied to messages en route between business endpoints. 
&lt;p&gt;The ESB is consistent with SOA principles. Use of services is highly encouraged. All parts of the ESB are loosely coupled. Business, integration, and infrastructure endpoints are interconnected using SOAP and WS-* standards. The ESB complements all of this with added functionality such as publish-subscribe routing and centralized management. 
&lt;p&gt;The ESB is consistent with EAI principles. Native applications and legacy systems are full participants in the ESB, through the use of service wrappers and/or integration adapters. Messages can be routed by topical pub-sub,  by payload type (schema), or by content. Transformations provide the expected type of message for every endpoint. Orchestrations provide transacted business process execution. The ESB provides all of this with added value such as a distributed architecture and the ability to choose and combine best-of-breed products. 
&lt;p&gt;Ultimately, an ESB is about providing a great deal of additional value through the use of infrastructure services that complement your business services. This should not really seem like a new or unusual idea, as we're already used to having infrastructure systems in our enterprises (domain controllers and active directory servers, for example). 
&lt;p&gt;The ESB is not only an architecture that makes a lot of sense, it has a long-term appeal. The ability to switch out underlying implementations of services means an ESB architecture is tolerant of changes in technology over time. Yet, some ESB opponents have concluded just the opposite and argue that the ESB is a temporary phenomenon that will not be needed once additional service standards are developed. To me, that seems as likely as having football teams without coaches and orchestras without conductors. 
&lt;p&gt; &lt;div&gt;&lt;table cellspacing="0" border="0"&gt;&lt;tr height="8"&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;p&gt;&lt;a href="http://tkfiles.storage.live.com&amp;#47;y1pU-5Pi91-mIe_981iCjb-e9mWj_c6c0X7EnYltK7oNsXoQ72TSCW6qw"&gt;&lt;img src="http://storage.live.com&amp;#47;items&amp;#47;E95EF9DC3FDB978E&amp;#33;220&amp;#58;thumbnail" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="15"&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;p&gt;&lt;a href="http://tkfiles.storage.live.com&amp;#47;y1pGYKGj5yzI2Iq4MbKrBq-C3nQuds6MqrpKJWJdzu980mCQvpsjza-5Q"&gt;&lt;img src="http://storage.live.com&amp;#47;items&amp;#47;E95EF9DC3FDB978E&amp;#33;221&amp;#58;thumbnail" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="15"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+Making+the+Case+for+ESB%3a+Architecturally&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><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!219.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!219.entry</guid><pubDate>Tue, 26 Dec 2006 18:38:26 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!219/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!219.entry#comment</wfw:comment><dcterms:modified>2007-08-20T23:42:59Z</dcterms:modified></item><item><title>In Search of Publish-Subscribe</title><link>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!214.entry</link><description>&lt;div&gt;For most of the last year I've been working on an exciting project, one major component of which requires publish-subscribe communication. Pub-sub continues to grow in popularity because it offers many benefits: &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;The connections between applications are loosely coupled.
&lt;li&gt;Applications no longer need to know the addresses of other applications.
&lt;li&gt;Routing of information is determined by central configuration rather than details embedded in application code, and is easily changed.
&lt;li&gt;New applications can easily be hooked in to a system simply by creating a new subscription for them.&lt;/ul&gt;
&lt;p&gt;For all these reasons and more, we at Neudesic have been considering the best way to accomplish Publish-Subscribe in the Microsoft world. To find the best way, you have to begin by evaluating your options. These are the options we looked at:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;BizTalk Server&lt;/strong&gt; does have a pub-sub mechanism at the core of its messaging engine, but it's not a general-purpose pub-sub communication facility that .NET applications can get at or use. Its main purpose is to connect senders and receivers with the BizTalk message box across one or more servers. 
&lt;li&gt;&lt;strong&gt;WCF&lt;/strong&gt; doesn't ship with any specific support for publish-subscribe, though we might expect to see something along those lines in the future. However, there is &lt;strong&gt;WCF PeerChannel&lt;/strong&gt;, which creates a multi-party cloud or mesh. Any message sent to the cloud goes to all parties. Since you can set up as many clouds as you wish, you could have one cloud per topic. WCF PeerChannel has some attractive features, including low latency (fast) communication and the ability to scale up to 10s of 1000's of nodes without requiring an investment in server infrastructure. However, the information is not transacted or durable and there are no delivery assurances.
&lt;li&gt;&lt;strong&gt;MSMQ&lt;/strong&gt; seemed to be leaning toward a pub-sub set of features in its past but information on this is hard to come by lately. There is MSMQ over UDP, which broadcasts messages to large numbers of recipients. In the enterprises I've worked with where this is in use, the loss rate is often considered unacceptably high. Alternatively, you could make use of MSMQ queues--since most pub-sub systems are based on queues--and use custom code to move messages between queues.
&lt;li&gt;&lt;strong&gt;SQL Server&lt;/strong&gt; could be used as a message repository if you were going to build your own durable publish-subscribe system. SQL Server 2005 also offers communication features through its Service Broker including its own message queue facility. But you'd certainly be writing a lot of custom code to publish and receive messages and to move messages between queues.
&lt;li&gt;&lt;strong&gt;WS-Eventing&lt;/strong&gt; is a standard that allows differnet messaging systems to subscribe to each others messages using web services as a way to receive messages. This standard describes the mechanisms of requesting and managing subscriptions, but doesn't spell out how pub-sub itself should be implemented.&lt;/ul&gt;
&lt;p&gt;In trying to determine which of the above is &amp;quot;best&amp;quot;, it became clear that each possibibility possesses some unique capabilities that some enterprises might find important. For example, the speed, reliability, durability, and recovery story for each of the above varies. Moreover, enterprises vary in which technologies they have invested in, so a BizTalk solution might be most attractive for one enterprise but less attractive to another.
&lt;p&gt;Our decision was to support &lt;strong&gt;all&lt;/strong&gt; of these methods of publish-subscribe with an abstracted interface that can perform the same messaging capabilities across any of them. You can read about how we did this in our &lt;em&gt;ESB White Paper&lt;/em&gt; (&lt;a href="http://www.neudesic.com/media/Neudesic - Cyclone ESB White Paper (P1-v1.01).pdf"&gt;part1&lt;/a&gt;, &lt;a href="http://www.neudesic.com/media/Neudesic - Cyclone ESB White Paper (P2-v1.00).pdf"&gt;part2&lt;/a&gt;). The benefits of this approach are many:
&lt;ul&gt;
&lt;li&gt;Customers can take advantage of the technologies and products they have an existing investment in
&lt;li&gt;Customers can run several different qualities of service in parallel
&lt;li&gt;The modular driver approach makes it straightforward to graft in new technologies as they become available&lt;/ul&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-1630591290702063730&amp;page=RSS%3a+In+Search+of+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><comments>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!214.entry#comment</comments><guid isPermaLink="true">http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!214.entry</guid><pubDate>Wed, 04 Oct 2006 18:19:32 GMT</pubDate><slash:comments>4</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!214/comments/feed.rss</wfw:commentRss><wfw:comment>http://davidpallmann.spaces.live.com/Blog/cns!E95EF9DC3FDB978E!214.entry#comment</wfw:comment><dcterms:modified>2006-10-07T07:06:25Z</dcterms:modified></item></channel></rss>