SOAP (Simple Object Access Protocol).
SOAP version1.2 stands for Simple Object Access Protocol and it is widely used to set up web services online.
As a protocol specification, SOAP is used to exchange typed and structured information in a decentralized and distributed environment, between peers or computing devices.
SOAP is an eXtensible markup language (XML)-based information transfer protocol, which at its core, it is stateless; this means that the message is exchange one-way only between computing devices, using an XML document of course.
An application however, do make complex interaction patterns, when using SOAP but generally the communication happens, one way only.
In other words, computing devices can exchange information in a request/response method; so that a request is sent by one computers and another computer responds to the request.
The request/response method, is used in a SOAP connection, so that computers can communicate to each other.
Many applications accomplish this type of communication, with a combination of application specific information and features.
The combination of application specific information and features are provided by the protocol, which underlies the system, in this case we are talking about SOAP.
A message construct that is exchanged, over different underlying protocols, is a result of an extensible message framework, which is defined by SOAP through using XML technologies.
Application specific information, could be transported in a manner that is extensible.
Implementation specific semantics and other programming methods have a framework designed for it.
Also other required actions to transport the information has a full description that is provided by SOAP, to establish a full request/response method of communication.
SOAP is light weight, because of the transport mechanism that hypertext transfer protocol (HTTP) provides; this transport mechanism allows SOAP to send messages based on XML mark up.
I know you are hearing HTTP and XML a lot on this article post, and I hope you already have a general idea, of what these terms mean, but if you don’t, please contact us and we’ll provide you with the information you need.
Also you can browse online and this website to find out more about HTTP and XML.
Alright let’s get back to our original topic; messages sent through Soap are often called a SOAP envelop, which is sent to a server for processing, in a request/response method.
The SOAP protocol can be utilized to send a SOAP message, to an application or a website, which performs a service for visitors, or simply just serves valuable information, in a formatted page, to users, who request for particular information.
The message that is sent through SOAP, would have the needed arguments for an online search, to be performed on online search engines.
The website that has the information, which is being searched, would respond to the request, with a document formatted in XML.
The XML formatted document, can be combined with a third-party website or an application directly, because the data returned, is a standardized machine-parse-able data, which can be used for many things; such as serving information to users, who are seeking certain type of knowledge online or to provide a service online, such as paying your bills.
A strong connection between the client and the server in not required in SOAP, this is different from proprietary protocols like DCOM or RMI, which require the connection to be strong.
SOAP envelops are SOAP messages, which are passed from the Client to the Server and from the Server to the Client.
Please don’t confuse this type of information with a two way type of information, because as mentioned before, computing devices communicating with SOAP, can only send requests and receive information.
Thereby making this type of communication a one way type of connection, between two or more computing devices.
Microsoft is one of the major companies that relies on SOAP today, for its web-services.
SOAP has an important part in Microsoft's .NET platform; therefore, the company uses a lot of SOAP to accomplish their daily tasks.
SOAP is not tied to a specific vendor, it is also innovative and compelling and it has major benefits.
One of the best parts of SOAP is that you can learn to master this protocol, free of charge to you.
However, you will need to know how the website technologies work, or you will have a hard time, trying to understand SOAP.
Before we jump into some more SOAP interesting information, let’s first talk about the history of SOAP.
The History of SOAP
On June 24, 2003 SOAP Version 1.2 became a W3C recommendation, it was designed by Don Box, Dave Winer, Mohsen Al-Ghosein and Bob Atkinson in 1998.
Atkinson and Al-Ghosein had started work on SOAP as an object-access protocol, then other developers joined them and continued the development of SOAP in a project for Microsoft.
The World Wide Web Consortium has an XML Protocol Working Group that is maintaining the SOAP specifications today.
SOAP makes a very powerful combination, of a powerful web technology called HTTP and the extensibility of XML.
This combination facilitates the operation of programs and applications, which are already on the market, become accessible to a broader range of users.
XML protocols are the technologies that enable web services.
The communication that happens on the INTERNET and the way data is represented in XML format, is governed by XML protocols that exist online.
SOAP was originally an XML-based RPC mechanism, which evolved in what we all know today as SOAP.
The thought of XML-based distributed computing started back in 1997, the purpose of it was to enable the communication of applications through RPC (Remote Procedure Calls) on top of HTTP.
The SOAP project had its difficulties as it was evolving at Microsoft, because the DCOM team in the company was against SOAP.
SOAP, however has become a very important tool today, in the technology industry.
SOAP remains as the best way to standardize XML distributed computing information, across-platforms, because it is flexible and does not require applications, which are trying to stablish connection, to be on the same operating system (OS).
Also simplicity is one characteristic that drives successful architectures, which are being accepted in a large scale.
SOAP is a simple protocol specification, which does not require too many complex set ups and designs.
Microsoft worked on a version of XML Schema called XML Data; that added support to name spaces and all XML products as well.
It was at this moment that SOAP really started to gain acceptance in the community, still as an XML-based RPC mechanism SOAP gain additional momentum and it appeared for review from the public, September the 13th 1999, thess are some odd numbers.
On December of 1999 it was also submitted to the IETF (the Internet Engineering Task Force) as an Internet public draft.
The submission of SOAP version 1.1 as a Note to the World Wide Web Consortium (W3C) was on May 8 2000.
The SOAP Architecture
WDDX (Web Distributed Data eXchange), the HTTP and RPC bindings from XML-RPC is where SOAP inherits its envelop, header and body as well as its transport and interaction neutrality.
WDDX is the mechanism that passes data from one environment to another, and one computer to another.
The SOAP architecture follows several specifications for its massage format MPE (Message Exchange Patterns).
A typical SOAP communication architecture is composed of the SOAP client: This is a software that can generate and send request to a SOAP server over HTTP.
The SOAP client is also able to find server response, once a request has been made, of course.
Another part of the SOAP communication is the SOAP server: this is another software, which is capable of accepting client requests, invoking the service, converting the response to a SOAP-message and respond back to the client.
Finally, SOAP communication architecture is also composed of the actual service: this is a service that performs a requested job, when the SOAP server invokes it.
The SOAP envelope element can be explained as the start and end of a message, the recipient will understand when a full message has arrived, after a request has been made to the server.
Servers can also understand a request, when it arrives, and it calls on the correct services and/or information, to fulfill the request at hand.
The envelop element is a required part of a SOAP message, without a SOAP envelop, SOAP messages would not be able to be accomplished.
The envelop element, is the root of every SOAP message and they must contain one body element only.
When a server is finished receiving a request and is ready to process it, the SOAP envelope knows that and alerts the server.
The server then employees whatever services it need to employ, in order to fulfill SOAP requests.
The SOAP envelope is composed of two parts: A header which is optional and provides authentication information and a body, which contains the message.
The SOAP envelope is a mechanism that is concerned with packaging the information.
Without the SOAP envelope the server wouldn’t know where a messages started or where it begins.
The SOAP envelop also that is received also alerts the server, whether a message has been received in its entirety.
The packaging mechanism of the SOAP envelop, also allows a server to know, when it should start to process a message, when a message is being received.
If you would like to use SOAP to send a message, then you would have to use the ENV namespace prefix, to specify a new SOAP envelop.
Also you have to make sure that the version of SOAP matches the version that you would use in your envelop.
A good example of a SOAP message that is compliant with v1.2 is shown below.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2001/12/soap-envelope" SOAP-ENV:encodingStyle=" http://www.w3.org/2001/12/soap-encoding">
Message information goes here
The SOAP envelope contains two parts: 1. An optional header providing information on authentication, encoding of data, or how a recipient of a SOAP message should process the message.
2. The body that contains the message.
These messages can be defined using the Web Services Description Language (WSDL) specification, which is used to describe web services.
SOAP commonly uses HTTP, but other protocols such as Simple Mail Transfer Protocol (SMTP), may be used as well.
SOAP can be used to exchange complete documents or to call a remote procedure.
SOAP is also used to set up web services, which are methods used across a network of computers, for example, the intranet of a corporation.
Web services are entirely set up, for the communication that exist between computers.
When a website is translated from one language to another by web services, SOAP is usually behind the scenes making request to a serve, which can translate any website into any language.
It is without a doubt that SOAP has become the backbone of web services, in a very little amount of time.
Many web services have been established online due to SOAP, such web services are: stock quotes, which can be incorporated into specialized applets.
Also web site that can search online for the best prices on items, use the SOAP protocol to accomplish this and provide their visitors, with the best products for the lowest prices.
Web services are created to make the life of developers and users much easy, and to stream line certain services that don’t need to be handled by a developer or a user.
Firewall servers can’t block SOAP calls, because HTTP port is typically 80, and follows all the rules.
Other types of calls are usually blocked, by firewall servers, due to security reasons; however programs using SOAP calls to communicate, are more than likely communicating with other programs, anywhere else in the world.
SOAP calls are also able to use different transport protocols, which includes HTTP and SMTP.
SOAP also has disadvantages as well though, and one of them is the fact that SOAP calls are usually slower than other types of middleware standard.
Also SOAP is not well supported in all programming language, this means that the support you’d find for SOAP in Python or PHP, you will not find that same type of support for other languages, such as Java or .NET.
Thank you for reading this post!!!