Introduction
If you ask a computer expert what is the trend in modern Information Technology on the server-side, you may get the answer web services, SOA(Service Oriented Architecture) or Cloud. Among these answers, the term SOA is the most confusing. Let us have a simple discussion on basic SOA concept.
What is Services?
Firstly, we have to know more about “services". According to the dictionary, service is a facility supplying some public demand, and the work performed by one that serves, help, use, benefit other. Services should be non-material equivalent of physical goods. As a matter of fact, it can be a process that creates benefits by facilitating either a change in customers, a change in their physical possessions, or a change in their intangible assets. Computer system especially software is target to model or facilitate the real world services, so a service in the computer system is common. the example of services in computer system are as followings:
- A Windows Service: Plug and play, Windows backup, DHCP Client,
- Software Service: Distribution transaction Service, Server resources management, Logging
- Business Service: Order fulfilment, Customer Management
Services refer to high-level distinctive functional components that encapsulate business or system processes. Conceptually, they are “Lego Block" in the computer system.
SOA overview
A service-oriented architecture (SOA) is basically a collection of services that are able to communicate with each other, SOA is an architectural style to applying loose coupling In the computer system, a service that provided by a service provider is a unit to achieve required end results for a service consumer. Each service is the endpoint of a connection which can be used to access the service and interconnect different services. Furthermore, communication among services can involve only simple invocations and data passing, or complex coordinated activities of two or more services.
SOA common goal
As you know the SOA is confusing, it is not well-defined yet. In fact, architectural guidance is relatively fewer so industry focused on concrete technologies, vendor usually have its solution and tools for SOA, we are now usually developing reference architectures based on software patterns to providing architectural framework for Service-Oriented Architectures (SOA). SOA definition Service-Oriented Architecture is an architecture styles or approach to archive the following goals:
- Rationalize enterprise integration
- establish process driven applications
- Re-use existing services to build new value
SOA heavily relies on standards for implementation:
- Standard interface definitions
- Standard data format
- Standard wire protocols
- Standard security protocols
Why SOA?
Employing SOA can bring a lot of benefits to an enterprise. Such as Standardized interfaces and data models Re-use, and Composability. some of important service-orientation design principles
- Standardized Service Contract
- Service Loose Coupling
- Service Abstraction
- Service Reusability
- Service Autonomy
- Service Statelessness
- Service Discoverability
- Service Composability
Primary Concepts for SOA
- Service: A mechanism by which needs and capabilities are brought together.
- Service Description: Artifact declaring all relevant aspects of a service required to interact with the service. Capability: an ability to perform a specific set of functions resulting in a real world effect.
- Visability: The capacity for those with needs and those with capabilities to see each other and interact.
Characteristics of Services in SOA
The following are the characteristics of services in SOA:
- Coarse-grained
- Contract-based
- Modular
- Location independent
- Model-based
- Stateless
SOA Properties
- Services offer public interfaces
- Platform-independent
- Interfaces are defined using interface description languages (IDL)
- Stateless interaction, interaction is independent of each other
- Many protocols are used and co-exist
- SOA is not equal to Web services
- Web services realize SOAs
SOA concept diagram
Factors for considering SOA implementation
- Efficient use of system resources
- service maturity and performance
- EAI (Enterprise Application Integration): Packaged EAI solutions in future would have SOA as basic tenet and would continue to be the prime choice for large-scale integration.
SOA Basic Components
Patterns and SOA
Patterns based approach can be used for architecting SOA related system or application. Followings are Architectural significant artifact:
- Object-oriented design patterns
- General software architecture principle
- Distributing, messaging, resource management computing related patterns
- Networked and concurrent objects
- Component and language integration
- Process-driven architectures, business objects, and workflow systems
- Integration of processes and services
Pattern-based reference architecture for SOA
- Principles are used in a specific way to develop the reference architecture
- Systemic qualities are concerned.
- SOAs are implemented in a technology-neutral way
- Concrete guidelines are also given
The OASIS Reference Model for SOA
Oriented architectures and analysis / comparison. It is also a framework for understanding significant relationships among the entities in a SOA environment. OASIS Reference Model is an 2006
SOA and Java EE
Java API and Service are similar, both can utilize proxies. Moreover, RMI patterns are subset of SOA patterns. SCA and SDO are good SOA implementation approaches, standardization is strong in Java, so getting SOA done in Java EE is easy. The available technologies for services
- JAX-WS
- JAX-RS
- SCA, SDO
- Jini, RMI, EJB
- WSIT
- WS-Policy, WS-Security, WS-RM, WS-TX
Java EE platform allow to explore the use of BPM technology in the application, Java EE platform will allow SOA style web services to be exposed with relative ease. EJB architecture based system was easily extensible to SOA style web services., however layering analysis may be required, if the EJB components are not nearly a services.
OSGi
OSGi, created for Java-based systems, provides a framework for modular systems. OSGi makes it possible to define the dependencies of each individual module with the others and enables users to control the lifecycle and dynamically change each component of the system.
OSGi is a specification and the most common implementations can be counted as Equinox, Apache Felix and Knoplerfish.
It is worth to further discuss some of the concept and related tecnologies, please come again…
Peter


近期迴響