Go to the "Understanding this true Rest Architecture style" article on Infoq
From the abstract height of architectural style, there are three kinds of common distributed Application architecture styles:
- Distributed Objects (distributed Objects, abbreviation do)
Schema instance has corba/rmi/ejb/dcom/.net remoting and so on
- Remote Procedure calls (remotely Procedure call, referred to as RPC)
Schema instance has Soap/xml-rpc/hessian/flash Amf/dwr and so on
- Representational State transfer (representational, Transfer, short rest)
Schema instance has Http/webdav
The two architectural styles of do and RPC are common in enterprise applications, while rest is the architectural style of Web applications, and there are very big differences between them.
The difference between rest and do is:
Rest supports abstract (that is, modeling) tools are resources, do support abstract tools are objects. In different programming languages, there is a great difference in the definition of objects, so the do style architecture is usually bound to a programming language. Cross-language interactions can be very complex to implement even if they are implemented. Resources in rest are completely neutral to the development platform and programming language, and can be implemented using any programming language.
There is no concept of uniform interfaces in do. Different APIs, the interface design style can be completely different. Do also does not support the visibility of the manipulation semantics for intermediate components.
Do does not use hypertext, and the content of the response contains only the object itself. Rest uses hypertext, which allows for greater granularity of interaction, with more efficient interactions than do.
Rest supports data flow and pipelines, and do does not support data flow and pipelines.
The do style usually brings a tight coupling between the client and the server side. Of the three architectural styles, the Do style has the greatest degree of coupling, while rest's style coupling is minimal. The source of rest loose coupling comes from the Unified interface + Hypertext drive.
The difference between rest and RPC is that:
Rest supports abstract tools that are resources, and RPC supports abstract tools that are processes. Rest-style architectural modeling is a noun-centric, RPC-style architecture modeled with verbs as the core. In a simple analogy, rest is object-oriented programming, and RPC is process-oriented programming.
There is no concept of uniform interfaces in RPC. Different APIs, the interface design style can be completely different. RPC also does not support the visibility of the operation semantics for intermediate components.
Hypertext is not used in RPC, and the content of the response contains only the message itself. Rest uses hypertext, which allows for greater granularity of interaction, which is more efficient than RPC.
Rest supports data flow and pipelines, and RPC does not support data flow and pipelines.
Because of the platform-neutral message, the RPC style is less coupled than the Do style, but RPC style often brings a tight coupling between the client and the server side. Supports the unified interface + Hypertext driven restful style, which allows for minimal coupling.
Comparison of architectural styles