Java – RMI/CORBA vs Web service

javarpcsoasoapweb services

As mentioned in wiki,

A service-oriented architecture (SOA) is a style of software design where services are provided to the other components by application components, through a communication protocol over a network. The basic principles of service-oriented architecture are independent of vendors, products and technologies. A service is a discrete unit of functionality that can be accessed remotely and acted upon and updated independently, such as retrieving a credit card statement online.

Each SOA building block can play any of the three roles:

  • Service provider

  • Service broker

  • Service requester/consumer


Implementation approach

Service-oriented architecture can be implemented with Web services. Ex: Web services based on WSDL and SOAP

A web service implementation talks about exposing POJO with @WebService tag and another implementation talks about exposing those POJO in services.xml.

The client will avail those exposed services over SOAP or REST.

————————

1) Are web services(like Axis2) only option to implement SOA building blocks?

If yes,

2) what are the challenges of conventional middle ware(RMI/CORBA) that web services addressed?

Best Answer

The goal is the same: have a mean for systems using different languages and operating systems to interoperate. Therefore, it's not that different after all.

How should you choose one over another? It all depends on how well such or such tool is supported by the platforms where they will be used.

If your intention is to make communicate two services developed by teams who are familiar with CORBA, you know what to do. If, on the other hand, your intention is to provide a service to be used by anyone, chances are, many developers would know how to call it through REST, some of them would have a prior experience with SOAP, and only few will know how to use CORBA, meaning that REST would be your first and maybe only choice.

See also: Microservices REST or AMQP, which case.

Related Topic