SERVICE ORIENTED ARCHITECTURE (SOA) Overview


Service-Oriented Architecture (SOA) is an IT strategy that organizes the discrete functions contained in enterprise applications into interoperable, standards-based services that can be combined and reused quickly to meet business needs.

Why SOA
There are many reasons for an enterprise to take an SOA approach, and more specifically, a web services-based SOA approach. Some of the primary reasons are:

Reusability - What drives the move to SOA is reuse of business services. Developers within an enterprise and across enterprises (particularly, in business partnerships) can take the code developed for existing business applications, expose it as web services, and then reuse it to meet new business requirements.

Interoperability - The SOA vision of interaction between clients and loosely-coupled services means widespread interoperability. In other words, the objective is for clients and services to communicate and understand each other no matter what platform they run on.

Scalability - Because services in an SOA are loosely coupled, applications that use these services tend to scale easily -- certainly more easily than applications in a more tightly-coupled environment. That's because there are few dependencies between the requesting application and the services it uses.

Flexibility - Loosely-coupled services are typically more flexible than more tightly-coupled applications. In a tightly-coupled architecture, the different components of an application are tightly bound to each other, sharing semantics, libraries, and often sharing state.

Cost Efficiency - Other approaches that integrate disparate business resources such as legacy systems, business partner applications, and department-specific solutions are expensive because they tend to tie these components together in a customized way.

SOA-based applications are distributed multi-tier applications that have presentation, business logic, and persistence layers.
Services are the building blocks of SOA applications. While any functionality can be made into a service, the challenge is to define a service interface that is at the right level of abstraction. Services should provide coarse-grained functionality.

Realizing SOA with Web Services
Web services
are software systems designed to support interoperable machine-to-machine interaction over a network. This interoperability is gained through a set of XML-based open standards, such as WSDL, SOAP, and UDDI. These standards provide a common approach for defining, publishing, and using web services.

Web Services is an emerging technology that provides machine-to-machine interaction over a network using an XML based protocol called
SOAP. Web Services are an important building block of a Service Oriented Architecture or SOA. SOAP is analagous to Remote Procedure Calls (RPC) or Remote Method Invocation (RMI) which also can be used in a SOA. Alternatively, SOAP can use a "document-style" for its calls; this minimizes the need to call the service multiple times for most requests.

Interfaces available through a SOAP based Web Service are generally described using the Web Services Description Language (
WSDL). Location of WSDL files are often times indexed in a UDDI server, although UDDI never became a critical part of web services deployments. In recent years, UDDI's role as a directory of services has been superceded by Web Service Brokers, which provide a single access point to multiple services while providing functions common to most services such as caching, logging, security, and high availability (failover/clustering). Synapse from the Apache Foundation provides one such broker.

SOAP and Web services, broadly speaking, are not restricted to using HTTP for transport. Many SOAP libraries include support for
SOAP over SMTP (via email), XMPP (instant messaging protocol), and other transports. Support for alternate transports is something to consider when implementing SOAP-based services.

A useful web service is one that exposes information through a generic interface that is intended for multiple consumers. The better designed your web service, the more useful it becomes for the consumers of that web service.

Keywords Catalog:
Service-oriented architecture (SOA), rich Internet applications (RIA), open source software ( OSS ) and Web 2.0 are all hot and relevant topics on their own. When combined, however, they really become powerful.

SOA - First proposed by Gartner analysts, SOA expresses a perspective of software architecture that defines the use of services to support the requirements of software users. In an SOA environment, resources on a network are made available as independent services that can be accessed without knowledge of their underlying platform implementation.

RIA - Though the concept had been around for a number of years, the term RIA was introduced in a Macromedia whitepaper in March 2002. RIA applications are Web-based applications that run in a Web browser and do not require software installation, but still have the features and functionality of traditional desktop applications.

OSS - Open source software is computer software whose source code is available under a copyright license that permits users to study, change and improve the software, and to redistribute it in modified or unmodified form.

Web 2.0 - O'Reilly Media coined the phrase Web 2.0 in 2004 to refer to a supposed second-generation of Internet-based services that let people collaborate and share information online in perceived new ways - such as social networking sites, wikis, communication tools and folksonomies. Web 2.0 has become a popular, if ill-defined and often criticized, buzzword amongst the technical and marketing communities.


Links

Udi Dahan Blog on SOA - http://www.udidahan.com/?blog=true

gsoap YahooGroups - http://tech.groups.yahoo.com/group/gsoap/

Developing WebServices with gSoap -
http://www.ddj.com/cpp/184401909

gSOAP 2.7.10 User Guide(In HTML) -
http://www.cs.fsu.edu/~engelen/soapdoc2.html#tth_sEc7.1.2

gSOAP 2.7.10 User Guide(In PDF) -
http://www.cs.fsu.edu/~engelen/soapdoc2.pdf

gSoap Sample(Developing Calculator Webservice) -
http://www.genivia.com/Products/gsoap/demos/calc.html

gSoap Sample Code -
http://www.cs.fsu.edu/~engelen/soap.html

Unit Testing WebServices Tool - SoapUI (
http://sourceforge.net/projects/soapui)

Intercept WebService Soap Calls : Tool - WireShark (
http://www.wireshark.org/)

Apache tcpmon: An open-source utility to Monitor A TCP Connection Link -
https://tcpmon.dev.java.net/

WSMonitor - wsmonitor (Web Services Monitor) is a light-weight SOAP and HTTP traffic monitor. This tool intercepts and logs the SOAP messages and HTTP headers between a sender and a receiver and displays them nicely formatted in a graphical user interface Link :
https://wsmonitor.dev.java.net/

Apache Webservices Common Tools Link -
http://ws.apache.org

Fiddler - Web Debugging Tool (Intercept HTTP Headers) -
http://www.fiddlertool.com/fiddler/version.asp

Apache WebServices Wiki -
http://wiki.apache.org/ws/