Original article: http://www.cnblogs.com/hussar/archive/2006/06/17/428514.html
Service-Oriented Architecture (SOA) is a component model that appliesProgramDifferent functional units (called services) are linked by well-defined interfaces and contracts between these services. Interfaces are defined in a neutral way. They should be independent of the hardware platform, operating system, andProgramming Language. This allows services built in various such systems to interact in a unified and universal manner.
This neutral interface definition (not forcibly bound to a specific implementation) is called the loose coupling between services. There are two advantages of loosely coupled systems: flexibility and gradual changes in the internal structure and implementation of each service that forms the entire application, it can continue to exist. On the other hand, tight coupling means that interfaces between different components of an application are closely linked with their functions and structures. Therefore, when some or all applications need to be modified, they are very fragile.
The need for loosely coupled systems comes from the need for business applications to become more flexible as needed to adapt to changing environments, for example, the policy, business level, business focus, partnerships, industry status, and other business-related factors that often change may even affect the nature of the business. We call a business that can flexibly adapt to environment changes as an on-demand business, you can make necessary changes to the way tasks are completed or executed.
Although the service-oriented architecture is not a new thing, it is an alternative model of a more traditional object-oriented model. The object-oriented model is tightly coupled and has existed for more than 20 years. Although SOA-based systems do not rule out the use of object-oriented design to build a single service, the overall design is service-oriented. Because it takes into account the objects in the system, although SOA is object-based, as a whole, it is not object-oriented. The difference lies in the interface itself. A typical example of a SOA system prototype is the Common Object Request Broker Architecture (CORBA), which has been around for a long time. Its definition is similar to that of SOA.
However, the current SOA is already different because it depends on some updates that are based on the Extensible Markup Language (XML. You can use an XML-based language (Web Service Definition Language (WSDL) to describe an interface. The service has been transferred to a more dynamic and flexible interface system, the Interface Definition Language (IDL) is not comparable to the interface Description Language (UML) in the previous section.
Web services are not the only way to implement SOA. The same way is to use the message-oriented middleware (message-oriented middleware) system, such as IBM MQSeries. However, to create an architecture model, you do not only need service descriptions. You need to define how the entire application executes its workflow between services. In particular, you need to find the conversion point between the business operations and the operations of the software used in the business. Therefore, SOA should be able to link business processes with their technical processes and map the relationships between them. For example, payment to a supplier is a commercial process, while updating your part database to include the newly supplied goods is a technical process. Therefore, workflows can also play an important role in SOA design.
In addition, a dynamic business workflow can include operations between departments, or even operations performed with external partners not under your control. Therefore, to improve efficiency, You need to define a policy that defines how to know the relationship between services. This policy is often in the form of service-level agreements and operational policies.
finally, all of these must be in a trusted and reliable environment, and the process should be implemented in accordance with the agreed terms as expected. Therefore, secure, trusted, and reliable message transmission should play an important role in any SOA.