SOA is an English Service-Oriented Architecture, short for Service-Oriented Architecture. This term has been frequently used in various technical journals in the past one or two years. However, there has always been no clear answer to what SOA is; What are the characteristics of SOA? Which problems are suitable for solving? What is the difference and connection with other technologies? What is the relationship between Web Service and SOA? What is the impact of SOA on Software Architecture Design? This article will discuss the above issues and try to give the definition of SOA Based on the author's own understanding; Summarize the three basic features unique to SOA; and then explain these features using HTTP protocol as an example; finally, it briefly describes the potential impact of SOA on the future software architecture design.
SOA Definition
The following is a definition given by the author to SOA: SOA refers to the need for business integration in the Internet environment, A software system architecture implemented by connecting independent functional entities that can complete specific tasks. In this definition, the premise I want to express is as follows:
1) Software System Architecture: SOA is neither a language nor a specific technology, but a software system architecture. It attempts to provide a recommended architecture in a specific environment, from this perspective, it is more like a Pattern ). Therefore, it is complementary to many existing software technologies, such as object-oriented technology, rather than mutex. They are designed for different application scenarios to meet different requirements.
2) scope of use of SOA: The requirement determines and limits functions. SOA is not a panacea. Its main application is to solve the problem of business integration between different commercial applications in the Internet environment. Next we will discuss in detail how the characteristics of the Internet determine the characteristics of SOA. Here we just need to briefly review the characteristics of the Internet environment that are different from the Intranet environment:
A) a large number of heterogeneous systems coexist. Computer Hardware works in different ways, operating systems and programming languages;
B) massive and frequent data transmission is still slow and unstable;
C) The version upgrade cannot be completed, and we cannot know which machines on the Internet directly or indirectly use a service.
Based on the above premise, let's take a look at the basic features of SOA.
Three basic features of SOA
1. independent functional entities
In a loose environment like the Internet, any access request may fail. Therefore, any structure that attempts to control over the Internet may face serious stability problems. SOA emphasizes the completely independent capabilities of functional entities that provide services in the architecture. Traditional component technologies, such. NET Remoting, EJB, COM, or CORBA all require a Host (Host or Server) to store and manage these functional entities; when the running of these hosts ends, the service life of these components also ends. In this way, other application services running on the host will be affected when the host itself or other functions are faulty.
The SOA architecture emphasizes entity self-management and recovery capabilities. Common technologies used for self-recovery, such as Transaction, Message Queue, Redundant Deployment, and Cluster) it plays a vital role in SOA.
2. Low-frequency access to large data volumes
For. NET Remoting, EJB, or XML-RPC for these traditional distributed computing models, their service is provided through the function call method, to complete a function, you must call the function multiple times between the client and the server. In an Intranet environment, the impact of these calls on the system's response speed and stability is negligible, however, in the Internet environment, these factors are often a key factor that determines whether the entire system can work normally. Therefore, it is recommended that the SOA system exchange information with large data volumes at one time.
3. text-based message transmission
The existence of a large number of heterogeneous systems in the Internet determines that SOA systems must adopt text-based instead of binary message transmission methods. In traditional component models such as COM and CORBA, a binary-encoded object is uploaded from the server to the client, and some functions are completed by calling the method of this object on the client; however, in the Internet environment, different languages and platforms have different definitions of data and even some basic data types, which makes it very difficult to transmit objects between different services. Because text-based messages do not contain any processing logic or data type, only text is transmitted between services, data processing relies on the acceptor to bypass the compatibility challenge.
In addition, for a service, the biggest difference between the Internet and LAN is that version management on the Internet is extremely difficult, traditional software upgrades are almost impossible in this loose distributed environment. The text-based message transmission method is used. The data processing end can only process the part of the data that you understand and ignore other data to achieve ideal compatibility.
HTTP protocol: a typical SOA Implementation
Every new technology is developed on the basis of some old technologies. Just as the fundamental idea of XML comes from the early labeled language that emerged in 1960s, although SOA has only appeared in the past two years, however, the concept it expresses should be said that the distributed system structure of the network has been widely used soon. For example, the most familiar HTTP protocol is a very typical SOA architecture design. The HTTP protocol is described as follows:
1) The client usually sends a request to the server in text form through a browser to request a Web page;
2) After receiving the request, the server processes the request based on the content of the request and returns a text conforming to the HTML syntax;
3) After receiving the response text from the server, the client calls a local program, usually in a browser, to display the returned HTML text.
Next let's take a look at how HTTP meets the characteristics of SOA:
* Independent functional entities: as a Web server on the server side, it will never change because of changes in the client status. It always runs very stably according to its internal logic and responds to external requests, manage your own resources and data. A good example here is how the Web server processes the Cache. Many Web servers Cache data more or less to improve performance, however, operations that are completely unrelated to the client, such as cache data and refresh data, are completely completed independently by the server, and are not affected by the client.
* Low-frequency access to large data volumes: For an HTTP request, the access boundary between the client and the server is very simple: a request, a response, and no other information. No matter what information does the client apply for on the webpage besides text, the client simply sends a request to the Web server where it needs the webpage; to generate this webpage, whether the server needs to access the database or execute Servlet or other CGI programs is completely transparent to the client.
* Text-based message transmission: the most compatible system so far may be most web applications supported by HTTP, on Windows, we can use IE to view a Web page automatically generated by Perl scripts on a Linux + Apache server on the Internet. The key here is that all content is transmitted in formatted text. No matter how the Perl script is executed, as long as its output is a webpage compliant with HTML specifications, it can be interpreted by the client browser. However, since different operating systems follow the same specifications for the same HTML interpretation, the same user interface can still be seen in different operating systems.
The above section describes the features of SOA as a software architecture. Let's take a look at the relationship between Web Service and SOA.
SOA and Web Service
Web Service is a collection of technologies that are most suitable for implementing SOA, in fact, the recent popularity of SOA is largely due to the maturity of Web Service standards and the popularity of applications, which provides the foundation for the wide implementation of SOA architecture. Let's take a look at how various protocols in Web Service work with each other to meet the characteristics required by SOA:
* Independent functional entities: by searching the UDDI directory, We can dynamically change the provider of a service without affecting the application configuration of the client. All accesses are implemented through SOAP. As long as the WSDL interface is well encapsulated, the external client cannot directly access the data on the server.
* Low-frequency access to large data volumes: Using WSDL and Literal-based SOAP requests, we can implement interfaces that can receive large amounts of data at one time. It is important to note that SOAP requests are divided into text and Remote Call (RPC) methods. As mentioned above, SOAP requests using remote call methods do not meet this requirement. Unfortunately, most existing SOAP requests still use the Remote Call (RPC) method. On some platforms, such as earlier versions of IBM WebSphere, no text SOAP support is provided.
* Text-based message transmission: All Web Services communicate through SOAP, while SOAP is based on XML, different versions can be identified and differentiated using different DTD or XML Schema. Therefore, we only need to provide different processing for different versions to easily achieve version control goals.
Impact of SOA on Software Architecture Design
Whether your current system involves Internet-based business integration or not, the architecture recommended by SOA is of great help to improve the scalability of your system, the following are the changes that need to be made in the software architecture after SOA is introduced in the system:
* Use text-based SOAP calls to get rid of data-independent information such as the function parameter types in remote calls, and ensure that all SOAP messages pass meaningful commercial data. The data is interpreted based on the Schema instead of the class definition.
* The traditional three-layer Web application may become a four-layer structure: in the traditional sense, the business logic layer will be further divided into the storage of each Session) the customer logic layer of the information and the SOA layer unrelated to the State.