Wednesday, 2 March 2011

SOA

The service oriented architecture is a design paradigm to build computer software as services.Applying the set of well defined guidelines of SOA results in units of software partitioned into operational capabilities, each designed to solve an individual concern.

In order to describe the evolution of SOA first we need to define the problems that were faced by developers and how did they come up with a solution.Early programmers realised that they were not able to reuse code that they coded ,so so came up with a solution called modular design.Then they were cutting and pasting their modules into other applications and that this started to create a maintenance problems when a bug was discovered in a function somewhere, they had to track down all of the applications.

Researchers proposed  object oriented software design  to solve this, and many more, problems. Again, as software complexity grew, developers started to see that developing and maintaining software was complex and they wanted a way to reuse and maintain functionality, not just code.To address the above problem component based software was introduced.

Component-based software is a good solution for reuse and maintenance, but it doesn't address all of the complexities developers are faced with today. Today there are many problems  like distributed software, application integration, varying platforms, varying protocols, various devices, the Internet, etc.

To address these problems SOA was introduced with well defined components,standards.guidelines.


A service in SOA has functionality with three properties:
  1. The interface contract to the service is platform-independent.
  2. The service can be dynamically located and invoked.
  3. The service is self-contained. That is, the service maintains its own state. 












Difference between web application and web service

Web application is a application which is present at the server and the web application uses the web pages as a presentation of content for human users.The data of a web application is stored and manipulated at the server side.In short  the web application resides on a server and it is a collection of web pages  defined using "html,jsp,asp" e.t.c. these can be invoked by a web server like IIS or Apache upon user request.

On the other had a web service provide service to other application and they are not directly used by the end users.It is server based program which cannot be accessed by the client browser and provides for interaction between other application.The web service do not normally have a GUI based interface and used normally by programmers ,web developers to develop other web based application.


Evolution Of Service Oriented Architecture

Service Oriented Architecture is all about collection of services where service is a function which is well-defined,self-contained and does not depend on the context or state of other services.
As we all know Architecture will be the first stage in software creation in which quality requirements can be addressed.
A Service actually forms end-point of a connection and actually describes what we connect together using web services.
So the Web Services purposefully use XML for establishing a robust connection.

The Importance Of XML is described as follows.
  1. XML documents benefit from their hierarchical structure say in a document for example we are willing to move a heading to a new location and drag everything under it along with the heading instead of having to page down to make a selection cut and then paste the selection into a new location.
  2. XML is not a binary format .We can create and edit files using anything from a standard text editor to a visual development environment which makes it easy to debug our programs and it makes XML useful for storing small amounts of data.
  3. XML front end to a database can store large amounts of XML data.So XML provides scalability for small configuration files to a company wide data repository.
  4. XML markup is a meta language which means markup can be used to describe other languages and allows you to create our own XML tags where it provides information about the information for which we are creating the XML based document structure.XML tells about data identification like what kind of data we are accessing.
  5. XML can be easily processed and XML documents can be composed from separate entities which gives a characteristic called In-line Re-usability.



web services vs web application

web servicesweb applications
Service used by web applicationsoftware application hosted on browser Provides GUI for the end users and offers some functionality using web services
Independent of the programming language and the operating systemDependent on the OS and programming language
services can be used by many applications Applications cannot be used by other applications
Technologies used are XML,SOAP,WSDL........HTML,Javascript,Flash,Ajax.......

Evolution of SOA

According to IBM, SOA can be defined in several ways depending upon the point of view:
From the point of view of:SOA is
Business executive and business analystA set of services that constitutes IT assets (capabilities) and can be used for building solutions and exposing them to customers and partners
Enterprise architectA set of architectural principles and patterns addressing overall characteristics of solutions: modularity, encapsulation, loose coupling, separation of concerns, reuse, composability, and so on
Project managerA development approach supporting massive parallel development
Tester or quality assurance engineerA way to modularize, and consequently simplify, overall system testing
Software developerA programming model complete with standards, tools, and technologies, such as Web services
The above set of definitons gives a clear picture of what are the capabilities of SOA, It is seen as set of services, sometime as set of architectural principles. Each has their own way to look into this.

To begin with,lets see what was there before SOA,In the mid and late 90s the evolution of WEB was at its peak(DOT COM boom), People started looking at the WEB as a good platform for extending their business, Many of them ported their business as web application, but this has its own limitations, In beginning, these web application were built as single Monolithic application, the underlying architecture was Client Server architecture. The user used to interact though this application to access the server.

This has got several problems, like access to the data required by others, this lead to development of new softwares like screen scrapping. But this was not the complete solution to the problem. To overcome this problem, the services has been improvised, these were the API to the various application needed.

But now the problem was how to access this. Due to the different specifications and standard being used. The direct interaction was not possible. To overcome this broker agents were introduced. But this was not able to solve the comlete problem of consistency. 
To overcome this,the new architecture has been introduced SOA. This uses XML based language for the communication between different identity. The SOAP is used for the communication between the service provider and the requester of that service. WSDL is used for describing the services provided by the various service providers. UDDI is used to describe and integrate them.

The SOA is playing important role in integrating the various services, as it is platform independent. Many organizations e.g. W3C, OASIS are working in the direction of standardization of the architecture and specification of SOA. Many companies like Microsoft, IBM, Sun Microsystems are also trying to make a standard for these.

web service???

Basically providing services on the web, using technologies like XML, SOAP, WSDL and UDDI  over an Internet protocol backbone.XML is used to tag the data, SOAP is used to transfer the data, WSDL is used for describing the services available and UDDI is used for listing what services are available.web services do not provide GUI to the user instead it shares business logic, data and processes through a programmatic interface across a network.Application developers add GUI to web services to provide some functionality for users.web services are not tied to any OS or programming language.  
------------------------------------------------------------------

Web Services Toolkit

A software development environment for designing, developing, and executing Web service technologies
http://www.alphaworks.ibm.com/tech/webservicestoolkit
------------------------------------------------------------------

Difference Between Web Applications and Web Services

According to definition Web services are that provide a standard means of inter-operating between different software applications, running on a variety of platforms and/or frameworks Web services are all about making different types of applications compatible to inter operate with other.

We can say that web services are mechanism to access remote objects or functions by using HTTP and XML in combine called SOAP(simple object access protocol). Soap has some

methods to access programmable application by some logic and methods.

Web services use soap protocol while web application use http protocol.

Clients are only have to deal with send and get for xml request using SOAP and web applications are accessible by clients.

Web services can be implemented at any client or server place to make data secure, so that when w

eb services are being use on server side,

even programmer also can not find that data.

For an example, a Web Application as defined in Java is a formal way of packaging Servlets where a "Web Service" is a single service which usually communicates with other components through SOAP messaging. Thus a "Web Services" is much closer to an Java Beans than to a whole "web application".

Web services are well defined functions having standard interfaces that just expose a behavior where web applications are browser based applications that also include an interface and functions that are bound into a single application that is run from the web. A web service, however is also an application whose purpose is to serve a service to clients or users.

A web application is like a web site. You can log onto to it, browse, do things etc and consumers are people.