Introduction to UDDI and Service Oriented Architecture (SOA)
Client-server programming caused revolution in the software industry. By decoupling the role of the client and server, client-server programming led to the popularity of modular software. As more and more applications were developed using the client-server paradigm, the software industry ran into the limitations of procedural programming, for example, absence of extensibility, reuse etc.. In the meantime, the notion of object-oriented programming was evolving and the limitations of procedural programming led the software industry to turn to object-oriented design and development. Object-oriented languages like SmallTalk, C++, and Java support the notion of encapsulation, inheritance and polymorphism, which allowed software engineers to create reusable and extensible software components. As object-oriented programming slowly proliferated, the software industry saw various corporations adopting and implementing component-based development methodology. In the meantime, the world also saw emergence of Hypertext Transfer Protocol (HTTP), which ultimately led to the networked society we have today. As people started realizing the value of networks, they started deploying software components over the network, leading to widespread adoption of e-commerce in the consumer industry. As e-commerce became an accepted way to transact business with the customers, the business world extended the compute model to undertake business with their trading partners over the Internet, thus leading to the creation of business-to-business commerce over the Internet.

Today, businesses conduct Internet commerce with each other exclusively between known entities, because the compute model prevalent today is highly static. Therefore, one problem that remains is: How can businesses conduct commerce with anyone, anywhere on the network?

Enter: Service-oriented Architecture (SOA).

Service Oriented Architecture: A new era
What exactly is SOA? Stated simply, SOA takes the existing software components residing on the network and allows them to be published, invoked and discovered by each other. SOA allows a software programmer to model programming problems in terms of services offered by components to anyone, anywhere over the network. In other words, any application residing anywhere on any computer system would be able to interact with any service anywhere over the network.

So where do Web Services fit? Well, if the only language I could speak was OO modeling, then I would say that Web Services is an instance of SOA! Web Services are programmatic components that can be published, discovered and invoked over the network using open, interoperable protocols. Figure 4 shows a schematic representation of Web services:

SOA Components: Roles & Responsibilities

  • Web-Service Publisher: The service publisher is a software component that publishes its services and interface requirements with a service broker


  • Web-Service Broker: The service broker is responsible for enabling service discovery


  • Web-Service Subscriber: The service subscriber is a software component that subscribes to a service by discovering the available services that meet some pre-defined criteria on the network and binding to the service publisher.


  • Figure 4 shows how SOA components interact with each other to publish, discover and bind to various services. The publisher and the subscriber can interchange roles at any time. It is important to realize that a Web service can be a standalone Web service or an aggregation of other Web services. A service provider determines the granularity of the service. For example, a time service would be extremely fine-grained, whereas a banking service, that can perform many tasks, would be coarse-grained. You can implement a Web service on any platform in any language.



    — SM