<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>UDDI</title>
        <link>http://geekswithblogs.net/EltonStoneman/category/8167.aspx</link>
        <description>UDDI</description>
        <language>en-GB</language>
        <copyright>EltonStoneman</copyright>
        <managingEditor>elton.stoneman@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>ESB Simple Samples on CodePlex</title>
            <link>http://geekswithblogs.net/EltonStoneman/archive/2008/05/26/esb-simple-samples-on-codeplex.aspx</link>
            <description>&lt;p&gt;I've finally uploaded my ESBSimpleSamples project to CodePlex here: &lt;a href="http://www.codeplex.com/ESBSimpleSamples"&gt;ESB Simple Samples&lt;/a&gt; 	&lt;/p&gt;
&lt;p&gt;It's intended as a quick-start for using the ESB Guidance package, and it has a client library for building strongly-typed service request objects. It has two very simple sample services which return the encoded value of a given character, either in ASCII or Unicode. The services are exposed as Web services and IIS-hosted WCF, and there's a WinForms client which lets you call them directly or via ESB.  &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Prerequisites &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To use the samples you'll need the following up and running: &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Visual Studio 2005 &lt;/li&gt;
    &lt;li&gt;BizTalk 2006 R2 &lt;/li&gt;
    &lt;li&gt;ESB Guidance package &lt;/li&gt;
    &lt;li&gt;ESB Guidance sample app ("GlobalBank" – this is only used to save me configuring a dynamic send/receive port) &lt;/li&gt;
    &lt;li&gt;UDDI services &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Deployment &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Nothing helpful in the project I'm afraid. I stripped out all the test and build artifacts before uploading, but you should only need to: &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Build &amp;amp; deploy the ESBSimpleSamples solution  &lt;/li&gt;
    &lt;li&gt;Create the Web services virtual directory in IIS (import settings from ESBSimpleSamples.Services.Web\Config\IISConfig.xml) &lt;/li&gt;
    &lt;li&gt;Add UDDI settings for the Web services (in ESBSimpleSamples.Services.Web\Config\UDDISettings.xml) &lt;/li&gt;
    &lt;li&gt;Create the WCF virtual directory in IIS (import settings from ESBSimpleSamples.Services.WCF\Config\IISConfig.xml) &lt;/li&gt;
    &lt;li&gt;Add UDDI settings for the WCF services (in ESBSimpleSamples.Services.WCF\Config\UDDISettings.xml) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You'll need to change the paths to the SNK file in the BizTalk project, and to the project outputs in the IISConfig files.  &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Running &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Run the WinForms client and you'll get this form: &lt;/p&gt;
&lt;p&gt;&lt;img src="http://geekswithblogs.net/images/geekswithblogs_net/EltonStoneman/052608_1755_ESBSimpleSa1.png" alt="" /&gt; 	&lt;/p&gt;
&lt;p&gt;You can check all is well with your deployment by calling the various services – with InProcess the client app instantiates service objects locally; Web and WCF call the services directly; ESB calls the Web service via ESB and ESB.WCF calls the WCF service via ESB. &lt;/p&gt;
&lt;p&gt;Any problems are likely to be config – if the services don't respond it'll be an IIS issue, and if the ESB calls don't respond it'll be UDDI (assuming your ESB Guidance is working for other calls). &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Architecture &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;On the service side, there's not much to it – the ServiceComponents project has the business logic and the Services.Web and Services.WCF projects wrap access to the ServiceComponents. The BizTalk project holds the Request and Response schemas which are the same for the Web and WCF services – BizTalk owns the contracts. &lt;/p&gt;
&lt;p&gt;The WinForms client uses generated code for the Web service and WCF calls (using VS 2005 Extensions for WCF). For the ESB call there are simple DTO entities for Request and Response objects, matching the schemas (note these are handwritten rather than use the clunky output from XSD.exe – they'd be codegened from very plain templates in a real project). The ServiceRequest classes wrap usage of ESB, and expose the typed DTOs so the client is abstracted from the message bus: &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;         ServiceRequests.&lt;span style="color: teal;"&gt;GetASCIICode&lt;/span&gt; esbASCII = &lt;span style="color: blue;"&gt;new&lt;/span&gt; ServiceRequests.&lt;span style="color: teal;"&gt;GetASCIICode&lt;/span&gt;(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;            esbASCII.Request.Character = &lt;span style="color: maroon;"&gt;"a"&lt;/span&gt;; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] code = esbASCII.Response.GetASCIICodeResult; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The interesting stuff is all in the ServiceClient project. There's a generated proxy for the ESB.ItineraryServices.Response Web service; the ResolverConnection and ItineraryBuilder classes make life much easier for building itineraries in code. ESBServiceRequest is the base class for clients to build their typed requests – child classes specify the Request and Response types and only need code to prepare the request, specifying the service steps they want: &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: blue;"&gt;public&lt;/span&gt; 			&lt;span style="color: blue;"&gt;class&lt;/span&gt; 			&lt;span style="color: teal;"&gt;GetASCIICode&lt;/span&gt; : &lt;span style="color: teal;"&gt;ESBServiceRequest&lt;/span&gt;&amp;lt;&lt;span style="color: teal;"&gt;GetASCIICodeRequest&lt;/span&gt;, &lt;span style="color: teal;"&gt;GetASCIICodeResponse&lt;/span&gt;&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;    { &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: blue;"&gt;public&lt;/span&gt; 			&lt;span style="color: blue;"&gt;override&lt;/span&gt; 			&lt;span style="color: teal;"&gt;ItineraryRequest&lt;/span&gt; PrepareRequest() &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;        { &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: teal;"&gt;ItineraryBuilder&lt;/span&gt; builder = &lt;span style="color: blue;"&gt;new&lt;/span&gt; 			&lt;span style="color: teal;"&gt;ItineraryBuilder&lt;/span&gt;(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;            builder.AddRoutingService(&lt;span style="color: maroon;"&gt;"ESBSimpleSamples"&lt;/span&gt;, &lt;span style="color: maroon;"&gt;"GetASCIICode"&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;            builder.AddRequestResponseService(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: teal;"&gt;ItineraryRequest&lt;/span&gt; request = &lt;span style="color: blue;"&gt;new&lt;/span&gt; 			&lt;span style="color: teal;"&gt;ItineraryRequest&lt;/span&gt;(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;            request.Header = builder.GetItinerary(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;            request.Body = &lt;span style="color: blue;"&gt;this&lt;/span&gt;.GetRequestBody(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: blue;"&gt;return&lt;/span&gt; request; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;        } &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;    } &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;  &lt;br /&gt;
In the samples project, UDDI is the chosen resolver so &lt;strong&gt;AddRoutingService&lt;/strong&gt; builds up a UDDI resolver connection for the specified service. When the &lt;strong&gt;Response&lt;/strong&gt; property is accessed, the base class calls for the request to be prepared, sends it to the broker and caches the response. &lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
The ESBSimpleSamples should make the learning curve for ESB Guidance a bit shallower, and the ServiceClient library is one approach you can take for consumers. With this library most of the code is abstracted and the specifics for services can easily be codegened. From a published service, the schema, Request and Response entities, ServiceRequest class, ServiceRequest unit tests and UDDI settings can all be generated. Even if there are no .Net consumers for a service, being able to generate all this and have unit tests verifying the service response should be useful. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122395"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122395" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/EltonStoneman/aggbug/122395.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>EltonStoneman</dc:creator>
            <guid>http://geekswithblogs.net/EltonStoneman/archive/2008/05/26/esb-simple-samples-on-codeplex.aspx</guid>
            <pubDate>Mon, 26 May 2008 23:55:16 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/EltonStoneman/comments/122395.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/EltonStoneman/archive/2008/05/26/esb-simple-samples-on-codeplex.aspx#feedback</comments>
            <slash:comments>12</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/EltonStoneman/comments/commentRss/122395.aspx</wfw:commentRss>
        </item>
        <item>
            <title>UDDI Service Resolution</title>
            <link>http://geekswithblogs.net/EltonStoneman/archive/2008/05/25/uddi-service-resolution.aspx</link>
            <description>&lt;p&gt;A couple of points worth noting when using UDDI Services in Windows 2003 as a repository, and the ESB Guidance UDDI Resolver: &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;The UDDI Resolver checks Service Providers and Services in a culture-specific manner. In the UDDI Services Web interface, the culture defaults to en-US, whereas the Resolver picks up the current system culture. So if you're running under en-GB it won't find entries set with en-US, or with the root "en", it must be an exact match. &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;When it finds a match, the Resolver caches it using a timeout policy. The timeout is configured in Microsoft.Practices.ESB.PipelineComponents.config and defaults to 600 seconds: &lt;/div&gt;
    &lt;p style="margin-left: 36pt;"&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;ESBProcessor&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
    &lt;p style="margin-left: 36pt;"&gt;&lt;span style="color: blue; font-family: Courier New; font-size: 10pt;"&gt;    … &lt;/span&gt;&lt;/p&gt;
    &lt;p style="margin-left: 36pt;"&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;Cache&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
    &lt;p style="margin-left: 36pt;"&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;       &amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;add&lt;/span&gt;&lt;span style="color: blue;"&gt; 					&lt;/span&gt;&lt;span style="color: red;"&gt;key&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;UDDI&lt;/span&gt;"&lt;span style="color: blue;"&gt; 					&lt;/span&gt;&lt;span style="color: red;"&gt;value&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;600&lt;/span&gt;"&lt;span style="color: blue;"&gt; /&amp;gt;&lt;/span&gt; 				&lt;/span&gt;&lt;/p&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;UDDI allows you to have multiple names for one service so you can have aliases, and also multiple services with the same name. There's no versioning of services out of the box with ESB Guidance, but you could have multiple UDDI entries with the same service name and a custom binding to indicate the version. An extended resolver would check the version and consumers could then request a specific version, or default to the latest version.&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;The W2k3 Resource Kit has a tool for exporting UDDI config settings, but this also exports the unique service key. Manually entering UDDI config is brittle and time consuming; there's an SDK which makes life easier, so we're looking at an MSBuild task which creates the UDDI entry as part of the deployment.&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 				&lt;/span&gt;&lt;/div&gt;
    &lt;p&gt;  &lt;/p&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you add itineraries and service resolution as abstractions, you lose the single endpoint for consumer discovery. In the ESB model, a new consumer will need to know the format of the itinerary header and the contract for the  service provider which will form the body of the request. It would be good to centralise client developer access to the repository, so users can navigate the repository, read the descriptions and get generated usage – WSDL for the header and the body, sample XML itinerary message, generated entities for request/response etc. This is  a tool in our growing TODO list…&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122376"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122376" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/EltonStoneman/aggbug/122376.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>EltonStoneman</dc:creator>
            <guid>http://geekswithblogs.net/EltonStoneman/archive/2008/05/25/uddi-service-resolution.aspx</guid>
            <pubDate>Sun, 25 May 2008 18:25:30 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/EltonStoneman/comments/122376.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/EltonStoneman/archive/2008/05/25/uddi-service-resolution.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/EltonStoneman/comments/commentRss/122376.aspx</wfw:commentRss>
        </item>
        <item>
            <title>ESB Guidance – UDDI Resolver</title>
            <link>http://geekswithblogs.net/EltonStoneman/archive/2008/04/29/esb-guidance--uddi-resolver.aspx</link>
            <description>&lt;p&gt;So far the examples I've shown have been using STATIC resolvers. These are easy to set up and for quick samples have the benefit that all the connection settings are visible in the resolver config in the itinerary. They're brittle though and for real-world use it's obviously a limitation to hard-code the service settings on the consumer side. &lt;/p&gt;
&lt;p&gt;ESB Guidance offers various resolvers, but UDDI seems the most attractive for dynamically resolving service implementations.  &lt;span style="font-size: 10pt;"&gt;UDDI (Universal Description, Discovery and Integration) is a standard for registering services in a central repository. It provides a structured way to store and discover Service Providers, Services and Bindings. Initially, UDDI registries were intended for public publishing of commercial services, but Windows Server 2003 includes UDDI Services, allowing registries to be used internally within organisations. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;In UDDI terms, Services are registered under a Service Provider – this may be an organisation providing a set of services, or internally it can be used identify an internal system. This provides a grouping of like services and the provider's contact information can be used for the technical owner, or other point of contact.  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;Services in UDDI are method endpoints, &lt;/span&gt;typically &lt;span style="font-size: 10pt;"&gt;a Web service action. Service names are not constrained to be unique within a provider, and there is no intermediate grouping, so a naming convention may be needed to group services within a provider. It may also be necessary to include versioning in the service name. While UDDI allows you two have two services with the same name but different target namespaces (so the namespace could be used for versioning), the ESB resolver only uses the service name. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;Each service has a set of bindings, representing the necessary connection data to use the service. There are standard bindings (e.g. http to specify endpoint address), but they are configurable so can include any amount of information. In ESB each component of the resolver connection string (TransportLocation, TransformType etc.) is stored as a binding. The resolver finds the UDDI service from the registry and brings back all the connection settings you would manually specify in the STATIC connection string. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;The UDDI resolver requires the location of the registry, and the name of the Service Provider and Service. The static resolver config from the previous post would look like this using UDDI: &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;Resolvers&lt;/span&gt;&lt;span style="color: blue;"&gt; 			&lt;/span&gt;&lt;span style="color: red;"&gt;serviceId&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Microsoft.Practices.ESB.Services.Routing1&lt;/span&gt;"&lt;span style="color: blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt; 			&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;amp;lt;&lt;/span&gt;![CDATA[ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;     UDDI:\\serverUrl=http://localhost/uddi; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;     serviceProvider="ESBSimpleSamples; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;     serviceName=EncodingService.GetASCIICode; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;    ]]&lt;span style="color: red;"&gt;&amp;amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;  &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;Resolvers&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt; 	&lt;/p&gt;
&lt;p&gt;Note that the service name is arbitrary. The convention here identifies the action with the owning Web service which may be useful for Service Providers which  have large numbers of services registered. &lt;/p&gt;
&lt;p&gt;The UDDI resolver caches hits to the UDDI service for a configurable lifetime. The obvious trade off is between performance and flexibility, so an extension option may be to provide an external method for invalidating the ESB cache. A custom deployment step could update the UDDI registry with a new/updated service then fire a message to ESB Guidance to invalidate the cache. &lt;/p&gt;
&lt;p&gt;There's not much cost involved in using UDDI, and the publishing step could be an automated part of deployment. It requires a UDDI repository to be available to dev and other environments, and naming standards need to be considered, but the advantage comes in decoupling consumers and the ESB from the actual service implementations. Swapping out a service in live is as straightforward as deploying the new service and updating the registry. In an SOA world, the registry also forms the central point of knowledge about the systems and services available for consumption &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121764"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121764" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/EltonStoneman/aggbug/121764.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>EltonStoneman</dc:creator>
            <guid>http://geekswithblogs.net/EltonStoneman/archive/2008/04/29/esb-guidance--uddi-resolver.aspx</guid>
            <pubDate>Wed, 30 Apr 2008 01:17:51 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/EltonStoneman/comments/121764.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/EltonStoneman/archive/2008/04/29/esb-guidance--uddi-resolver.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/EltonStoneman/comments/commentRss/121764.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>