Monday, December 10, 2012

Components of Service Oriented Architecture (SOA) in Windows Communication Foundation (WCF)

I was studying implementation of web services (WCF - Windows Communication Framework) which used Simple Object Access Protocol (SOAP) and realized there are far too many concepts involved. In my research for making me better co-relate these concepts, I ended up creating basic definitions of the the concepts and finally make a pictorial representation of the components and represent how they relate with each other (which can be found in my next blog post called "Pictorial representation of Service Oriented Architecture (SOA)").

The components are:
Backend
Endpoint
Repository
Service Domain
BPEL
Enterprise service bus
Request-response
Service Lifecycle
BPMN
Heterogeneity
REST
SOAP
Choreography
Interface
Reusable
Versioning
Collaboration
Interoperability
Scalability
WCF
Composable
Orchestration
Security
Workflow
Consumer
Performance
Self-Contained
WS-*
Contract
Provider
Serialization
WSDL
DCOM
Registry
Service (Small s)
WWF
De-serialization
Reliability
Service (Big S)

Backend:
It is the conceptual part of a Service where the database should reside. All the data that is used for processing and needs to be stored should exist in this particular location. In the perspective of distributed systems, it can be interpreted that each system can have their unique and independent back ends. Another aspect that services should enforce is that, the services should not access data from each other’s service domains or systems, but they can interact with the services which are associated with them.


Endpoint:
It is a link or a point which exposes the service to the client for utilization. Without the exposed endpoint a consumer / client cannot consume the service. The endpoint should expose the metadata that is needed by the client.

Repository:
            It represents a business view of a service. It showcases the interfaces, the contracts and Service Level Agreements (SLA) that exist. The low level details about the content that exits in the repository can be found in the registries. Repository helps in designing and developing services but the actual implementation of the repository is actually done in registries, they contain the technical details.

Service Domain:
            Service domains represent individual systems that exist in a System as a whole. For example, in a passport issuing system, there are various individual systems that exist such as, Homeland Security system, Department of Transport System and Police Department system. These systems work together to work for the Passport Issuing system as a whole. These domains may have their own back ends / databases. 

BPEL:
            Business Process Execution Language (BPEL) is an XML based language used to orchestrate services to composed services or process services. The result of this language is a web service. This language is helpful since it helps to translate business requirements to the Information technology requirements. This language enables IT during implementation of the business requirements.

Enterprise Service Bus:
            This is a concept of how distributed systems should work together and how communication between them should take place. An important feature that ESB embraces is the interoperability of services. Its core task is to showcase a way of providing connectivity, routing and data transformation so that systems can communicate with services. A problem that ESB might create is that, it obscures the dependencies among systems.

Request-response:
            This is a message exchange pattern that allows communication to take place. It is normally initiated by the client / consumer. It is received by the server / service and further operations take place. The client waits for the response of the server. There can be a synchronous or an asynchronous request / response that could take place and it is solely depends on the client and server’s configuration.

Service Lifecycle:
            The service lifecycle can be defined as the life of the service. The service has a lifespan, it starts when it’s called / initiated and ends when the service is executed completely or the session between the client and the service ends. There might be various operations that need to take place during the lifecycle.

BPMN:
            Business Process Modeling Notation is a tool that can be used for preparing a business process that can be visualized in the terms of services, service domains and processes. It is a pictorial description of the business process. This helps in IT implementation especially when segregating services among the various domains.

Heterogeneity:
             It is a theory in services implementation which states that no matter what operating system, programming languages and data models they use they should be able to communicate and work together without any problem. This theory is used in Windows Communication Foundation (WCF) so that a Java application can communicate with a .NET based application.

REST:
            It is an alternative to Web Services that allows the same type of communication that WCF allows but in its unique manner. It refers to a collection of network architecture principles that focus on simple and stateless access to resources.

SOAP:
            Simple Object Access Protocol is a basic protocol used by web services. It uses XML based format that defines the format of the header and the body of a web service message.

Choreography:
            It is a way of aggravating services to business processes. It does not compose services to a new service or a central service that has total control over the whole process. It also defines rules and policies that enable different services to collaborate to form a business process.

Interface:
            It is an input/output region in the service, which allows the client / service to interact with each other. From a WCF perspective, it is the region which is exposed to the client or consumer.

Reusable:
            In the terms of WCF, it means that the code does not need to replicate. It can be referred and can be reused.

Versioning:
            There might be scenarios in which the service may need to be modified. Hence versions may need to be changed. This does not mean that the older version becomes obsolete. It still can be referenced by the services / systems that need it; the new version can be referenced by the systems / services that need it as well at the same time.

Collaboration:
            It basically means that all existing and being developed systems needs to work together at the end. From the formulation of ideas to the maintenance of its realization, distributed systems require collaboration.


Interoperability:
            It is the property of the system / service which states that different operating systems, programming languages or even different environments should be able to interact with each other. It is possible by the use of serialization and de-serialization in services / system communication.

Scalability:
            Its is the property of the system/service which allows new items to be added and removed as necessary without changing the overall working of the service / system.

WCF:
            Windows Communication Foundation is windows based service that embraces SOA. It allows communication by various clients not depending upon what operating system/programming languages it uses to communicate. It serializes the communication and allows interoperability.

Composable:
            It is a property or technique that allows multiple services to be related and finally compose into the making of a hybrid service. This allows a client to refer to services that will allow it to get its work done without creating new services or items in the service.

Orchestration:
            It is a theory that has the following characteristics:
·         There is one central controller that coordinates all the activities of the process.
·         You can apply the composite pattern, which means that the whole composition itself can be used as a service.

Security:
            In terms of WCF, it is the encryption of data that makes sure that data does not get transmitted as plain text and not captured by persons it is not intended to be sent.

Workflow:
            It describes how a certain result can be reached and it looks further into the details of all the steps that are needed to reach the results.

Consumer:
            It is the client or the system/service that consumer a service.

Performance:
            In WCF terms, performance is the time taken by the service to respond back to a client request. Performance can suffer due to network latency, programmatic error or data related problems that pertain to the database.

Self-contained:
            In WCF, it means that the service should be independent and autonomous.

WS-*:
            In WCF, it is a stack that adds extra headers to every message that goes out that pertains to object interaction.
            Some of the features that WS-* exposes are:
·         WS-Addressing
·         WS-AtomicTransaction
·         WS-Security

Contract:
            It is the part of a communication protocol between the consumer and provider that describes the semantics and behavior of the messages exposed in the interface.

Provider:
            It is the system that implements a service so that other systems can call it.

Serialization:
            It is the conversion of the data into a byte code for transmitting over the wire. When the data is converted into 0’s and 1’s it allows for interoperability by the use of web services.

WSDL:
            Web Services Description Language is the endpoint that exposes the service description to the client.

DCOM:
            Distributed components refer to a set of technologies designed to allow access to an object’s business logic across process and machine boundaries.

Registry:
            It showcases the technical details of the business process. It needs the repository to refer to the business process.

Service (Small s):
            It is the actual service implementation of the service that is exposed to the client.

Service (Big S):
            It is the name of the service that the business process has asked for. It does not deal with the actual implementation; it just exposes the functional elements of the service to the client. 

De-serialization:
            It is the process of converting the byte code to the code or interpretation that the client system can understand.

Reliability:
            In WCF, it is the property that allows communication to occur even if there is network latency or by any chance a particular data packet is lost. This feature forces the client to resend the lost packet until the whole data is collected / received.