6

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.

Web services are a popular implementation of service-oriented architecture.

What are the other implementations of service-oriented architecture other than web services?

closed as too broad by amon, gnat, Robert Harvey, Bart van Ingen Schenau, Thomas Owens Jun 13 '17 at 8:58

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

4

Before HTTP based services became predominant, there were several other systems which provided similar functions. In the Windows world, when COM was a popular component model, it was common to use DCOM, a binary RPC protocol over TCP which allowed you to call methods on COM objects in remote processes or remote machines. COM+ was an application server based on DCOM, allowing services to be registered, executed and managed. MSMQ was another option, a distributed, asynchronous queue system where one app could write to a queue to be picked up by the queue processing service.

I used these technologies, and others, to build distributed, service-oriented architectures back in the 90's. Other options existed even earlier. CORBA was similar to COM, less MS-centric, and application servers running CORBA components existed for various platforms.

SOA is about separating your applications into distinct, independent domains. It's similar to the Separation of Concerns principal in coding, but at the architectural level. And just like SoC doesn't rely on a specific technology or paradigm like OOP, so SOA doesn't rely on having Web-services or similar online RPC mechanisms. In fact, web services aren't "an implementation of SOA", as much as they're architectural components that can be used for SOA. The same WS technologies are often used as the back-end for straightforward client-server apps, after all.

0

Quite a few things that show their external interface to the world as a web server use other different protocols for communication internally.

For one example, Facebook is obviously a web site. But, a lot of the internal monitoring and such is done using Thrift. Thrift will typically use its own THeader protocol, running directly on top of a socket, rather than anything like HTTP.

There are also some kind of borderline cases. Google's GRPC, for example, is (obviously enough, given the name) an RPC implementation on the same general order as Thrift. It, however, normally uses HTTP/2 for its underlying communication protocol. It's not much like a typical web site, but I suppose that since it uses HTTP/2, there's at least room for argument that it could be considered a web service.

0

I have never understood SOA to actually need to involve web services (so the Wikipedia article is a bit misleading on my view). SOA is about how you integrate the system on your application. And using web services, or network protocols of any kind, is an implementation detail. The logic of each service should not know how connections are made, and only on the boundaries you need to know. Therefore, who is to say that your services cannot communicate with each other writing and reading files? Or using standard input/output?

I've seen a couple of answers pointing to other options than web services (or directly linking to the same Wikipedia article), and those are good if you think on network protocols.

But again, implementation details. There are options that don't rely on network (however inefficient or ridiculous they are)

  • SOA is about how you separate your application. this is even more misleading... SOA has nothing to do with decomposition. It's all about integration among systems. – Laiv Jun 13 '17 at 7:56
  • @Laiv and you are 100% right. Let me correct my answer. – Miyamoto Akira Jun 13 '17 at 8:20
0

Web Services are now the most prominent form of service in SOA but when I was first introduced to the concept we utilized three layers of services:-

Technical Services - e.g. Stored Procedures in an Oracle Database designed to do very small not particularly end-user friendly things - for example converting a user comprehensible key into the internal primary key of the database. These services are used extensively by internal systems and higher level services.

Business Services - Higher Level but still too low level for external parties to comprehend. Usually created by orchestrating several Technical Services to produce a useful output e.g. taking an internal PK and returning a chunk of XML containing data about the record referenced by the PK. Or taking a Document reference and pulling a PDF of the document from the document management system. These services are used extensively by internal systems and higher level services.

Externally Exposed Services (usually Web Services) - A service useful to external parties. e.g. A service that accepts a user comprehensible key and returns a PDF of the document that created the record (made by orchestrating all of the services described previously).

Not the answer you're looking for? Browse other questions tagged or ask your own question.