SOA vs Client-Server vs Web Service - what is the

2020-05-21 04:53发布

问题:

After reading some literature on the topics of SOA, Web-Services and Client-Server architectute. I really confused about these terms because can't see the real difference between them. Can someone explain what the actual difference between SOA and Client-Server is? Can I use Client-Server to implement SOA or the former is a different concept? Is client-server obsolete now? And where is the place for web-services here? Is web-service just a client-server architecture?

I would very appreciate if someone helps me to clarify all these terms and differences between these concepts.

回答1:

The biggest difference between SOA and client-server is the coupling between the tiers. In SOA, the server side is very independent of the client. Many different client types use the same server. Think about a web server. It does the same thing, no matter what browser you use to connect to it. In this way SOA services are designed for reuse. http://en.wikipedia.org/wiki/Service-oriented_architecture

Client-server on the other hand is usually more coupled. The server exists for a specific client, without planning for re-use. Think about Microsoft Exchange. It is designed to work with Microsoft Email clients. It is literally just splitting a single process into 2 parts, running them on different machines. That being said, technically a SOA service is client-server, just with more than one client.

So, all SOA services are client-server, but not all client-server processes are SOA.



回答2:

Lets take an example.

You have written a calculator code in any language (java, c,c++ etc) which perform 4 operations add, subtract, multiply and devide. Lets say, we deploy this code on a server. Now you want to publish this code on internet so that any person in world who has connected to internet can use your code. Now webservice will come into play. As per your server, you need to follow an implementation technique to convert your code into a webservice. For example, you are using Apache axis server and you have implemented your code using jax-ws (java api for xml web services). Your code will be published as a web service on a url ( like http://www.myserver/calculator).

Now how are you going to access this web service? Now client will come into play. Lets say you have designed a website www.calculation.com. And from there you are taking 2 integer inputs and calling your webservice using http://www.myserver/calculator/add for addition,http://www.myserver/calculator/subtract for subtraction,http://www.myserver/calculator/multiply for multiplication and http://www.myserver/calculator/multiply for division.

Now you can see each of your webservices operations addidtion, subtraction,multiplication and division is working as a service and in future lets say you have a requirement to put a equation solving service on your website then you can reuse your addition, subtraction multiplication and division web services using those links to make another service. Here you go, you have achieved service oriented architecture i.e. SOA.