Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Don't get too hung up on that term Service Oriented Architecture (<a href="http://en.wikipedia.org/wiki/Service-oriented_architecture" rel="noreferrer">SOA</a>) as its really more of a marketing term that describes a well-known and practiced software development methodology of making programs into specialized components that can be reused across a broad range of applications. It can also describe applying this software development methodology to business process modeling where business units and workflows are modularized and looked at as individual services rather than monolithic processes that exist in a bubble, and some call this different but related application of the concept <a href="http://en.wikipedia.org/wiki/Service-oriented_modeling" rel="noreferrer">Service Oriented Modeling</a>.</p> <p>While SOA shares a lot in common with modularization, it also adds the requirement that your separate code modules not only inter-operate and integrate (i.e. work well together with) each other, but potentially with everyone else's code in the world, and also that they are available over some well-defined mechanism. </p> <p>An SOA "purist" might tell you that for your software to be "SOA-compliant" (note: that's not a real thing as there's no single set of rules or governing body on services) that you need to write it as a <a href="http://en.wikipedia.org/wiki/SOAP" rel="noreferrer">SOAP</a> Web Service, publish and maintain a WSDL which can act as a contract between you and any implementing parties, and follow the relevant <a href="http://www.servicetechspecs.com/ws" rel="noreferrer">WS-* specs</a>. However, in reality <a href="http://en.wikipedia.org/wiki/Representational_state_transfer" rel="noreferrer">REST</a> and other lightweight modularization/integration/reusability approaches are just as much in line with the concept of SOA.</p> <p>If you did want to become an "expert" in SOA then read through every word of the following specs:</p> <blockquote> <p><strong>DISCOVERY</strong></p> <ul> <li><a href="http://uddi.org/pubs/uddi_v3.htm" rel="noreferrer">UDDI</a> </li> <li><a href="http://www.rddl.org/" rel="noreferrer">RDDL</a> </li> <li><a href="http://docs.oasis-open.org/xri/2.0/specs/xri-resolution-V2.0.html" rel="noreferrer">XRI</a> <ul> <li><a href="http://docs.oasis-open.org/xri/xrd/v1.0/xrd-1.0.html" rel="noreferrer">XRDS</a> </li> </ul></li> </ul> <p><strong>MESSAGING</strong></p> <ul> <li><a href="http://www.w3.org/TR/2000/NOTE-SOAP-20000508/" rel="noreferrer">SOAP 1.1</a></li> <li><a href="http://www.w3.org/TR/soap12/" rel="noreferrer">SOAP 1.2</a> <ul> <li><a href="http://www.w3.org/TR/soapjms/" rel="noreferrer">SOAP over JMS</a> </li> <li><a href="http://www.w3.org/TR/soap12-mtom/" rel="noreferrer">MTOM</a> (Msg Trans Optimization Mechanism) </li> </ul></li> <li><a href="http://www.w3.org/Submission/ws-addressing/" rel="noreferrer">WS-Addressing</a></li> </ul> <p><strong>META-DATA</strong></p> <ul> <li><a href="http://docs.oasis-open.org/wsbpel/2.0/OS/wsbpel-v2.0-OS.html" rel="noreferrer">WSBPEL</a></li> <li><a href="http://www.w3.org/TR/wsdl" rel="noreferrer">WSDL 1.1</a> </li> <li><a href="http://www.w3.org/TR/wsdl20/" rel="noreferrer">WSDL 2.0</a> </li> <li><a href="http://www.w3.org/Submission/wadl/" rel="noreferrer">WADL</a></li> <li><a href="http://itee.uq.edu.au/~infs7201/Assessments/Assignment%201%20Material/WSFL.pdf" rel="noreferrer">WSFL</a></li> <li><a href="http://www.w3.org/TR/ws-policy/" rel="noreferrer">WS-Policy</a></li> <li><a href="http://www.w3.org/TR/ws-policy-guidelines/" rel="noreferrer">WS-PolicyAssertions</a></li> <li><a href="http://www.w3.org/TR/ws-policy-attach/" rel="noreferrer">WS-PolicyAttachment</a></li> <li><a href="http://www.w3.org/TR/ws-metadata-exchange/" rel="noreferrer">WS-MetadataExchange</a> (WS-MEX)</li> </ul> <p><strong>SECURITY</strong></p> <ul> <li><a href="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/v1.2/ws-securitypolicy.html" rel="noreferrer">WS-SecurityPolicy</a> <ul> <li><a href="https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wss" rel="noreferrer">WS-Security</a> </li> </ul></li> <li><a href="http://docs.oasis-open.org/ws-sx/ws-trust/v1.4/ws-trust.html" rel="noreferrer">WS-Trust</a> <ul> <li><a href="http://docs.oasis-open.org/ws-sx/ws-secureconversation/v1.3/ws-secureconversation.html" rel="noreferrer">WS-SecureConversation</a></li> </ul></li> </ul> <p><strong>QUALITY OF SERVICE</strong></p> <ul> <li><a href="http://msdn.microsoft.com/en-us/library/ms951271.aspx" rel="noreferrer">WS-ReliableMessaging</a> (WS-RM) <ul> <li><a href="http://docs.oasis-open.org/ws-tx/wscoor/2006/06" rel="noreferrer">WS-Coordination</a> </li> <li><a href="http://docs.oasis-open.org/ws-tx/wstx-wsat-1.2-spec.html" rel="noreferrer">WS-AtomicTransactions</a> </li> <li><a href="https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=ws-tx" rel="noreferrer">WS-TX</a> </li> </ul></li> </ul> </blockquote> <p>(those are just some of the most important WS-* specs, <a href="http://en.wikipedia.org/wiki/List_of_web_service_specifications" rel="noreferrer">see full list here</a>)</p> <p>Then read every page of the following essential SOA books:</p> <ul> <li><a href="http://servicetechbooks.com/ctd" rel="noreferrer">Service-Oriented Architecture - Concepts, Technology and Design</a> </li> <li><a href="http://en.wikipedia.org/wiki/Enterprise_Integration_Patterns" rel="noreferrer">Enterprise Integration Patterns</a></li> <li><a href="http://www.crummy.com/writing/RESTful-Web-Services/" rel="noreferrer">RESTful Web Services</a></li> </ul> <p>However, I don't actually advise that as there's way too much reading material. What I would suggest though, is that you use them as a reference as you code your own programs following an SOA methodology and notice that in a specific area, a reference manual on what to do next would come in handy. Practice makes perfect and you'll really learn a lot more from working with real-world examples than from reading books and learning everything about the standards and theory. As you mentioned, start with the overly-simplistic JAX-WS and JAX-RS Web Service examples that come out-of-the-box with IDEs like NetBeans or Eclipse, then try some examples that come with popular SOA frameworks like <a href="http://cxf.apache.org/docs/sample-projects.html" rel="noreferrer">CXF</a>, <a href="http://axis.apache.org/axis2/java/core/docs/userguide-samples.html#clients" rel="noreferrer">Axis2</a> or <a href="http://wiki.restlet.org/docs_2.1/13-restlet/21-restlet/318-restlet/303-restlet.html" rel="noreferrer">RESTlet</a>.</p> <p>In general, as you are writing code constantly ask yourself if your code is:</p> <ol> <li>Reusable in other applications or domains</li> <li>Makes its core functionality extensible internally and accessible externally (especially over a network connection, i.e. <a href="https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol" rel="noreferrer">HTTP</a>)</li> <li>Provides output data or metadata in an easy to parse/process (and thus integrate) format like <a href="http://www.w3.org/XML/" rel="noreferrer">XML</a>, <a href="http://www.json.org/" rel="noreferrer">JSON</a> or one of the many related data languages and sub-languages</li> <li>Able to provide metadata on demand to describe its inner workings, making it possible to automate its integration</li> <li>As specialized and modularized as possible; and at the same time, if there are other similar specalized <a href="http://en.wikipedia.org/wiki/Application_programming_interface" rel="noreferrer">API</a>s or Web Services that already exist out there, would it be better to use them instead of reinventing the wheel</li> </ol> <p>There are lots of other questions and criteria that people may use, but IMHO these are the most important.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload