Transferred from: http://blog.csdn.net/beijiguangyong/article/details/9200513
what is SOA.
It is often heard that people take OOP and SOA together, such as whether SOA can replace object-oriented (OOP) or both. A direct answer to the difficulty of an example may seem to make the answer easier to understand. The children ask you to do your homework carefully. or the college entrance exam when the science. Can not touch the brain, there is no sense of the wind and horses are not the same problem. (There are some correlations between OOP and SOA, as well as learning can be reported in the college entrance exam.) )
Service-oriented architecture (oriented Architecture) refers to the architecture of a system whose research is the "architecture" paradigm of large distributed systems. OOP refers to the "programming" paradigm in the process of specific development of a program. In a more popular sense, we talk about OOP in a specific software, but when we talk about software and software, systems and systems, we use the idea of SOA to help us deal with the relationship between them (referring to each system). The final word is that unless you are only responsible for coding, you need to understand the two. Why SOA is proposed
"Not the strongest or brightest race, but the most resilient race to survive." "-Darwin" Origin of Species "
Presumably the above may make the reader a shock, and ask what is the relationship between software design (or large distributed software design) and evolution. In fact, they are the same, each species has its own life cycle, "natural selection, survival of the fittest"; so is software, every software has its own life cycle, to meet the requirements of users, and the surrounding environment (other software) to live peacefully that the software life cycle will naturally be reasonable extension. The present age is not the beginning of life, the existence of single species, regardless of the existence of other organisms. In the same way, it is impossible for companies to consider developing a comprehensive set of software from both money and time, most likely due to the old system emerging in new systems, old and new, help each other (occasional fights are normal). What we need to do is to coordinate the relationship between the old and the new systems, and this coordinated process is the process of using SOA to solve problems. Core Concept Heterogeneous (heterogenous) Support
Do not expect every system in the enterprise is the Java platform, do not expect every system in the enterprise running on the window platform, do not expect the database in the enterprise is structured ... As time goes by the old version of the system depends on (the data is priceless, do not tell me that you can re-develop a new system, and then export the old system data, which is equivalent to a certain species of the environment in a short period of time to re-evolution, dream as naïve ideas. New systems are emerging, and SOA has to do with these heterogeneous systems to ensure their "peaceful coexistence". Support Change
SOA is by no means a one-time event, with the development of the enterprise in the system environment changes in the production of its own style of SOA, this time the integration of the old and new systems may not be in the future, a company's acquisition will usher in a new round of SOA process. a few core concepts
Service: Refers to each module, or each system. Each service can provide the implementation of a function as independently as possible.
High interoperability: Similar to the "Enterprise Application Integration" (EAI) concept, ensuring that heterogeneous systems can serve each other.
Loose coupling: The goal is to ensure the flexibility and scalability of the entire system.
The above three concepts for heterogeneous large-scale distributed systems (not a one-time development) is simply like a dream, how to achieve it. Perhaps SOA provides us with a direction to find a solution, and note that it's just a direction, and don't expect to get any concrete implementations from SOA. Or the beginning. SOA is just an "architecture" paradigm, and concrete operations need to be summed up in practice.