Service-Oriented Architecture (SOA) Web Services
Service-Oriented Architecture (SOA) is a system of solutions characterized in terms of one or more services. Web services as a type of SOA allow programmers to use web services within their programs to perform specific functions.
The following are features and benefits of SOA:
- The Service feature provides the benefits of improved information flow, the ability to safely expose an internal function, and organization flexibility. SOA provides a way to offer software services over the Internet and the world-wide web.
- Service Re-use that has the benefit of lowering software development and management costs.
- Messaging that provides configuration flexibility by providing a way for systems to communicate with each other in a standardized way.
- Message monitoring that provides the benefit of business intelligence, performance measurement, and security attack detection.
- Message control which allows the application of management and security policies.
- Message transformation which is the conversion of data from one format to another through automated field mapping.
- Message security through encryption and cryptographic integrity-check fields.
- Complex event processing. Services can respond to events from other sources. For example, a financial information service might respond to stock-price changes, or a manufacturing production-control service might respond to production process events, such as changes in temperature of the materials being processed.
- Service composition by putting together of a number of simple services to make a more complex one.
- Service discovery which allows a program to discover services at run time instead of having to be pre-programmed. This provides the ability to optimize performance, functionality, and cost, and easier upgrades of systems since upgraded systems can be offered in parallel with older systems.
- Asset wrapping where assets and components are assembled to form a software service. The ability to integrate existing assets provides the benefit of preserving the value of an enterprise’s existing assets, the cost of developing or acquiring replacements is avoided, and there is a smooth migration path from the old architecture to new ones.
- Example: hypervisors that can provide different operating system environments.
- Model driven implementation which provides the ability to develop new functions rapidly.
The disadvantages of SOA are as follows:
- SOA is not suitable for applications with GUI functionalities. These applications require heavy data exchange which makes them much more complex.
- Applications that use asynchronous communication do not work very well with SOA.
- Standalone and short lived application implementations are not well suited for SOA. The development of an SOA for these applications is not worth the time and cost to create them.
SOA Web Services
Programmers use web services to provide specific services across the web for other programs. Web services are intended specifically for other services and not users. Web services typically are used by programmers to create programs to perform tasks that require another company or organization, example; credit card processing for an eCommerce vendor, or for checking a supplier’s inventory. In the first example a customer would order an item from an eCommerce vendor and pay for it using a credit card. The vendors system would have code that would contact the credit card company system to process the details of the transaction then send the results back. The second example, a customer looking for an item wants to know if an item is in stock. The vendor does not physically carry the item but rather processes the order and has it drop shipped directly from the supplier. In this case the vendors system can check with the suppliers system and verify if the item is in stock. In these examples, the vendor is contacting the web services of another company whose system actually processes the request then sends the results back across the internet to the vendor. All the functions and processing is transparent to the users who only see the results in a web page. Web services use what is known as loose coupling to be able to communicate with systems from different organizations. The idea is that with a web service, a program only needs to know the location (URL) of the web service, the web services functions, and parameters, to pass to the web service function. A Web Service Description Language (WDSL) file tells the program requesting web services what functions are available, parameter types, and other information that defines how the systems will communicate with each other. This loose coupling architecture allows systems from different organizations using different architectures and platforms to communicate and use functions provided over the web.
Web Service Roles
Web service architecture can be viewed either as individual roles of each service, or by examining the emerging Web Service Protocol Stack.
There are three major roles within the web service architecture as follows:
- The Service Provider who implements the service and makes it available on the Internet.
- The Requestor who utilizes the service by opening a network connection and sending a request.
- Service Registry which is a centralized directory of services that provides a central place where developers can publish new services or find existing ones.
The Web Service Protocol Stack (WSPS) is still evolving but currently has four layers that are as follows:
- The Service Transport layer which is responsible for transporting messages between applications.
- The XML Messaging layer responsible for encoding messages in a common XML format so that messages can be understood at either end.
- The Service Description layer is responsible for describing the public interface to a specific web service using the previously described WSDL.
- The Service Discovery layer that is responsible for centralizing services into a common registry and providing easy publish/find functionality.
Oracle for example provides an in-depth tutorial that instructs programmers on how to use Oracle XML DB Web services for Service-Oriented Architecture. The tutorial gives an overview and then provides prerequisites, the creation of a binary XML table, reviewing the XML schema in JDeveloper, and using Oracle XML DB Web Services. The tutorial provides code examples for creating network connections, and database protocols and commands to use.
Benefits of Web Services as Black Box
The term “black box” is a module where a software developer does not know or care how processing is performed, but only knows that valid code inputs will produce predictable results. This is another example of the loosely coupled relationship found in web services. The developer can treat the web service as a black box not knowing how the service performs a task, but knows that if they provide valid input to the service that they will get consistent results. This black box functionality provides the benefit of interoperability. The black box web service doesn’t care what creates the valid input, only that it is valid. This means that the input can be created by a variety of programming languages which allows a wide-array of services from different organizations to be able to use the web service. This functionality usually works outside of private networks and provide developers a way to develop non-proprietary solutions. The result is that the services developed are likely to have a longer life-span and offer a better return on investment of the developed service. Web service black box functionality lets developers use their preferred programming languages because of the use standards-based communications methods making web services platform-independent.
Web services that can be loosely-coupled allow various programs from many different platforms written in many different program languages to use a web service. Programmers do not need to know how the web service actually processes requests; they only need to know how to produce valid code inputs to the service to use it. Web services provide a way for systems to communicate in a standardized way.
Oracle XML DB Web Services. (n.d.). Using Oracle XML DB Web Services for Service- Oriented Architecture. Retrieved August 03, 2016, from Oracle.com, http://www.tutorialspoint.com/webservices/web_services_architecture.htm.
MSDN Benefits Web Services. (n.d.). Advantages & Disadvantages of Web Services. Retrieved August 4, 2016, from https://social.msdn.microsoft.com/Forums/en-US/435f43a9-ee17-4700-8c9d-d9c3ba57b5ef/advantages-disadvantages-of-webservices?forum=asmxandxml.
Paul, A. (2011, May 06). Service Oriented Architecture. Retrieved August 4, 2016, from http://www.techyv.com/article/service-oriented-architecture-soa.
The Open Group SOA. (n.d.). Service Oriented Architecture : SOA Features and Benefits. Retrieved August 4, 2016, from https://www.opengroup.org/soa/source-book/soa/soa_features.htm.
Tutorials Point Web Services. (n.d.). Web Services Architecture. Retrieved August 03, 2016 from Tutorials Point, http://www.tutorialspoint.com/webservices/web_services_architecture.htm.