<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-20828154</id><updated>2024-03-23T11:03:41.729-07:00</updated><category term="soa ESB"/><category term="soa mSA"/><category term="soap SOA"/><title type='text'>Technology Thoughts</title><subtitle type='html'>Thoughts, ideas, experiences, insights, predictions, opinions and whatever I think of about Information Technologies.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://javicamara.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default?alt=atom'/><link rel='alternate' type='text/html' href='http://javicamara.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Javier Cámara</name><uri>http://www.blogger.com/profile/02188211322927440796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-20828154.post-7643432068416303254</id><published>2007-02-11T11:38:00.000-08:00</published><updated>2007-02-11T11:35:32.985-08:00</updated><title type='text'>Against the usage of &quot;logical&quot; and &quot;phisical&quot;</title><content type='html'>Once upon a time, the terms &quot;logical&quot; and &quot;physical&quot; meant something absolute, at least in specific contexts inside IT. In databases, the physical layer was the actual files and other containers of data, while the logical one was the fields and records immediately on top of them. In networks, the physical layer was the actual wire, and logical referred to the protocol governing the actual bits sent over it.&lt;br /&gt;&lt;br /&gt;But nowadays, when there are so many layers in any IT system, the terms physical and logical have lost these absolute position and have only a &lt;b&gt;relative&lt;/b&gt; meaning. &lt;b&gt;Logical means just &quot;less detailed&quot;&lt;/b&gt;, (i.e. abstracting some details out), and &lt;b&gt;physical&lt;/b&gt; means just &lt;strong&gt;&quot;more detailed&quot;&lt;/strong&gt; (i.e. with more concrete details). Nowadays, something termed as logical (or physical) in a context is just the physical (or logical) layer of another context.&lt;br /&gt;&lt;br /&gt;Thus, when any of these is used without a reference (e.g. &quot;the logical layer&quot; or &quot;a physical diagram&quot;), in many cases the communication is difficulted because the person saying them may have one idea of what they mean, while the others may well have a different one. Then, misunderstanding comes and also time wasted realizing it and trying to sort it out.&lt;br /&gt;&lt;br /&gt;Because of this I advocate to either using them only in a relative way (e.g. &quot;this is a logical view of this&quot;), or even better not to use them at all, and using instead other clearer terms.</content><link rel='replies' type='application/atom+xml' href='http://javicamara.blogspot.com/feeds/7643432068416303254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/20828154/7643432068416303254' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/7643432068416303254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/7643432068416303254'/><link rel='alternate' type='text/html' href='http://javicamara.blogspot.com/2007/02/against-usage-of-logical-and-phisical.html' title='Against the usage of &quot;logical&quot; and &quot;phisical&quot;'/><author><name>Javier Cámara</name><uri>http://www.blogger.com/profile/02188211322927440796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20828154.post-4101047940562715389</id><published>2006-11-28T03:51:00.000-08:00</published><updated>2006-11-28T03:54:03.366-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="soap SOA"/><title type='text'>soapUI: a very good tool for invoking and testing web services</title><content type='html'>Today I have known of a very good open source tool to work with SOAP web services: &lt;a href=&quot;http://www.soapui.org/&quot;&gt;soapUI&lt;/a&gt;. It isa kind of small IDE which allows to define web services out of its WSDL, generate sample requests,send them to the services (including attachments), perform functional or load testing, WS-I validations,and other operations from other tools it integrates with, like TCPMon, Axis, GSoap or .Net, likegenerating stubs and deployment descriptors.&lt;br /&gt;&lt;br /&gt;I would have liked to know it before, but it is better late than never. More information: &lt;a href=&quot;http://www.soapui.org/&quot;&gt;http://www.soapui.org/&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://javicamara.blogspot.com/feeds/4101047940562715389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/20828154/4101047940562715389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/4101047940562715389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/4101047940562715389'/><link rel='alternate' type='text/html' href='http://javicamara.blogspot.com/2006/11/soapui-very-good-tool-for-invoking-and.html' title='soapUI: a very good tool for invoking and testing web services'/><author><name>Javier Cámara</name><uri>http://www.blogger.com/profile/02188211322927440796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20828154.post-1279277009208569382</id><published>2006-11-15T08:58:00.000-08:00</published><updated>2006-11-15T09:08:05.261-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="soa mSA"/><title type='text'>BEA microService Architecture (mSA)</title><content type='html'>When I saw the &lt;a href=&quot;http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;articleId=9003447&quot;&gt;announcement of the future SOA 360 product initiative&lt;/a&gt; from BEA I focused on the Workspace 360 idea, which sounds nice (I think the SOA killer application will be something allowing Excel-capable users to compose applications and services). But I overlooked the &lt;a href=&quot;http://del.icio.us/jcamara/mSA&quot;&gt;&lt;strong&gt;microService Architecture&lt;/strong&gt; (mSA)&lt;/a&gt;. And it looks very interesting, too.&lt;br /&gt;&lt;br /&gt;For start, it seems to be a SOA not based on a central ESB, as popular in software vendors and as it was now with BEA. It looks more like Jini, but based in OSGi. It is a federation of containers of small services, which discover and communicate between them dynamically. It seems to follow the view of SOA as a galaxy of free services, instead of having them orbiting around a central broker. They talk about &quot;infrastructure services&quot; providing composite service capabilities, but this does not look like a central ESB anyway.&lt;br /&gt;&lt;br /&gt;The services are Java or bound with Java, but I guess they will be able to interoperate with others at least by WS-* . mSA seems mostly protocol-agnostic, so it should support both WS-* and other (I do not see the point of being more abstract than WS-*, but OK, many people does).&lt;br /&gt;&lt;br /&gt;I am curious to see which will be the method to discover services, and how will they handle the actual communication. We&#39;ll see.</content><link rel='replies' type='application/atom+xml' href='http://javicamara.blogspot.com/feeds/1279277009208569382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/20828154/1279277009208569382' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/1279277009208569382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/1279277009208569382'/><link rel='alternate' type='text/html' href='http://javicamara.blogspot.com/2006/11/bea-microservice-architecture-msa.html' title='BEA microService Architecture (mSA)'/><author><name>Javier Cámara</name><uri>http://www.blogger.com/profile/02188211322927440796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20828154.post-116289430278780810</id><published>2006-11-07T01:59:00.000-08:00</published><updated>2006-11-14T07:38:44.440-08:00</updated><title type='text'>The different levels of Service-Oriented Architectures</title><content type='html'>Yesterday I sent a message to the &lt;a href=&quot;http://groups.yahoo.com/group/service-orientated-architecture/&quot;&gt;Service-Orientated-Architecture group&lt;/a&gt; of which I am still fond of, so I think it is worth to be published also here.&lt;br /&gt;&lt;br /&gt;Key to any SOA is the &lt;strong&gt;Service Model&lt;/strong&gt; - i.e. which services exist, what for, and which interfaces do they have. Indeed this is what most often is called &quot;architectural design&quot;, which is key to the success of any information system, assigning responsabilities to parts of the system.&lt;br /&gt;&lt;br /&gt;But to really have a running system these services must be deployed into something, which completes the &lt;strong&gt;architecture&lt;/strong&gt;. And also SOA is more than the services; it is also the infrastructure surrounding them.&lt;br /&gt;&lt;br /&gt;Without a defined architectural framework there is no real interoperability, which is the basis of the reuse, agility et al touted for SOAs. To make services work you need of some infrastructure for things like discovery, communications (both synchronous and otherwise), management, etc. I.e. the gap originally addressed by SOAP, WSDL and UDDI and being now incrementally filled by WS-*. For SOAs not based on web services, similar things must exist first in order to lay the ground for reuse in practice.&lt;br /&gt;&lt;br /&gt;I think there are three levels of architectural detail in any SOA:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The &lt;strong&gt;basic one &lt;/strong&gt;shared by every SOA, i.e.: there are &lt;strong&gt;services&lt;/strong&gt; (implementing the business/domain &lt;strong&gt;functionality without user interface&lt;/strong&gt;) and &lt;strong&gt;applications&lt;/strong&gt; (without business/domain functionality at all, but with &lt;strong&gt;user interface&lt;/strong&gt;).&lt;br /&gt;&lt;br /&gt;I think there is a general agreement at least about these basics, although there may be still discussions on whether applications and services can invoke other services, or this is allowed only to ESBs (which would then be the third element of the basic architecture, of course). Or whether there is a need of a directory (e.g. UDDI) in order to consumers to locate services.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The level addressed by the assorted Reference Architectures used nowadays by different software vendors, involving elements like &quot;legacy services&quot;, &quot;service buses&quot; or &quot;registries&quot;. There is some degree of convergence here but no consensus yet, at all.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The concrete architecture of a particular running SOA which details what and which are these legacy services, buses or whatever, if any.&lt;/li&gt;&lt;/ol&gt;To have a running SOA you must first make a decision about the three levels, and this is architecture, because Service Models do not execute.</content><link rel='replies' type='application/atom+xml' href='http://javicamara.blogspot.com/feeds/116289430278780810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/20828154/116289430278780810' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/116289430278780810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/116289430278780810'/><link rel='alternate' type='text/html' href='http://javicamara.blogspot.com/2006/11/different-levels-of-service-oriented.html' title='The different levels of Service-Oriented Architectures'/><author><name>Javier Cámara</name><uri>http://www.blogger.com/profile/02188211322927440796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20828154.post-116249019841831268</id><published>2006-11-02T09:50:00.000-08:00</published><updated>2006-11-14T07:38:44.281-08:00</updated><title type='text'>IBM has abandoned UDDI</title><content type='html'>One of the original proposers of UDDI, has in fact abandoned it. I have read in IBM people blogs that UDDI will be superseded. In the some 5 papers I have seen about its upcoming Websphere Registry and Repository, I have seen no mention of it. And this later &lt;a href=&quot;http://www-128.ibm.com/developerworks/webservices/library/specification/ws-servregrep/&quot;&gt;paper about &quot;Web service standards for Service Registry and Repository&quot;&lt;/a&gt; confirms this: they mention UDDI, but only as some kind of legacy technology than, if cannot be superseded, has to be kept along with the Service Registry and Repository.&lt;br /&gt;&lt;br /&gt;I do not know what happened to UDDI. Since the start, very few people used it. I agree in that it has several clumsy things and several other things that have yet to be added to it, but I think it deserved better destiny.&lt;br /&gt;&lt;br /&gt;Now that I come to it, while UDDI was for service registries, WebDAV was for document repositories and it has come to a similar fate. Few people use it and many loath it.&lt;br /&gt;&lt;br /&gt;At any rate, some standard way of accessing a registry and repository is badly needed in SOAs, and I reckon also for a service WWW. So something will come up, I guess. We&#39;ll see.</content><link rel='replies' type='application/atom+xml' href='http://javicamara.blogspot.com/feeds/116249019841831268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/20828154/116249019841831268' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/116249019841831268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/116249019841831268'/><link rel='alternate' type='text/html' href='http://javicamara.blogspot.com/2006/11/ibm-has-abandoned-uddi.html' title='IBM has abandoned UDDI'/><author><name>Javier Cámara</name><uri>http://www.blogger.com/profile/02188211322927440796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20828154.post-116231545919455097</id><published>2006-10-31T09:19:00.000-08:00</published><updated>2006-11-14T07:38:44.112-08:00</updated><title type='text'>The legacy ESB</title><content type='html'>3-5 years in the future from now on, many companies who thought that they bought a SOA by buying an ESB will be faced with the issue of buying some new infrastructure, maybe a new ESB, packed with new features. But they won&#39;t want to replace their old one, full of cranky old orchestrations who nobody in the corporation does any more how were done and that nobody want to touch because they just work...&lt;br /&gt;&lt;br /&gt;Then the company will realize that they will have a &lt;strong&gt;legacy ESB&lt;/strong&gt;. And if they buy something new, it will run just as fine, being integrated in the new infrastructure. Hopefully they will learn, then, that the ESB is not the center of a SOA at all, but just another provider of services, just as so many other things in a SOA.&lt;br /&gt;&lt;br /&gt;The typical three-tier SOA (legacy-orchestration-frontend) is not a reference Service-Oriented Architecture; it is just a &lt;strong&gt;way of building integration services / applications&lt;/strong&gt;.</content><link rel='replies' type='application/atom+xml' href='http://javicamara.blogspot.com/feeds/116231545919455097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/20828154/116231545919455097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/116231545919455097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/116231545919455097'/><link rel='alternate' type='text/html' href='http://javicamara.blogspot.com/2006/10/legacy-esb.html' title='The legacy ESB'/><author><name>Javier Cámara</name><uri>http://www.blogger.com/profile/02188211322927440796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20828154.post-116012604197535397</id><published>2006-10-06T02:09:00.000-07:00</published><updated>2006-11-14T07:38:43.952-08:00</updated><title type='text'>SOA and reuse</title><content type='html'>There seems to be a debate about the true extent of reuse in SOAs. E.g. &lt;a href=&quot;http://www.davidchappell.com/blog/&quot;&gt;David Chappel&lt;/a&gt;, &lt;a href=&quot;http://blogs.zdnet.com/service-oriented/wp-trackback.php?p=720&quot;&gt;Joe McKendrick&lt;/a&gt;, or &lt;a href=&quot;http://theobeack.typepad.com/technology/2006/10/soa_reuse_conte.html&quot;&gt;Theo Beack&lt;/a&gt; have blogged about it.&lt;br /&gt;&lt;br /&gt;I think that inside an organization reuse is perfectly possible, because in many cases there is only a single context. E.g. inside of a company there should be room for only one logic for a Purchase_Order_service.&lt;br /&gt;&lt;br /&gt;The problem for reuse is across a large market of organizations, or for larger organizations with different context. E.g. to be able to buy a &quot;generic&quot; Purchase_Order_service and adapt it for your context.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://theobeack.typepad.com/technology/2006/10/soa_reuse_conte.html&quot;&gt;Theo Beack&lt;/a&gt; says that &lt;i&gt;&quot;the context should be elevated to the process layer and NOT encapsulated within the service&quot;&lt;/i&gt;. But I think this would result in services doing tasks of very limited usefulness, since the actually valuable business logic would be inside business processes, which would create the context by linking services. One can envision these business processes being traded across companies (the context changing thanks to using different services), but I think there is not yet a framework for this. But one for services is emerging, so it may be better to use it.&lt;br /&gt;&lt;br /&gt;I think that the key to reuse may be to factor out funcionality as much as possible: create many small services doing concrete things, and relying themselves on other small services. Then all these small services can have a particular implementation inside a particular context. E.g. Purchase_Order_service would rely on Product, Customer, Invoicing etc services which would be specific for the context of an organization. Interface-oriented design is key to this.&lt;br /&gt;&lt;br /&gt;This would make services to depend on other services, resulting in more thigt-coupled services, but in exchange they would deliver much more business value than isolated services.</content><link rel='replies' type='application/atom+xml' href='http://javicamara.blogspot.com/feeds/116012604197535397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/20828154/116012604197535397' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/116012604197535397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/116012604197535397'/><link rel='alternate' type='text/html' href='http://javicamara.blogspot.com/2006/10/soa-and-reuse.html' title='SOA and reuse'/><author><name>Javier Cámara</name><uri>http://www.blogger.com/profile/02188211322927440796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20828154.post-115995858846762554</id><published>2006-10-04T03:40:00.000-07:00</published><updated>2006-11-14T07:38:43.785-08:00</updated><title type='text'>About the SCA and SDO</title><content type='html'>During some months now, many software vendors lead by IBM have been involved in the &lt;a href=&quot;http://www.osoa.org&quot;&gt;SCA&lt;/a&gt; initiative (well it is actually Open SOA, whose two main pillars are SCA - Service Component Architecture and SDO - Service Data Objects).&lt;br /&gt;&lt;br /&gt;As far as I understand it, the intention of SCA is to create a standard environment (APIs, models, containers) in which services of a SOA can run and interoperate, no matter which implementation or platform they have, or even which type of components they use, since it aims to integrate Java objects, EJBs, C++, or whatever. This is, it is sort of a standard, vendor-neutral middleware for creating services; the specification of a SOA platform which every vendor can then implement.&lt;br /&gt;&lt;br /&gt;For its part, SDO aims to create a standard way for service implementations to access any kind of data, from RDMBS to XDBMS through web services.&lt;br /&gt;&lt;br /&gt;So all in all to me it seems much like J2EE: allow both to create distributed components and access data. Of course, not limited to Java or even to a single networking protocol, but for every platform.&lt;br /&gt;&lt;br /&gt;When I first saw the creation of the initiative I thought that this was just a rebranding of proprietary IBM technologies (things called SCA and SDO had been available at IBM for some time before that). Well it seems something like that, only that hopefully it will be truly open. Although I can guess that IBM, being the inventor, will have much advantage in its implementations on the rest of the consortium. But who knows.&lt;br /&gt;&lt;br /&gt;At any rate, I still do not see the point of SCA. For me, the platform that allows for interoperability of every kind of software component in any implementation or platform is &lt;b&gt;web services&lt;/b&gt;. SCA should allow to have interoperable services other than web services, but I think that WS-* is enough and that there is no need of any more.&lt;br /&gt;&lt;br /&gt;But we will see, since the success of these initiatives rely on the end upon who supports them (e.g. it does not matter you like CORBA more than SOAP, since SOAP is supported by every vendor), and Open SOA has an impressive list of them (BEA, Oracle, TIBCO, Sun and several others). However, they happen to be only Java vendors: Microsoft is not there. And if SCA will not properly supported in Microsoft platforms, it means that it will not be interoperable enough, as WS-* is.</content><link rel='replies' type='application/atom+xml' href='http://javicamara.blogspot.com/feeds/115995858846762554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/20828154/115995858846762554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/115995858846762554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/115995858846762554'/><link rel='alternate' type='text/html' href='http://javicamara.blogspot.com/2006/10/about-sca-and-sdo.html' title='About the SCA and SDO'/><author><name>Javier Cámara</name><uri>http://www.blogger.com/profile/02188211322927440796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20828154.post-115987658298312161</id><published>2006-10-03T04:55:00.000-07:00</published><updated>2007-02-07T04:57:47.558-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="soa ESB"/><title type='text'>The ESB and the SOA</title><content type='html'>&lt;small&gt;&lt;i&gt;(I am replacing this post, because the original one was too obscure and not even me really understood it after some time of having written it. So I hope the new version transmits better which I think has to be the role of an ESB in a SOA.)&lt;/i&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;ESBs are, for one thing, a fuzzy category of &lt;b&gt;middleware products&lt;/b&gt; with a large variety of capabilities. From these capabilities, I think there are two that ESBs are well suited to perform:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Managed &lt;b&gt;communications&lt;/b&gt;, including support for different protocols, asynchronous and publish/subscribe communications, and reliable communications (in general, anything that is not supported by the communication stacks available in the consumers or the services).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Orchestration&lt;/b&gt;, which includes message routing, transformation, aggregation and creation of composite services.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;These capabilities are needed in many SOAs, and I think ESBs are a good way to implement them.&lt;br /&gt;&lt;br /&gt;ESB products usually perform other capabilities like &lt;b&gt;monitoring, security, logging or endpoint management&lt;/b&gt;. These other capabilities are useful only if the ESB mediates in every consumer-service interaction, because otherwise you need also of additional mechanisms different than the ESB.&lt;br /&gt;&lt;br /&gt;This is the other meaning of the word ESB: an &lt;b&gt;architectural pattern&lt;/b&gt; in which the SOA has three main type of elements: services, service consumers, and the ESB, which is an element independent from the other two and which is the neccessary mediator in any interaction between the other two. To me, to call a product an ESB it must allow to implement this pattern, and this is why I do not see the IONA middleware, which is agent-based and not an independent element, as an ESB.&lt;br /&gt;&lt;br /&gt;I think the ESB pattern makes sense in some kind of SOAs (more on that later), but I consider that &lt;strong&gt;saying that every SOA has to follow this pattern is plainly wrong&lt;/strong&gt;. A Service-Oriented Architecture is a way to structure an IT system so that as most logic as possible is implemented in services which can be freely consumed by any other element of the SOA, as long as it knows the service description (mainly, its interface). This vision does not need a intermediate element like an ESB to make these interaction possible, and thus requiring it is just misleading.&lt;br /&gt;&lt;br /&gt;As I said, to use an ESB to implement the latter capabilities requires not only the ESB product but also to follow the ESB pattern, but not every SOA has to implement this pattern. If your architecture follows the ESB pattern you can well use the ESB to implement these, but your architecture may not follow that pattern, and thus an ESB would not be useful to implement these capabilities and you will have to use other solution to implement them. However, for the two first capabilities (communications and orchestration), an ESB may be useful in any kind of SOA.&lt;br /&gt;&lt;br /&gt;So I am not against the ESB product per se, but more against the ESB pattern being mandatory. I think the ESB pattern makes sense in some cases, but it is not the only way of doing SOAs. Indeed, for many SOAs it is a wrong pattern.&lt;br /&gt;&lt;br /&gt;The ESB pattern is actually an &lt;b&gt;integration pattern&lt;/b&gt;. The more diverse sources to integrate you have, and the simpler they are, the more useful is the ESB pattern. The extreme ESB pattern requires very basic services which are fully decoupled, i.e. which are never consumers of other service. Then, you integrate them using the ESB, and after that you can have other consumers leveraging the integrated set. Of course, this happens to be the same as the EAI pattern, in which you have existing systems you want to integrate. This is not casual, because ESB products are actually an evolution of EAIs.&lt;br /&gt;&lt;br /&gt;But, &lt;strong&gt;while an EAI is a solution for integration and only for integration, SOAs are more than this&lt;/strong&gt;. For example, if you do not have existing systems to integrate (e.g. a new distributed system is created from scratch), an EAI product would be useless. But a SOA would still make full sense, because SOA is just a way to structure functionality inside of a IT system by means of services.&lt;br /&gt;&lt;br /&gt;This is a common mistake: &lt;b&gt;many people think that the main value, even the only value of SOA is integration. This is wrong.&lt;/b&gt; SOA is more than that. Of course services are a good way to expose the functionality of systems to be integrated, but this is not the only usefulness of services. Besides integration, services are useful as a mean to split functionality in bits and then &lt;b&gt;reuse&lt;/b&gt; it.&lt;br /&gt;&lt;br /&gt;These people sees Service-Oriented Architecture as an integration architecture, and this is why they see that the only way to create a SOA is by means of the ESB pattern. But this is one flavor of SOA, not all of SOA.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thus, I see ESBs as a good means to implement managed communications and orchestration when you need them, which is often. This is, if the interaction between consumer A and service B needs managed communications, it is OK to put an ESB in the middle. If you have three services C, D and E and they are often used jointly in a coordinated way, it is perfectly good to use an ESB to create service F which would orchestrate them. If you have service G with an interface but you have consumer H which expects another interface, is is fine to use an ESB to implement H&#39;s interface and transform it into G&#39;s interface. And so on. Of course you can use also other methods than ESB for that, but ESBs are just fine.&lt;br /&gt;&lt;br /&gt;But if you want to log all the messages going through your SOA, or enforce security polices for consumers and services, or monitor activity, or be able to change the location of your services without broking the SOA, an ESB is useful only if you follow the ESB pattern, which may well not suite your SOA. If you have an integration-intensive SOA it may be the best option to follow, but otherwise it is better you look for other ways of implementing these, because it could be negative to force your SOA to follow the ESB pattern.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The bottom line&lt;/b&gt;: I see perfectly sound to use an ESB to implement managed communications and orchestration in any kind of SOA. But for other capabilities like monitoring or security, unless the ESB pattern suites your SOA I would rather recommend using other kind of solution, like agent-based middleware or just SOA communication libraries. The more integration needs you have, the more useful is an ESB to implement your SOA.&lt;br /&gt;&lt;br /&gt;I think the ESB frenzy is temporary and that eventually everybody will see things this way. But there has been people saying similar things since 2004, and still the ESB is commonly presented as the king of the SOA. However, the implementation of larger and more complex SOAs, and the growing importance of governance and registries and its usage at runtime, may displace the focus from the ESB and change this perception.</content><link rel='replies' type='application/atom+xml' href='http://javicamara.blogspot.com/feeds/115987658298312161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/20828154/115987658298312161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/115987658298312161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/115987658298312161'/><link rel='alternate' type='text/html' href='http://javicamara.blogspot.com/2006/10/soa-and-esb-1-orchestration.html' title='The ESB and the SOA'/><author><name>Javier Cámara</name><uri>http://www.blogger.com/profile/02188211322927440796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20828154.post-115946918745282107</id><published>2006-09-28T11:42:00.000-07:00</published><updated>2006-11-14T07:38:43.323-08:00</updated><title type='text'>I am not alone in my view of ESBs</title><content type='html'>... or at least this is what I think. Today I have subscribed to the &lt;a href=&quot;http://blogs.iona.com/newcomer/&quot;&gt;blog of IONA CTO Eric Newcomer&lt;/a&gt;, and I have found a &lt;a href=&quot;http://blogs.iona.com/newcomer/archives/000269.html&quot;&gt;post about &quot;The ESB question&quot;&lt;/a&gt; that makes me believe so: IONA sells a distributed agent infrastructure instead of a big clunky ESB.&lt;br /&gt;&lt;br /&gt;This makes me very happy, because every time I discuss with people about ESBs I end up with the feeling that I am the only one thinking that, while ESBs perform some useful features, the current concept of putting the ESB as the heart of the SOA is wrong.&lt;br /&gt;&lt;br /&gt;From some weeks I have had a pending task of writing a series of posts dissecting and detailing this opinion. I hope some day I will. But besides I will also collect these kind of opinions close to mine, even if it serves only to raise my morale a little.&lt;br /&gt;&lt;br /&gt;So I am keeping a list of articles that argue against, or at least put into doubt, the assumption that an ESB lies in the hearth of every SOA: &lt;a href=&quot;http://del.icio.us/jcamara/ESB!%3DSOA&quot;&gt;http://del.icio.us/jcamara/ESB!%3DSOA&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://javicamara.blogspot.com/feeds/115946918745282107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/20828154/115946918745282107' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/115946918745282107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/115946918745282107'/><link rel='alternate' type='text/html' href='http://javicamara.blogspot.com/2006/09/i-am-not-alone-in-my-view-of-esbs.html' title='I am not alone in my view of ESBs'/><author><name>Javier Cámara</name><uri>http://www.blogger.com/profile/02188211322927440796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20828154.post-115528449570544094</id><published>2006-08-11T01:10:00.000-07:00</published><updated>2006-11-14T07:38:43.139-08:00</updated><title type='text'>Windows XP taskbar not showing up</title><content type='html'>This is a practical post to document a Windows XP problem a friend of mine has had. I did not found the solution in Google and thus it should be useful to put it somewhere.&lt;br /&gt;&lt;br /&gt;This friend called me because when logging into Windows XP, just the wallpaper was shown: no taskbar or icons appeared. I told her to run &quot;explorer.exe&quot; from the task manager, but the taskbar just flashed in and out. One thing however: before executing anything from the task manager, an error dialog telling something about some Google file missing was shown.&lt;br /&gt;&lt;br /&gt;We opened regedit and looked for Google and found the UninstallString of Google desktop and ran it. Apparently the deinstallation succeeded and the error dialog disappeared, but the taskbar still won&#39;t show up.&lt;br /&gt;&lt;br /&gt;I end up going to my friend&#39;s home and trying deinstalling more things (&quot;XP Styles&quot;, an antivirus), deactivating shell extensions, running Ad-Aware, using &lt;a href=&quot;http://www.sysinternals.com/Utilities/ProcessExplorer.html&quot;&gt;Process Explorer&lt;/a&gt; and &lt;a href=&quot;http://www.sysinternals.com/Utilities/Filemon.html&quot;&gt;FileMon&lt;/a&gt; and &lt;a href=&quot;http://www.sysinternals.com/Utilities/Regmon.html&quot;&gt;RegMon&lt;/a&gt;, restoring XP to an older saved state, and nothing worked.&lt;br /&gt;&lt;br /&gt;Just before resorting to repariring the XP, I thought of looking back to the original Google desktop problem. I intended to delete any traces of the Google desktop directory and reinstalling it again, but in these directories I already found &quot;GoogleDesktopSetup.exe&quot;. I ran it, rebooted (or maybe just logged out and in again), and there was the taskbar.&lt;br /&gt;&lt;br /&gt;So Google desktop broke somehow (have no idea of how) and after that Explorer did not start properly, even though Google desktop seemed to have been deinstalled, and the problem was not fixed until Google desktop was installed again. A pity that a so well-famed company as Google causes that kind of problems. I hate when something fails without saying anything about it.&lt;br /&gt;&lt;br /&gt;Hope this helps somebody</content><link rel='replies' type='application/atom+xml' href='http://javicamara.blogspot.com/feeds/115528449570544094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/20828154/115528449570544094' title='64 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/115528449570544094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/115528449570544094'/><link rel='alternate' type='text/html' href='http://javicamara.blogspot.com/2006/08/windows-xp-taskbar-not-showing-up.html' title='Windows XP taskbar not showing up'/><author><name>Javier Cámara</name><uri>http://www.blogger.com/profile/02188211322927440796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>64</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20828154.post-113801468342852708</id><published>2006-01-20T03:10:00.000-08:00</published><updated>2006-11-14T07:38:42.960-08:00</updated><title type='text'>Are Semantic Web Services the next step?</title><content type='html'>&lt;small&gt;&lt;i&gt;(Originally published at &lt;a href=&quot;http://jcamara.theblog.net/a?title=are_semantic_web_services_the_next_step&amp;more=1&amp;c=1&amp;tb=1&amp;pb=1&quot;&gt;TheBlog&lt;/a&gt; on January 20, 2006)&lt;/i&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;(This is a reply to the article &lt;i&gt;&lt;a href=&quot;http://www-128.ibm.com/developerworks/blogs/dw_blog_comments.jspa?blog=486&amp;amp;entry=104490&amp;amp;ca=dnw-702&quot;&gt;Is it time for SOA developers to start thinking about semantics?&lt;/a&gt;&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;I have some experience with SOA and web services, and also have looked a little into the world of semantic web services. And to summarize my position: I am very much skeptic about the latter.&lt;br /&gt;&lt;br /&gt;SOA is a new wave of traditional computing that works or, at least, is clearly viable. &quot;Traditional&quot; means that it relies in humans programming machines mainly using procedural approaches like Java or activity/flow diagrams. Non-IT, Domain users are increasingly able to do so.&lt;br /&gt;&lt;br /&gt;Semantic Web Services (SWS) is the new incarnation of symbolic Artificial Intelligence agents. They have been there since several decades ago. Each time a new computing wave appears, the symbolic AI people come in saying &quot;hey this is good but it would be superb if you put semantics on top of it&quot;. The high level approach is always the same: use declarative programming not to tell the computer &lt;i&gt;how&lt;/i&gt; to do something, but &lt;i&gt;what&lt;/i&gt; it has to do.&lt;br /&gt;&lt;br /&gt;The underlying technology is irrelevant to this; it is just the same whether they are using dumb terminals, client-server, web applications, or a SOA. It is so irrelevant that the SWS world is a bold new one. You have to start learning tons of things about ontologies, description logics, planning and many other things that, while may be useful in many respects, are usually very far away from the actual, day to day needs of real Domain users of computers. And, you know, resources, experience and tools about it are far, far less aboundant and with far less quality than with standard computing. And once you spent months learning v(or trying to learn) it, then you try to apply it to the real computing, and you find that the world happens to be much more complex than theoricists think it is. (In particular, you find that declarative programming is in general more complex than procedural one, to which does not help the much worse tools and support). &lt;br /&gt;&lt;br /&gt;For until now, the result of these semantic attemps is always the same: much promises, and very little deliverance. In the meanwhile, the rest of the computer industry goes on doing useful things and creating new waves, and the symbolic AI people remain entrenched in their ivory tower, attending to events and figthing themselves. For, did I talked about a single world of semantic web services? Sorry! Telling people behind &lt;a href=&quot;http://www.daml.org/services/owl-s/1.0/&quot;&gt;OWL-S&lt;/a&gt; (mainly from US) that they are just the same as people behind &lt;a href=&quot;http://www.wsmo.org/&quot;&gt;WSMO&lt;/a&gt; (mainly europeans) I think is an outrage to them. If you attend a presentation of one of them, they will tell you that &quot;the other approach&quot; is just flawed and is in the process of fading away. Last time I attended one, I asked the speaker about the unifying initiative of &lt;a href=&quot;http://www.swsi.org/&quot;&gt;SWSI&lt;/a&gt; and he did not know about it. And OWL-S and WSMO are not even the only initiatives, existing several minor other ones.&lt;br /&gt;&lt;br /&gt;I am fully convinced about that, some day, computers will be really able of intelligent thinking. But I am also quite convinced that this will &lt;i&gt;not&lt;/i&gt; come from the hands of symbolic AI, but from less clear machines in the track of neural networks (i.e. non-symbolic AI). But until then, what has worked and what I think will continue working, is mostly traditional, procedural computing.&lt;br /&gt;&lt;br /&gt;However, I grant that the current initatives behind the Semantic Web have a new flavor, with much more people behind it than in other incarnations. Maybe this, along with the superior power of todays computers and the availability of the WWW will make a difference. But from what I have seen, I remain skeptical.</content><link rel='replies' type='application/atom+xml' href='http://javicamara.blogspot.com/feeds/113801468342852708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/20828154/113801468342852708' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/113801468342852708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/113801468342852708'/><link rel='alternate' type='text/html' href='http://javicamara.blogspot.com/2006/01/are-semantic-web-services-next-step.html' title='Are Semantic Web Services the next step?'/><author><name>Javier Cámara</name><uri>http://www.blogger.com/profile/02188211322927440796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20828154.post-113801455647520557</id><published>2006-01-16T03:07:00.000-08:00</published><updated>2006-11-14T07:38:42.804-08:00</updated><title type='text'>SOA: A platform to rule them all (and in the network bind them)</title><content type='html'>&lt;i&gt;&lt;small&gt;(Originally published at &lt;a href=&quot;http://jcamara.theblog.net/a?title=soa_a_platform_to_rule_them_all_and_in_t&amp;more=1&amp;c=1&amp;tb=1&amp;pb=1&quot;&gt;TheBlog&lt;/a&gt; on January 16, 2006)&lt;/i&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;What is an SOA?&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Let&#39;s start with the basics. &lt;b&gt;Service Orientation&lt;/b&gt; is a way of building software systems in which the implementation of the features to be done is splitted into discrete collaborative units called services, which depend on each other only through well defined procedural interfaces which define the operations offered and the data they interchange, and that are usually scattered around a network. A Service Oriented Architecture (&lt;b&gt;SOA&lt;/b&gt;) is the artifact that makes the system run with the principles of applying Service Orientation, and thus is the result of it. Both concepts are tightly associated and I will freely use one or the other.&lt;br /&gt;&lt;br /&gt;Service Orientation and SOAs are useful paradigms for building systems, because having services as loosely-coupled computing units may provide many benefits like componentization (and associated isolation, maintenability and others), reuse, flexibility and interoperability, among others.&lt;br /&gt;&lt;br /&gt;To compare them with something more known, let&#39;s take Object Orientation (OO). This is another paradigm for building software with similar goals; only, instead of focusing in services, it does in objects and classes of objects, which have several different properties than these. Object Orientation is more complex than Service Orientation and allows to design and create not only the architecture(1) level of systems, but is also useful for lowel levels, like the internal implementation of components. For example, typically in an SOA, each individual service would be internally built using OO principles, not SOA ones.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(Note 1: I won&#39;t try to define here what &quot;the architecture of a system&quot; is, but just assume a hopefully common, fuzzy conception related to the macrostructure of an IT system.)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;While one of the most praised benefits of Object Orientation is software reuse, I think that all of us are aware now of its limitations regarding this. For start, just applying the Object Orientation paradigm does not help much in making your newly developed software modules really reusable, since this depends also on the actual technology you have used to build it. If you have used Java, then you have a chance to be able to reuse them in a Java environment, but very little to do so in a .Net, C++ or Ruby one; even though all of them are Object Oriented. And even if you stick to the same development language, for example Java, it usually is not enough. If you have used e.g. Hibernate for accessing the database or Swing for your user interface, you will have problems if it happens that the environment in which you want to reuse them uses JDO over an XML database or is a web application. So it is not only the language, but also all of the surrounding framework.&lt;br /&gt;&lt;br /&gt;Just the same as Object Orientation principles are not enough to achieve reusability, but also the actual pieces of technology used matters a lot, the same happens with Service Orientation and SOAs. If you stick only to Service Orientation, your code will not be reusable. For example, you may build a component for an SOA using Jini - but then you will able to deploy it only in an SOA based on Jini.&lt;br /&gt;&lt;br /&gt;Now I come to my first point: &lt;b&gt;it is useless to talk about SOAs in abstract&lt;/b&gt;. One must settle to the actual technology used in order to achieve the true benefits of an SOA. So I will choose such a technology right now and forget about other alternatives.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Which SOA are we talking about?&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;From these &quot;true benefits&quot; of SOAs, for me the most outstanding one is &lt;b&gt;interoperability&lt;/b&gt;. For start, it is a required factor for achieving the holy grail of software reuse, since only if a component you create is interoperable with others may it be reused.&lt;br /&gt;&lt;br /&gt;And indeed interoperability is the feature we most miss now: we may have componentization, isolation, maintainability and many other good things - what we do not have is a real way to create software using a technology, that is able to properly interact with software created with most other technologies. And it is not a technical problem. I mean, most technologies are interoperable in theory - but in practice almost all of them miss the proper &lt;b&gt;industry support&lt;/b&gt; in order for this to be true. And most people are interested in the &lt;i&gt;in practice&lt;/i&gt; part, not in the theoretical one.&lt;br /&gt;&lt;br /&gt;For example, Java does not interoperate specially well with other non-Java platforms, except through web services or CORBA. The extent of CORBA support may be discussed, but as long as Microsoft does not embrace it it is not interoperable enough &lt;i&gt;in practice&lt;/i&gt;. DCOM is just the complementary to DCOM. And .Net is the complimentary to Java.&lt;br /&gt;&lt;br /&gt;The truth nowadays is that &lt;b&gt;XML web services over SOAP and HTTP and described by WSDL are the only realistic option to interoperate with &lt;i&gt;any&lt;/i&gt; platform&lt;/b&gt;. This is, if you are to build a product that you pretend to have the maximum interoperation with other platforms, there is not other choice that SOAP web services. I do not care about whether it is inefficient, bad or even a total crap. I do not care whether REST is better than SOAP, whether SSDL is superior to WSDL, or whether RELAX outperforms XML Schema in every aspect - the main differentiator of all them against its alternative technologies is that &lt;b&gt;they are supported by every relevant actor in the IT landscape&lt;/b&gt;. Microsoft, IBM, Sun and all the other players support WSDL + SOAP + HTTP, and this means that you can indeed interoperate with any other platform in the world (2). And this is interoperability in practice.&lt;br /&gt;&lt;br /&gt;By the way, this is the very same value of XML: regardless of whether it is good or bad, what makes it so useful is that it is supported by every player.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(Note 2: I agree in that interoperability of web services is still more a goal than a reality, but today you are much more interoperable if you use web services, than if you use any other technology. And I trust in that they will eventually become fully interoperable.)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I said that for SOAs to really provide interoperability the actual technology to be used must be fixed, but until now I have only talked about WSDL/SOAP/HTTP web services. And as you may well know, SOAs are &lt;i&gt;not&lt;/i&gt; only web services. Which is the difference between a bunch of web services and an SOA?&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;What differentiates a set of web services from an SOA?&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;More or less, the difference is the same as between the Java programming language and a full Java development/runtime environment with all of the J2EE libraries; and, if you want, additional ones like Spring, Struts, etc. This is, a common framework that provides facilities to the bunch services which is still contained inside the SOA.&lt;br /&gt;&lt;br /&gt;For start, when one of these services needs to call any other service, first has to locate it, i.e. find out which is the URL to where the XML message must be sent. If you do not have an SOA, you have to use ad-hoc mechanisms for this, like for example hard-wired URLs taken from WSDLs or ad-hoc configuration files. Such ad-hoc mechanisms are an ovbious obstacle for reuse, since your software depends on them, which means that any environment in which you aim to deploy them muse use these mechanisms too, and none of the two examples given above are a good option for this (e.g. imagine having thousands of services, each one of which requires of a custom, ad-hoc configuration for calling each other). In short, there must be some &lt;b&gt;mechanism for components to discover each other&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;To solve this problem there are at least two solutions: use an ESB, or use a UDDI server. In theory they are not exclusive, but I think that in practice they are, since both technologies take a central room in an SOA. The ESB is the communication channel of every communication inside the SOA, while the UDDI must be used at least once before each communication is stablished, but does not intervene during the own communication. You can read &lt;a href=&quot;http://www.bloglines.com/blog/jcamara?id=1&quot;&gt;here more about my opinion on ESBs versus UDDI&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Having a UDDI server in place, each service must look up into it which is the endpoint to be called at least once before invoking each different interface it depends upon. Depending on the degree of dynamism of the environment this may be at deploy time or at run time. This provides something similar to what in other environments is called &lt;i&gt;dynamic&lt;/i&gt; or &lt;i&gt;late binding&lt;/i&gt;, since the actual code to be called behind an interface is decided at run time. And this brings dynamism, since you may replace the implementation of any given interface by another one without touching any line of code, and as long as this interface is enforced the SOA keeps working fine.&lt;br /&gt;&lt;br /&gt;I keep talking about &lt;i&gt;interfaces&lt;/i&gt;, since I think the proper way of building collaborative, loosely coupled services is to make them depend from each other only through well-defined interfaces. These interfaces end up being represented in WSDL 1 as portTypes, bindings and ports, among which the most useful thing to make a service depend upon I think is the &lt;b&gt;binding&lt;/b&gt;. This is, when you create a component that invokes some other N services, you should make it depend on N SOAP bindings. When the WSDLs are registered in the UDDI, if you follow &lt;a href=&quot;http://www.oasis-open.org/committees/uddi-spec/doc/tn/uddi-spec-tc-tn-wsdl-v2.htm&quot;&gt;the OASIS recommendation about how to do it&lt;/a&gt;, then your component may easily look up the binding in the UDDI, and them which are the services which implement them in order to call them.&lt;br /&gt;&lt;br /&gt;Note that there may be more than one service found, but this may be a good thing. For example, if you want to find out which vendor sells the cheapest shoes, assumming every vendor implements a given SOAP binding, you may find out all of the provider endpoints in the UDDI, call them one after each other and compare them.&lt;br /&gt;&lt;br /&gt;As you can see, I am relying all of the time in having &lt;i&gt;well defined interfaces&lt;/i&gt;, and as all of us know, this is something that may be difficult to have, since even for an internal integration we will found a large number of different interfaces. But the own flexibility SOA comes to the rescue, since it allows to build adaptors for each interface and register them as stubs, so that you still can rely on having a given interface. I do not want to ellaborate much about this; maybe I will do a separate post, since this one is already long enough.&lt;br /&gt;&lt;br /&gt;By the way, I have focused on UDDI, and maybe you are an ESB fan. For the ESB flavor of SOAs, the thing is very similar. Your nice component still should depend on interfaces, but it does not look up in the UDDI to see who implements them - it just calls the ESB, and it will take care of implementing your interface and deliver your message to the proper place. In the end is just the same, only you lose options: instead of writing the adaptation layer in whichever way you want, you typically will use the ESB. I do not like this because the ESB will become just a trash can of business logic, and we have places enough already where we put business logic to have yet another more. Besides, you usually put your business logic in the hands of some proprietary product, which uses new paradigms and technology to make your system work. With a non-ESB SOA, you are free to implement your services in any way.&lt;br /&gt;&lt;br /&gt;As you see, the UDDI approach does not preclude the ESB one: if you stick to UDDI, you always may register your ESB inside it as providing your interface if you want. But if you focus on ESBs, then you lose other options like UDDI. Thus, I like to have ESBs only as an option, and not as the center of a SOA as, unsurprisingly, ESB vendors depict. (For the start, this is what the &quot;Bus&quot; term implies - a common communication facility that everybody uses. If you have not yet guessed out, I do not like ESBs.)&lt;br /&gt;&lt;br /&gt;Until now I have drawn some conclusions:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;SOAs&lt;/b&gt; based on WSDL + SOAP + HTTP are the base of &lt;b&gt;unparallelled software reuse&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You also need to have some mechanism for &lt;b&gt;discovery&lt;/b&gt; to achieve this&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;But besides discovery there are, of course, still more things one needs before one may claim you have an SOA and not only a bunch of services. Things like security (most critically, authentication and authorization), transactions, asynchronous messaging, publish/subscribe, stateful services, non-functional properties of contracts (e.g. policies), etc. This is all what the large number of WS-* standards aim to settle. For example, if there would be a universally accepted WS-Transaction standard, one could create a component that would access several services like Accounting, Customer and Invoicing, do useful business operations on top of them, in a single transaction. How nice.&lt;br /&gt;&lt;br /&gt;I have heard about many of these WS-* standards but do not know well any of them, so that it is pointless I talk about them. I only should say that they are needed in order to achieve true reuse of SOA components.&lt;br /&gt;&lt;br /&gt;And only if one has all of these standards in place one will have an SOA. This means that nowadays having a real SOA is impossible, since most of these standards are not mature, agreed or even standrdas but just mere specifications made  by a number of vendors, some time with more intention to sell their own products than to create useful standards (e.g. the &lt;a href=&quot;http://xml.coverpages.org/ni2005-12-07-a.html&quot;&gt;recent initiative for SCA, SDO and others&lt;/a&gt; seems to be quite product-oriented).&lt;br /&gt;&lt;br /&gt;But the point is that, the more actual standards does your wannabe SOA support, the more it resembles a true SOA. And what do you achieve when you have a true SOA? A platform on which to deploy arbitrary software components developed by arbitrary vendors. If you are a software vendor, what you gain when you target your software for SOAs is a platform that every one of your potential customers will eventually have, and on top of which you can deploy (i.e. sell) your products and services.&lt;br /&gt;&lt;br /&gt;It is like in the hottest dreams of Bill Gates: if every computer in the world would use Windows, then every piece of software in the world would run in it, and would probably offer DCOM interfaces over which every software would be able to interoperate with the other. The IT systems would be much easier to operate and maintain - and Microsoft would be incredibly powerful.&lt;br /&gt;&lt;br /&gt;Stop dreaming, Bill - because this dream is possible, although not by means of Windows, but by means of SOA. SOA is the platform. This is the basis of the so much praised Web 2.0 : A world of discrete services, offering well defined interfaces, with no central &quot;bus&quot; inside it, with a nice distributed directory system to find each other and infrastructure services for security, transactions and so on.&lt;br /&gt;&lt;br /&gt;But Web 2.0 is the view of a &quot;world-wide SOA&quot;, while I am more interesting in the view of lots of SOAs operating inside organizations (i.e. Internet vs intranets). Once most organizations in the world with own IT systems are using an SOA, most pieces of business logic which is available as a service may be reused in most organizations. Most components performing useful functions may find other services fulfilling its needs, in most organizations. The SOA is the ultimate technological platform. And it is non-proprietary, it is not owned by anybody; neither by a pack of greedy executives, nor by a bunch of untidy developers, but shared and developed by them all.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Beyond technology&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Once this universal platform is available in most organizations, business logic becomes reusable. One can buy a component that calculates the payroll (note that it is possible to buy either the software, or the on demand service). This component will depend on a series of interfaces to be offered by my organization to access e.g. the employee database, and I must create these interfaces before being able to use the component.&lt;br /&gt;&lt;br /&gt;Thus, if this vision becomes a reality (which I firmly believe), it well may cause that &lt;b&gt;organizations start converging into using the same business interfaces&lt;/b&gt;. For example, if there is a excellent payroll component that becomes popular and many organizations end up using, it is likely that the interfaces it uses would also become popular and used by all of these organizations. Which may end up &lt;b&gt;standardizing the business interfaces and languages used in organizations&lt;/b&gt;, which would make life really easy for CIOs (so easy that even they may stop existing).&lt;br /&gt;&lt;br /&gt;Well this is too futuristic and, while I firmly believe that SOA will become the ultimate platform, I am not so sure about this business uniformization. But who knows...</content><link rel='replies' type='application/atom+xml' href='http://javicamara.blogspot.com/feeds/113801455647520557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/20828154/113801455647520557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/113801455647520557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/113801455647520557'/><link rel='alternate' type='text/html' href='http://javicamara.blogspot.com/2006/01/soa-platform-to-rule-them-all-and-in.html' title='SOA: A platform to rule them all (and in the network bind them)'/><author><name>Javier Cámara</name><uri>http://www.blogger.com/profile/02188211322927440796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20828154.post-113801438153976751</id><published>2006-01-11T02:57:00.000-08:00</published><updated>2006-11-14T07:38:42.648-08:00</updated><title type='text'>Which will be the face of Web 2.0?</title><content type='html'>&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;(Originally published at &lt;/span&gt;&lt;/em&gt;&lt;a href=&quot;http://jcamara.theblog.net/a?title=which_will_be_the_face_of_web_2_0&amp;more=1&amp;amp;c=1&amp;tb=1&amp;amp;pb=1&quot;&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;TheBlog&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; on January 11th, 2006)&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Actually I do not like much the name of &quot;Web 2.0&quot; (and even less the mystification of &quot;Web 3.0&quot;), but it seems the only currently available.&lt;br /&gt;&lt;br /&gt;(Me, being a Capt. Picard fan, would rather prefer something like &quot;WebNG&quot;, but this is hopeless).&lt;br /&gt;&lt;br /&gt;This post is to reply to the article &lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=38473&quot;&gt;Web 2.01, a rich internet application example&lt;/a&gt; from &lt;a href=&quot;http://www.theserverside.com/&quot;&gt;TheServerSide.com&lt;/a&gt;. I posted my reply there, but what do I have a tech blog for, if not for dumping these kind of things?&lt;br /&gt;&lt;br /&gt;It is puzzling that, in the article, Java is considered as more powerful in the desktop than in the server, since reality is otherwise. Thus, either reality is wrong, or the article is in this respect.&lt;br /&gt;&lt;br /&gt;The client-side (the &quot;face&quot;) of Web 1.0 was the HTML browser, and in fact this was a very large percent of its success. Reviewing the alternatives for the face of Web 2.0 given in the article:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Java has, up to now, been an utterly failure when coming to client-side applications&lt;/strong&gt;, and it will remain to be so, despite the swift SWT, as long as 90% of the workstations of the world do not come with a JVM preinstalled - namely, until Windows does not come with a JVM again. And since MS has bet its future on .Net, it will be hardly so.&lt;/li&gt;&lt;li&gt;One of the main points of the web, HTML, XML, web services, SOA and so on is that it must be &lt;strong&gt;platform agnostic&lt;/strong&gt;, which is a &lt;em&gt;sine qua non&lt;/em&gt; requisite for making it &lt;strong&gt;ubiquitous&lt;/strong&gt;. Web 1.0 is mainly platform agnostic and Web 2.0 will also be, even more. Arguabily, .Net will never be platform agnostic, and even if there are properly emulations in non-Windows systems (including Nokia phones), lots of people will never consider it as an universal platform for running client-side applications. &lt;strong&gt;Thus, I&#39;d rule out .Net too&lt;/strong&gt;. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Flash&lt;/strong&gt; is indeed a fine thing, powerful and appealing. Only, since it is &lt;strong&gt;proprietary&lt;/strong&gt;, I find it difficult for it to be the &quot;face&quot; of Web 2.0 . Also, usually you need to &lt;strong&gt;pay to create&lt;/strong&gt; Flash content (yeah, I know OpenLaszlo, but the vast majority of Flash out there is built with the Flash designer, plus a little with Flex). These two things would have to change for Flash to become this face, but also it would have to prove to be, or evolve into, a platform solid enough for professional application development. Also, given the intertia (i.e. effort, expertise, tools, etc), &lt;strong&gt;I find it very difficult to switch away from [X]HTML&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;AJAX is mainly a frenzy&lt;/strong&gt; that will pass (along with all of its usually unnamed varieties like just JAX, JSON and the resurrected RADs for web applications). But &lt;strong&gt;Javascript + DHTML&lt;/strong&gt; will stay as a popular method to create RiAs because it &lt;strong&gt;fulfills the main requisites that any Web x.x client platform must have&lt;/strong&gt;. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I think that the features that made the HTML browser a success were that it is:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Ubiquitous&lt;/strong&gt; (which implies platform-agnostic) &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Easy and free&lt;/strong&gt; to create content for it (many early web sites were started just by &quot;view source&quot; and copy+paste on a notepad) &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And for the Web 2.0 client-side platform the requisites should be also these, plus the ability to &lt;strong&gt;include control and presentation logic in the client side for which is very easy to discover and access web services, and I guess that a lot of more nice things&lt;/strong&gt;. Hopefully domain logic will remain in the server, although sadly in many projects this rule will be broken.&lt;/p&gt;&lt;p&gt;Given the existing intertia, &lt;strong&gt;I would rule out that this platform would be anything else than a web browser&lt;/strong&gt;. I am sure sure it will be an enhanced browser, but a browser anyway, and not custom, independent applications. These applications will exist, but running inside the browser. &lt;strong&gt;The &quot;platform&quot; for Web 2.0 applications will be that enhanced browser as client, running light applications quickly downloaded on demand&lt;/strong&gt; (I hope this alone is enough to rule out applets) &lt;strong&gt;which access arbitrary web services, along with facilities for discovery, security, transactions, and several others&lt;/strong&gt;. Maybe this backend could be called some &quot;world wide SOA&quot;, but I am not sure that it is the right term.&lt;/p&gt;&lt;p&gt;Now, from between the two camps of dynamic typed (scripting) languages vs strongly typed languages, I rather fall in the second side, and thus I do not consider Javascript as a proper platform for creating professional, robust applications. Of course it is not that it is impossible to create them, only that the average real life development team of the average real life project will create just a mess if trying to implement a large project with Javascript. I have seen messes enough just from trying to use much Javascript in regular, server-side Java web applications, and I usually flee from it.&lt;/p&gt;&lt;p&gt;But indeed my guess is that &lt;strong&gt;Javascript+DHTML&lt;/strong&gt;, being already a popular tool, fulfilling many requisites for success, and fully embraced both by Microsoft and all-the-rest, &lt;strong&gt;will be the tool of choice for creating client side applications&lt;/strong&gt;. It will evolve so that it is able to easily discover services, connect everywhere without posing a security risk, in general to easily use all the features of that &quot;world wide SOA&quot;; and hopefully something will be made in order for it to become a more suitable tool for creating professional, complex applications (e.g. maybe it will be optionally brought closer to Java or .Net). Also, more powerful user interface capabilities will be provided to HTML (e.g. see &lt;a href=&quot;http://www-128.ibm.com/developerworks/web/library/x-futhtml1/index.html?ca=?drs-&quot;&gt;The future of HTML, Part 1: WHATWG&lt;/a&gt; ). Maybe some sort of &quot;compiled Javascript&quot; will appear, to improve network performance and helping to write proprietary interfaces. Dunno. I actually would like it to be a more powerful platform closer to Java/.Net, but just imagine the fuss to make Microsoft and all-the-rest to agree on it: near to impossible.&lt;/p&gt;&lt;p&gt;Up to here, my thoughts about Web 2.0 . The conclusion I draw from all this is that &lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=38473&quot;&gt;the article&lt;/a&gt;, more than showing a Web 2.0 example, is illustrating just an example of a web services client. The second title sounds far less compelling, but I think it is closer to reality. &lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://javicamara.blogspot.com/feeds/113801438153976751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/20828154/113801438153976751' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/113801438153976751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/113801438153976751'/><link rel='alternate' type='text/html' href='http://javicamara.blogspot.com/2006/01/which-will-be-face-of-web-20.html' title='Which will be the face of Web 2.0?'/><author><name>Javier Cámara</name><uri>http://www.blogger.com/profile/02188211322927440796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20828154.post-113801363873712130</id><published>2005-12-22T02:51:00.000-08:00</published><updated>2006-11-14T07:38:42.458-08:00</updated><title type='text'></title><content type='html'>&lt;p&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;(This was originally published in &lt;/span&gt;&lt;/em&gt;&lt;a href=&quot;http://www.bloglines.com/blog/jcamara?id=2&quot;&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;Bloglines&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; on December 22, 2005)&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;(This is a comment to the post &lt;/span&gt;&lt;/em&gt;&lt;a class=&quot;blines3&quot; title=&quot;Link outside of this blog&quot; href=&quot;http://radio.javaranch.com/pascarello/2005/12/16/1134751408446.html&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;Ajax: Where should my business logic sit?&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;)&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Of course, any software engineering theory dictates that any AJAX should have no trace of business logic, but that this one must be limited to the server. Any good developer will tell you that one should put all of your logic in server-side web services, and handle only the presentation issues on the AJAX client side.&lt;/p&gt;&lt;p&gt;Also of course, the ability of creating business logic in a simple development environment like Javascript will lead in practice to the existence of a large number of applications with all of its business logic in the client side part. Just have a look at the number of applications existing now that have input validations only in the client side, and have the server side open to any client side mischief.&lt;/p&gt;&lt;p&gt;This is one of the problems I see in all the fuzz around AJAX. In my view, Javascript is not a good, stable, reliable environment for running professional applications. In my experience, any average development team devoted to Javascript will end up creating an unmanageable mess. It is not that it is not possible to do it in the right way: it is just that the average team won&#39;t. One just has to look to all the problems JSP has created to see this (if instead of just copying Microsoft&#39;s ASP with JSP Sun would have come up with a decent component-oriented framework for creating web views -which was perfectly feasible at the time-, web development would be a lot more easier now. Then, Java trailed MS again in this, with JSF).&lt;/p&gt;&lt;p&gt;I think that currently there is much more hype in AJAX than practical stuff. Although all the frenzy is also good, since it draws the attention and it is a first step. A first step towards a good computing platform to deploy client-side applications to the web: what Java applets should have been and are not because of several different reasons. Something with the robustness of Java (or .Net), the appeal and speed of Flash, and the convenience and universal availability of Javascript.&lt;/p&gt;&lt;p&gt;Some day there will be such a platform, well beyond AJAX. However, it will be also thanks to AJAX.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://javicamara.blogspot.com/feeds/113801363873712130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/20828154/113801363873712130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/113801363873712130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/113801363873712130'/><link rel='alternate' type='text/html' href='http://javicamara.blogspot.com/2005/12/this-was-originally-published-in.html' title=''/><author><name>Javier Cámara</name><uri>http://www.blogger.com/profile/02188211322927440796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20828154.post-113801328986121739</id><published>2005-12-16T02:41:00.000-08:00</published><updated>2006-11-14T07:38:42.324-08:00</updated><title type='text'>Will the ESB kill the UDDI star?</title><content type='html'>&lt;small&gt;&lt;i&gt;(This was originally published at &lt;a href=&quot;http://www.bloglines.com/blog/jcamara?id=1&quot;&gt;Bloglines&lt;/a&gt; on Fri, Dec 16 2005)&lt;/i&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;I do not like the Enterprise Service Bus (ESB) concept. I think a Service Oriented Architecture (SOA) should be composed of a myriad of services, all of them peers (i.e. no one is higher than the other), which would contact themselves freely. And for this contact to happen, better not to use hardwrired addresses but a registry of services, i.e. UDDI.I do not like the Enterprise Service Bus (ESB) concept. I think a Service Oriented Architecture (SOA) should be composed of a myriad of services, all of them peers (i.e. no one is higher than the other), which would contact themselves freely. And for this contact to happen, better not to use hardwrired addresses but a registry of services, i.e. UDDI.&lt;br /&gt;&lt;br /&gt;And I am not the only one to see SOAs this way, but then the ESB concept is being increasingly popular. For me, &lt;b&gt;an ESB is just an Enterprise Applications Integration (EAI) product that is based in standards around the SOA world, instead of using just proprietarty mechanisms&lt;/b&gt; as in the pre-SOA times - no less, no more. It is intended to be the centerpiece of the SOA, the master of all interactions. All messages should go through it, all services should contact it to talk with other services. It would be &lt;b&gt;the King of what I think should be a Republic of services&lt;/b&gt;. For start, the own concept of &quot;Bus&quot; is against any &quot;liberal&quot; SOA.&lt;br /&gt;&lt;br /&gt;Without an ESB, if an element of the SOA needs to send something to someone, it would require that a particular known &lt;b&gt;interface&lt;/b&gt; is implemented by some component, which is registered in the UDDI, as implementing this interface (which in turn is also defined in the UDDI). The element searches in the UDDI for that other component, calls it, and that&#39;s all. The element depends only of a set of well known interfaces, that may be implemented by any valid means of creating a service, including a service scripting engine (see later).&lt;br /&gt;&lt;br /&gt;With an ESB, the element hands the message to the ESB, and it will take care of handling it. The element still depends on an interface, but now it is not explicitly defined since the ESB will be programmed to implement it. With the ESB every element depends on the ESB; without it, every element depends on a set of interfaces. The ESB becomes a new repository of &lt;b&gt;business logic&lt;/b&gt;, without it, the logic is where it is now: in the services. A new repository with its new rules, means of administrating it, means of developing it, etc.&lt;br /&gt;&lt;br /&gt;If all elements contact the ESB for any interaction with a service, then there is very little point in having a UDDI registry: as far as all services are registered in the ESB, there is no need for it. Of course the ESB could rely upon a external UDDI server for the registration but, since it will be the only element of the SOA accessing it, it seems little useful. So the UDDI is dead. Well, at least for SOAs internal to an organisation - for SOAs reaching outside an organisation, the ESB model scales to a &quot;SOA of ESBs&quot;, having the ESB of each organisation contacting the other ESB. These ESBs should be registered somewhere, so I guess UDDI still makes sense for extranets.&lt;br /&gt;&lt;br /&gt;I guess the ESB model is easier to understand, but I do not see the point of it at all. And it is not that I do not see the usefulness of what a ESB does. It could perform the following tasks:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Simple transformation of messages, for adapting two services using different interfaces&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Allow to create simple services&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Allow simple routing of messages&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Allow asynchronous communications (queuing of messages, retrying, etc)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Allow publish/subscribe communications&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Tasks 1 to 3 conform what I call &lt;b&gt;service scripting&lt;/b&gt;, i.e. they are tasks that could be performed by a regular service of the SOA made by any usual technique (e.g. .Net) , but that are simple enough to be done by a configurable product instead. It is just the same as the Unix scripts: its job could be performed by a regular command written in C, but it is simple enough to be carried out by simpler means.&lt;br /&gt;&lt;br /&gt;Taks 4 and 5 are middleware / infrastructure tasks that I will refer to as &lt;b&gt;asynchronous interactions&lt;/b&gt;, that are of use in most SOAs, since both should be needed in most real life situations.&lt;br /&gt;&lt;br /&gt;For start, I do not see the point of having such different two groups of tasks performed by a single, big component. For asynchronous interactions it makes sense to have a single component in the SOA performing them, but by no means it should be the center of anything, since in most cases not all interactions should be asynchronous.&lt;br /&gt;&lt;br /&gt;But for service scripting there is no reason at all to have a single component performing it. Service scripting is just a means of creating another web service, and thus it would be a &lt;b&gt;hidden facility&lt;/b&gt; of the SOA: when one contacts a service, it does not matter whether it has been created through scripting, through regular development, through semantic computing, or whatever. And there is no point on limiting to have a single scripting engine, where different ones may have different advantages.&lt;br /&gt;&lt;br /&gt;But I am afraid that there is more people out there liking the ESBs than not. With all the buzz about SOAs, people wonder about &quot;how could I implement a SOA?&quot; And then there come the ESB vendor with the solution: &quot;buy me this and you will have a SOA.&quot; Then the customer starts using the ESB and putting its business logic into it, i.e. on the hands of the vendor, who will be much happy for that. Well, the less happier the more standard is the way to define, deploy and administer that logic.&lt;br /&gt;&lt;br /&gt;There is much more movement around ESBs than around UDDI. There are JBI, SCA, a couple of open-source ESBs. And, for UDDI v3, there is very little. These days I have tried to create stubs to access a UDDI repository out of the WSDLs with Apache Axis, and the result has been really poor (the stubs do not even compile, and some of them generate wrong responses). And even I had to manually modify the original UDDI WSDLs following the &lt;a href=&quot;http://www.oasis-open.org/committees/uddi-spec/doc/tn/uddi-spec-tc-tn-jax-rpc-20050126.htm&quot;&gt;instructions by OASIS&lt;/a&gt; . I do not see UDDI being trendy out there any more.&lt;br /&gt;&lt;br /&gt;Well, I guess a SOA centered in an ESB is better than no SOA at all. After all, the main benefit of SOAs is to distribute the business logic into a set of reusable services. They would be more reusable if they would not rely on the ESB, but if the ESB is standard enough, the services will be reusable anyway.&lt;br /&gt;&lt;br /&gt;Farewell, service republic, here it comes the ESB king to rule you.</content><link rel='replies' type='application/atom+xml' href='http://javicamara.blogspot.com/feeds/113801328986121739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/20828154/113801328986121739' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/113801328986121739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20828154/posts/default/113801328986121739'/><link rel='alternate' type='text/html' href='http://javicamara.blogspot.com/2005/12/will-esb-kill-uddi-star.html' title='Will the ESB kill the UDDI star?'/><author><name>Javier Cámara</name><uri>http://www.blogger.com/profile/02188211322927440796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>