<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://luminoussheep.net/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Web_Services</id>
	<title>Web Services - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://luminoussheep.net/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Web_Services"/>
	<link rel="alternate" type="text/html" href="https://luminoussheep.net/mediawiki/index.php?title=Web_Services&amp;action=history"/>
	<updated>2026-04-16T19:04:56Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://luminoussheep.net/mediawiki/index.php?title=Web_Services&amp;diff=49&amp;oldid=prev</id>
		<title>Martin: Created page with &quot;= Web Services = == References == Jboss users guide to web services http://www.jboss.org/jbossws/docs/jaxws_userguide-2.0/index.html  == Definitions == URI - uniform resource...&quot;</title>
		<link rel="alternate" type="text/html" href="https://luminoussheep.net/mediawiki/index.php?title=Web_Services&amp;diff=49&amp;oldid=prev"/>
		<updated>2021-09-14T21:21:44Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= Web Services = == References == Jboss users guide to web services http://www.jboss.org/jbossws/docs/jaxws_userguide-2.0/index.html  == Definitions == URI - uniform resource...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Web Services =&lt;br /&gt;
== References ==&lt;br /&gt;
Jboss users guide to web services&lt;br /&gt;
http://www.jboss.org/jbossws/docs/jaxws_userguide-2.0/index.html&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
URI - uniform resource identifier both below are URIs&lt;br /&gt;
URN - uniform resource name e.g. urn:luminoussheep&lt;br /&gt;
URL - uniform resource locater - resolvable address e.g. http://luminousheep.net&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
# service provider - WSDL&lt;br /&gt;
# consumer &lt;br /&gt;
# service broker - UDDI&lt;br /&gt;
&lt;br /&gt;
* WSDL describes service&lt;br /&gt;
** what operations&lt;br /&gt;
** where to find it, how to communicate - protocol (portType)&lt;br /&gt;
** format,encoding of messages (binding)&lt;br /&gt;
* UDDI advertises service&lt;br /&gt;
** tModel (technical model) - describes abstract resource - points to WSDL&lt;br /&gt;
** Categorises by service type &lt;br /&gt;
* SOAP communication mechanism&lt;br /&gt;
&lt;br /&gt;
Separating the what from the how and where allows different service providers to be used with ease&lt;br /&gt;
&lt;br /&gt;
UDDI&lt;br /&gt;
# supplier specific information such as company, address&lt;br /&gt;
# categorisation information &lt;br /&gt;
# technical service implementation information - binding template&lt;br /&gt;
&lt;br /&gt;
== uses ==&lt;br /&gt;
* connects disparate systems - different platforms - OS and language&lt;br /&gt;
** use in heterogeneous environments supports all languages, all platforms &lt;br /&gt;
** useful where no control over clients&lt;br /&gt;
* useful for supporting different display interfaces - web/mobile/desktop&lt;br /&gt;
* dynamic conditions - easy to update&lt;br /&gt;
* aggregating information - portals, customer care, collaboration&lt;br /&gt;
** multi channel - rich clients - IVR (interactive voice response)&lt;br /&gt;
* reduce redundancy - can be used to centralise services&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* no component model - no framework&lt;br /&gt;
* overhead - performance - can introduce scaling issues&lt;br /&gt;
* not a replacement in itself for ESB (extract, aggregate, transform, route)&lt;br /&gt;
* better off using native communication for local apps&lt;br /&gt;
&lt;br /&gt;
Reference http://www.oracle.com/technology/sample_code/tech/java/j2ee/jintdemo/tutorials/webservices.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SOAP ==&lt;br /&gt;
* Envelope wrapping a Header and Body&lt;br /&gt;
* Header - system level information such as security, transaction context, message correlation, session id - optional&lt;br /&gt;
* Body - payload - required&lt;br /&gt;
&lt;br /&gt;
Can be routed though intermediaries that operate transparently performing logging/authentication/decryption&lt;br /&gt;
&lt;br /&gt;
=== RPC ===&lt;br /&gt;
* provides name of procedure to invoke&lt;br /&gt;
* encoding can be defined by xsd or SOAP Encoding - SOAP Encoding definition is lacking - may have interoperability issues&lt;br /&gt;
* tightly coupled - WSDL defines sending and return parameters&lt;br /&gt;
* synchronous&lt;br /&gt;
&lt;br /&gt;
=== Document-style ===&lt;br /&gt;
* literal encoding - format specified by xsd&lt;br /&gt;
* loosely coupled - document driven - parameters sent as a document (instead of a set of parameters)&lt;br /&gt;
* contents of message determine how to process&lt;br /&gt;
* may be synchronous or asynchronous&lt;br /&gt;
&lt;br /&gt;
== Static invocation ==&lt;br /&gt;
* stubs generated from WSDL&lt;br /&gt;
* WSDL doesn&amp;#039;t need to be parsed each time&lt;br /&gt;
&lt;br /&gt;
== Dynamic invocation ==&lt;br /&gt;
* clients generated at runtime&lt;br /&gt;
** dynamic proxy - dynamic binding&lt;br /&gt;
* changes to WSDL do not break the client&lt;br /&gt;
&lt;br /&gt;
== MTOM ==&lt;br /&gt;
Message Transmission Optimization Mechanism&lt;br /&gt;
http://en.wikipedia.org/wiki/MTOM&lt;br /&gt;
method of efficiently sending binary data to and from web services. It uses XOP (XML-binary Optimized Packaging)&lt;br /&gt;
Replaces MIME and DIME&lt;br /&gt;
* WSDL interface now contains the binary definition&lt;br /&gt;
* MTOM may be used in a document literal wrapped WSDL&lt;br /&gt;
* MTOM doesn&amp;#039;t force attachments as Soap with attachments does&lt;br /&gt;
&lt;br /&gt;
* https://jax-ws.dev.java.net/guide/Binary_Attachments.html&lt;br /&gt;
* http://www.w3.org/TR/soap12-mtom/&lt;br /&gt;
&lt;br /&gt;
== RESTful Web Services == &lt;br /&gt;
JAX-WS support REST but REST isn&amp;#039;t good for tooling Sun&amp;#039;s [http://research.sun.com/spotlight/2006/2006-04-24-TR153.html WADL technical report] https://wadl.dev.java.net/ Web Application Description Language (WADL)] is an attempt to solve the tooling problem.&lt;br /&gt;
[http://java.sun.com/developer/technicalArticles/WebServices/restful/ jax-ws and REST]&lt;br /&gt;
[http://www.infoq.com/articles/rest-introduction intro to REST]&lt;br /&gt;
* everything (object you want to expose should have an id)&lt;br /&gt;
* HATEOAS Hypermedia as the engine of application state&lt;br /&gt;
** use of links to move an application from one state to another&lt;br /&gt;
** deliver the representation as a (resource graph) tree of links that enable access/state changes to the resource - enable discovery from an initial point&lt;br /&gt;
* GET&lt;br /&gt;
** retrieve - idempotent (same result when repeated)&lt;br /&gt;
* PUT&lt;br /&gt;
** update - idempotent&lt;br /&gt;
* DELETE&lt;br /&gt;
** destroy - idempotent &lt;br /&gt;
* POST&lt;br /&gt;
** create - not idempotent&lt;br /&gt;
* create urls for operations to allow more object methods to map to these four HTTP methods&lt;br /&gt;
&lt;br /&gt;
Triangle representing how urls can be constructed&lt;br /&gt;
&lt;br /&gt;
        Data Types&lt;br /&gt;
        /        \&lt;br /&gt;
 Operations -- Instances&lt;br /&gt;
&lt;br /&gt;
State should not need to be part of a conversation. i.e. each request should be stateless in the context of the previous request.&lt;br /&gt;
&lt;br /&gt;
No service definition for RESTful service i.e. no WSDL equivalent exists&lt;br /&gt;
&lt;br /&gt;
Can use jaxb or jaxp see [http://weblogs.java.net/blog/mhadley/archive/2006/03/restful_web_ser_1.html jaxb REST blog]&lt;br /&gt;
&lt;br /&gt;
Example: [http://kenai.com/projects/suncloudapis/pages/HelloCloud Suns cloud REST interface]&lt;br /&gt;
&lt;br /&gt;
== EBXML ==&lt;br /&gt;
* Not widely adopted&lt;br /&gt;
* Uses attachments for payload, not defined in the same self describing way as wsdl&lt;br /&gt;
** requires endpoints know and understand the ebMS SOAP extensions&lt;br /&gt;
* Adds security, reliability&lt;br /&gt;
* includes a repository unlike uddi&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
</feed>