SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
Using REST to aid WS-*
Building a RESTful SOA Registry

    Paul Fremantle, CTO, WSO2
    paul@wso2.com
Paul Fremantle
 Co-founder and CTO, WSO2
   Open source SOA middleware
 Chair, Apache Synapse PMC
 Co-Chair, OASIS WSRX TC
 Previously STSM at IBM Hursley Lab
   IBM WebServices Gateway, WSIF, JSR110, etc
Contents
 Understanding SOA and Metadata
 Requirements for an SOA Registry
 Resources and REST design
 Applying this to SOA Metadata
 Atom Publishing Protocol
 REST design issues
 How does this apply to WS-*
 “Governance” – what is it, what does it
 mean?
The oldest SOA picture of all

                   Registry/
                  Repository



         LOOKUP                PUBLISH




                    INTERACT
   Service                           Service
  Consumer                           Provider
One strong REST view

                  Registry/
                 Repository



        LOOKUP                  PUBLISH




                 Discover and
  Service         INTERACT            Service
 Consumer                             Provider
                 Media-types
One problem with UDDI

                    Registry/
                   Repository



            SOAP                SOAP




                         SOAP
  Service                          Service
 Consumer                          Provider
The Reality of SOA

                 Email
                 Word docs
                 ?wsdl
                 SVN
                 etc




              SOAP, JMS, REST
   Service                        Service
  Consumer                        Provider
             XML/HTTP, etc, etc
Our view

                   Registry/
                  Repository

         REST
                                     WebUI
        WebUI
                                      REST




                 SOAP, JMS, REST
  Service                                Service
 Consumer                                Provider
                XML/HTTP, etc, etc
Where did UDDI come from?
 Publish, categorize and search Web Service
 definitions
 Designed with “homogenous” thinking
   Assumed that everyone will work to the same set of
   interfaces
   Based on strict criteria, systems will automatically
   find service instances that offer a given interface
 Fundamentally based on the same model as
 Windows Registry
   Long UUIDs - tModels
   Lots of interlinking
This is a valid set of requirements
SOA Developers can publish WSDLs
and WS-Policies and search for
service definitions
The system shows dependencies
between services, schemas and other
dependent artifacts
But only a small part of the requirements
                     SOA Developers can publish WSDLs and
                     WS-Policies and search for service
                     definitions
                     The system shows dependencies
                     between services, schemas and other
                     dependent artifacts
Registry characteristics/requirements
Business users feel happy to create and      SOA Developers can publish WSDLs and
document ‘domains’                           WS-Policies and search for service
                                             definitions
Developers can comment on what works
and doesn’t, best practice, hints and tips   The system shows dependencies
                                             between services, schemas and other
Using my favourite blog reader I can
                                             dependent artifacts
subscribe to comments on my services



Using simple APIs, content handlers can      Every change is versioned and I can
be written to perform dependency             rollback at any point to a previous
analysis, extract useful data and validate   revision
against policies.
                                             Security controls allow me to configure
Simple metadata properties allow the         exactly who can read, write, delete and
lifecycle of services to be managed.         manage authorization for each resource
Standard APIs allow systems to publish       The system can be run in a highly-
and consume metadata without                 available load-balanced cluster
understanding complex standards
REST design
 Everything is a Resource, identified by a URI
 Everything has a Uniform Interface (PUT, POST,
 GET, DELETE)
 The representation you get is based on
 Content-Type
   e.g. text/xml, image/jpeg
 Interactions are stateless
 Links are key
   “Hypermedia as the engine of application state”
   (HATEOAS)
REST design (continued)
 Ideally the “site” and the “api” are the same
   Based on Accept headers each client gets the
   representation they like
 In reality very few sites work like this
   Many sites are not stateless – use sessions
   But not so good for APIs
 Navigational context is easy for people to figure
 out
   No simple technical description of HATEOAS


 How to apply this to SOA metadata?
Building an SOA Registry with REST

       Web        HTML / HTTP
     Browser


                     Atom
      Feeds
                                    Registry/
                                   Repository
     Registry         APP
     Java API
                      APP
    curl / wget

      Other           APP
    Languages
                                Registry Java API
WSO2 Registry
An open source project that has tried to
 think about human and community issues
 as it tackles Enterprise SOA

 http://wso2.org/projects/registry
 Apache 2.0 license
 Open mailing list, wiki, JIRA, etc
Simple Atom Feed
<?xml version=quot;1.0quot; encoding=quot;utf-8quot;?>
<feed xmlns=quot;http://www.w3.org/2005/Atomquot;>
 <title>Registry Blog</title>
 <link href=quot;http://pzf.fremantle.org/registry/blog/quot;/>
 <updated>2008-02-07T15:15:02Z</updated>
 <author>
   <name>Paul Fremantle</name>
 </author>
 <id>blog-6003063374827736283.post-
   4039376056255567566</id>
 <entry>
   <title>Social Enterprise</title>
   <link href=quot;http://pzf.fremantle.org/registry/blog/2quot;/>
   <id>blog-687987243798723.post-342798273498734</id>
   <updated>2008-02-07T15:15:02Z</updated>
   <content>
     <html>…</html>
    </content>
 </entry>
</feed>
The benefit of Atom
 You can “subscribe” with your Atom Feed
 Reader to ANYTHING in the Registry
   When new versions of this service are
   deployed
   When people comment on my service
   When new services tagged “finance” are
   deployed
Atom and AtomPub
 Standard “feed” reading and writing
 capability
 AtomPub (Atom Publishing Protocol)
   RFC 5023

 Service (1..1)
   Workspace (1..n)
     Collection (1..n)
        Entries / Media Entries (1..n)
More on AtomPub
 Clear definition of behaviour of
    POST, GET, PUT, DELETE
 For example, when you POST a resource to a collection
    Specify a “Slug” header that defines the proposed name
    The response 201 Created + Location header of new URI
 Benefits
    A well-defined protocol
    With interoperability, multiple clients, tools
    But also accessible with curl, wget, etc
    Does exactly what we needed (almost)
 Issues
    There is some ambiguity about how to create a new collection
    No definition of queries
AtomPub isn’t just for Atom
 The AtomPub team defined clearly how
 you can create collections of Atom
 entries
 But also they define what happens if you
 POST other “stuff”
   Other stuff == “Media Resources”
 Well defined behaviour when you post a
 Media Resource
   Creates an Atom Entry with the metadata
   Plus a link to the real resource
HATEOAS
   Atom has well defined link model
   An example:
<?xml version='1.0' encoding='UTF-8'?>
  <feed xmlns=quot;http://www.w3.org/2005/Atomquot; xmlns:ns=quot;tag:wso2.org,2008:fooquot;>
    <parentPath xmlns=quot;http://wso2.org/registryquot;>/</parentPath>
    <link href=quot;http://localhost:8000/wso2registry/atom/stuffquot; />
    <link href=quot;http://localhost:8000/wso2registry/atom/stuffquot; rel=quot;selfquot; />
    <entry>
       <link href=quot;http://localhost:8000/wso2registry/atom/stuff/flatpackmediator.jarquot;
    />
       <title type=quot;textquot;>/stuff/flatpackmediator.jar</title>
       <updated>2008-03-13T11:19:39.512Z</updated>
       <link href=quot;http://localhost:8000/wso2registry/atom/stuff/flatpackmediator.jarquot;
    rel=quot;selfquot; />
       <link href=quot;/stuff/flatpackmediator.jarquot; rel=quot;pathquot; />
    </entry>
  </feed>
How we defined our URLs
 Base URL
   http://server/wso2registry/
 “Intermediate” paths
   base/web
   base/atom
   base/resource
 Examples:
   http://localhost:8080/wso2registry/web/services/finance/invoice.wsdl
   http://localhost:8080/wso2registry/atom/services/finance/invoice.wsdl
   http://localhost:8080/wso2registry/resource/services/finance/invoice.wsdl

 Three different views of the same resource
   Note we didn’t use the Accept model
How we defined our URL scheme
 /tags
   Collection of all tags in the system
 /tags/[mytag]
   Collection of all resources tagged mytag
 /resource/r1;tags
   Collection of tags on resource r1
 /resource/r1;comments
   Collection of comments on r1
 etc
Versions
 Every time a resource is updated we
 create a new version
 We keep track of dependencies between
 resources (e.g. WSDL <- Schema)
 Access versions
   /resource/r1?v=4
   /resource/r1;version
     Collection of pointers to versions
Creating Collections
    (or why Microsoft didn’t use AtomPub – until they did)


 Not defined in AtomPub
 Spec says:
   This specification does not specify any
   request semantics or server behavior in the
   case where the POSTed media type is
   quot;application/atom+xmlquot; but the body is
   something other than an Atom Entry. In
   particular, what happens on POSTing an
   Atom Feed Document to a Collection using
   the quot;application/atom+xmlquot; media type is
   undefined.
Creating a collection by APP
POST /wso2registry/atom/ HTTP/1.1
Slug: stuff
Host: localhost:8000
Content-Type: application/atom+xml;type=entry

<entry xmlns=quot;http://www.w3.org/2005/Atomquot;
   xmlns:ns=quot;tag:wso2.org,2008:fooquot;>
  <summary type=quot;textquot; />
  <author>
    <name>admin</name>
  </author>
  <ns:properties />
  <mediaType xmlns=quot;http://wso2.org/registryquot; />
  <parentPath xmlns=quot;http://wso2.org/registryquot; />
  <directory xmlns=quot;http://wso2.org/registryquot;>true</directory>
</entry>
Queries
 Still work in progress
   We want our backend to be flexible, but we
   haven’t yet created our own Query Language
 Our current solution:
   Store the backend specific query (e.g. SQL)
   as an entry in the Registry
   Execute the query with parameters passed as
   HTTP GET parameters
Full definition
http://wso2.org/wiki/display/registry/Registry+Protocol
Java API
Registry reg = new RemoteRegistry(new
URL(quot;http://localhost:8000/wso2registry/atomquot;), quot;adminquot;,
  quot;adminquot;);

Resource resource =
  reg.get(quot;/services/finance/invoice.wsdlquot;);
Object wsdl = resource.getContent();

Resource newCollection = new Resource();
newCollection.setDirectory(true);
newCollection.setAuthorUserName(quot;adminquot;);
reg.put(quot;/stuffquot;, newCollection);
What about WS-*?
 Focus on
 storing, searching, managing
 WSDL, Schema, WS-Policy
 Issues
   Dependency links
      WSDL imports Schema and Policy
   Validity - is this WSDL valid? is it WS-I compliant?
   Does it meet my corporate guidelines?
   What stage of its lifecycle?
      Test, System Test, Production, Deprecation
   WS-* metadata isn’t enough for the real world
      Comments, Tags, Properties and Ratings add some simple
      real-life annotations that augment this
Content Handlers
 Whenever you POST or GET a WSDL we can
 intercept and run stuff
 For example, when we import WSDL
   Also import the Schemas
   Create internal dependency mapping
     WSDL dependsUpon Schema
     Schema isDependedUponBy WSDL
   We are extending this to run WS-I validation
 We also support URL handlers
   Allow you to extend the REST model of the Registry
Lifecycle handling
 Version 1.0
   Properties



 Version 1.1
   Better specification
   Configure your lifecycle phases
   Run handlers when lifecycle changes occur
So, what do I think about REST?
 Be skeptical about REST
   Even in this – the most obvious possible scenario –
   there are too many design choices to be made
   Even after you subset to Atom/AtomPub there are
   still lots of non-standard design choices to be made
   Still needed very smart people
 But this has worked out very well
   In terms of building the Human Interaction and
   Social aspects
   Unification of the human interface with the machine
   interface
   Atom feeds
Human design
 By defining the structure and permissions this
 registry is designed to operate at any scale
   Local on your hard drive for personal versioned
   storage
   Departmental or shared between colleagues
   Enterprise wide
   Internet scale
 Running middleware systems directly from this
 metadata can offer the same scaling
   http://mooshup.com example
Get involved!
 Home page
   http://wso2.org/projects/registry/
 Mailing List
   registry-dev@wso2.org
 SVN
   https://wso2.org/svn/browse/wso2/trunk/registry/

 Issue tracker
   https://wso2.org/jira/browse/REGISTRY
Questions

Mais conteúdo relacionado

Mais procurados

Intro to web services
Intro to web servicesIntro to web services
Intro to web servicesNeil Ghosh
 
Web Services
Web ServicesWeb Services
Web ServicesF K
 
Web Service Presentation
Web Service PresentationWeb Service Presentation
Web Service Presentationguest0df6b0
 
real world web services
real world web servicesreal world web services
real world web servicesdominion
 
Introduction to webservices
Introduction to webservicesIntroduction to webservices
Introduction to webservicesGagandeep Singh
 
Web Sphere Application Server Features
Web Sphere Application Server FeaturesWeb Sphere Application Server Features
Web Sphere Application Server FeaturesSymbyo Technologies
 
Web Service Implementation Using ASP.NET
Web Service Implementation Using ASP.NETWeb Service Implementation Using ASP.NET
Web Service Implementation Using ASP.NETPonraj
 
Rest and the hypermedia constraint
Rest and the hypermedia constraintRest and the hypermedia constraint
Rest and the hypermedia constraintInviqa
 
Web services, the ws stack, and research prospects a survey
Web services, the ws stack, and research prospects   a surveyWeb services, the ws stack, and research prospects   a survey
Web services, the ws stack, and research prospects a surveybdemchak
 
Introduction to SOAP/WSDL Web Services and RESTful Web Services
Introduction to SOAP/WSDL Web Services and RESTful Web ServicesIntroduction to SOAP/WSDL Web Services and RESTful Web Services
Introduction to SOAP/WSDL Web Services and RESTful Web Servicesecosio GmbH
 
Java Web Services [1/5]: Introduction to Web Services
Java Web Services [1/5]: Introduction to Web ServicesJava Web Services [1/5]: Introduction to Web Services
Java Web Services [1/5]: Introduction to Web ServicesIMC Institute
 
Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...
Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...
Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...ecosio GmbH
 
Secc tutorials development and deployment of rest web services in java_v2.0
Secc tutorials development and deployment of rest web services in java_v2.0Secc tutorials development and deployment of rest web services in java_v2.0
Secc tutorials development and deployment of rest web services in java_v2.0Aravindharamanan S
 

Mais procurados (20)

RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
 
Building REST and Hypermedia APIs with PHP
Building REST and Hypermedia APIs with PHPBuilding REST and Hypermedia APIs with PHP
Building REST and Hypermedia APIs with PHP
 
Intro to web services
Intro to web servicesIntro to web services
Intro to web services
 
Web Services
Web ServicesWeb Services
Web Services
 
Web Service Presentation
Web Service PresentationWeb Service Presentation
Web Service Presentation
 
Web service
Web serviceWeb service
Web service
 
real world web services
real world web servicesreal world web services
real world web services
 
Introduction to webservices
Introduction to webservicesIntroduction to webservices
Introduction to webservices
 
Web Sphere Application Server Features
Web Sphere Application Server FeaturesWeb Sphere Application Server Features
Web Sphere Application Server Features
 
Introduction to Web Services
Introduction to Web ServicesIntroduction to Web Services
Introduction to Web Services
 
Web Service Implementation Using ASP.NET
Web Service Implementation Using ASP.NETWeb Service Implementation Using ASP.NET
Web Service Implementation Using ASP.NET
 
Rest and the hypermedia constraint
Rest and the hypermedia constraintRest and the hypermedia constraint
Rest and the hypermedia constraint
 
Web services, the ws stack, and research prospects a survey
Web services, the ws stack, and research prospects   a surveyWeb services, the ws stack, and research prospects   a survey
Web services, the ws stack, and research prospects a survey
 
Introduction to SOAP/WSDL Web Services and RESTful Web Services
Introduction to SOAP/WSDL Web Services and RESTful Web ServicesIntroduction to SOAP/WSDL Web Services and RESTful Web Services
Introduction to SOAP/WSDL Web Services and RESTful Web Services
 
Web Service Basics and NWS Setup
Web Service  Basics and NWS SetupWeb Service  Basics and NWS Setup
Web Service Basics and NWS Setup
 
Java Web Services [1/5]: Introduction to Web Services
Java Web Services [1/5]: Introduction to Web ServicesJava Web Services [1/5]: Introduction to Web Services
Java Web Services [1/5]: Introduction to Web Services
 
Web Service
Web ServiceWeb Service
Web Service
 
Spring
SpringSpring
Spring
 
Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...
Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...
Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...
 
Secc tutorials development and deployment of rest web services in java_v2.0
Secc tutorials development and deployment of rest web services in java_v2.0Secc tutorials development and deployment of rest web services in java_v2.0
Secc tutorials development and deployment of rest web services in java_v2.0
 

Destaque

Who's Online and Why?
Who's Online and Why? Who's Online and Why?
Who's Online and Why? guest675b88
 
Hints for a Laptop Classroom
Hints for a Laptop ClassroomHints for a Laptop Classroom
Hints for a Laptop ClassroomAndrew McCarthy
 
Business Model Canvas
Business Model CanvasBusiness Model Canvas
Business Model CanvasDaniel Tenner
 
Improving audience engagement in your ILTA 2011 conference sessions
Improving audience engagement in your ILTA 2011 conference sessionsImproving audience engagement in your ILTA 2011 conference sessions
Improving audience engagement in your ILTA 2011 conference sessionsPeter Buck
 
My 2nd Grader's App Idea - Who wants in ? The road puzzle game
My 2nd Grader's App Idea - Who wants in ? The road puzzle gameMy 2nd Grader's App Idea - Who wants in ? The road puzzle game
My 2nd Grader's App Idea - Who wants in ? The road puzzle gameShashi Bellamkonda
 
Textbox.io for IBM Connections - IBM Connect 2016
Textbox.io for IBM Connections - IBM Connect 2016Textbox.io for IBM Connections - IBM Connect 2016
Textbox.io for IBM Connections - IBM Connect 2016Tiny
 
Deploying Complex Applications on Docker using Apache Brooklyn
Deploying Complex Applications on Docker using Apache BrooklynDeploying Complex Applications on Docker using Apache Brooklyn
Deploying Complex Applications on Docker using Apache BrooklynAndrew Kennedy
 
Great marketing can save the world
Great marketing can save the worldGreat marketing can save the world
Great marketing can save the worldIan Lurie
 
This is all such bullshit
This is all such bullshitThis is all such bullshit
This is all such bullshitJason Falls
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to GitRick Umali
 
Day 2 2nd_weekcris
Day 2 2nd_weekcrisDay 2 2nd_weekcris
Day 2 2nd_weekcriscristiarnau
 
Lo Sport Visto In Modo Non Convenzionale
Lo Sport Visto In Modo Non ConvenzionaleLo Sport Visto In Modo Non Convenzionale
Lo Sport Visto In Modo Non ConvenzionaleMolinaro Andrea
 
Firefox的安全性
Firefox的安全性Firefox的安全性
Firefox的安全性Liu Xing
 
I Problemi Adolescenziali
I Problemi AdolescenzialiI Problemi Adolescenziali
I Problemi Adolescenzialiguestdd490f
 
Libraries as a Bridge: The Role of Libraries in Closing the Digital Skills ...
Libraries as a Bridge: The Role of Libraries in Closing the Digital Skills ...Libraries as a Bridge: The Role of Libraries in Closing the Digital Skills ...
Libraries as a Bridge: The Role of Libraries in Closing the Digital Skills ...Bobbi Newman
 
Introduccio Als Mapes Conceptuals
Introduccio Als Mapes ConceptualsIntroduccio Als Mapes Conceptuals
Introduccio Als Mapes ConceptualsJordi Guim
 
SEO Analytics - Huzzah workshop
SEO Analytics - Huzzah workshopSEO Analytics - Huzzah workshop
SEO Analytics - Huzzah workshopIan Lurie
 

Destaque (20)

Who's Online and Why?
Who's Online and Why? Who's Online and Why?
Who's Online and Why?
 
Matematica
MatematicaMatematica
Matematica
 
Usagility
UsagilityUsagility
Usagility
 
Hints for a Laptop Classroom
Hints for a Laptop ClassroomHints for a Laptop Classroom
Hints for a Laptop Classroom
 
Business Model Canvas
Business Model CanvasBusiness Model Canvas
Business Model Canvas
 
Improving audience engagement in your ILTA 2011 conference sessions
Improving audience engagement in your ILTA 2011 conference sessionsImproving audience engagement in your ILTA 2011 conference sessions
Improving audience engagement in your ILTA 2011 conference sessions
 
My 2nd Grader's App Idea - Who wants in ? The road puzzle game
My 2nd Grader's App Idea - Who wants in ? The road puzzle gameMy 2nd Grader's App Idea - Who wants in ? The road puzzle game
My 2nd Grader's App Idea - Who wants in ? The road puzzle game
 
Textbox.io for IBM Connections - IBM Connect 2016
Textbox.io for IBM Connections - IBM Connect 2016Textbox.io for IBM Connections - IBM Connect 2016
Textbox.io for IBM Connections - IBM Connect 2016
 
Deploying Complex Applications on Docker using Apache Brooklyn
Deploying Complex Applications on Docker using Apache BrooklynDeploying Complex Applications on Docker using Apache Brooklyn
Deploying Complex Applications on Docker using Apache Brooklyn
 
Great marketing can save the world
Great marketing can save the worldGreat marketing can save the world
Great marketing can save the world
 
Essentials of marketing
Essentials of marketingEssentials of marketing
Essentials of marketing
 
This is all such bullshit
This is all such bullshitThis is all such bullshit
This is all such bullshit
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Day 2 2nd_weekcris
Day 2 2nd_weekcrisDay 2 2nd_weekcris
Day 2 2nd_weekcris
 
Lo Sport Visto In Modo Non Convenzionale
Lo Sport Visto In Modo Non ConvenzionaleLo Sport Visto In Modo Non Convenzionale
Lo Sport Visto In Modo Non Convenzionale
 
Firefox的安全性
Firefox的安全性Firefox的安全性
Firefox的安全性
 
I Problemi Adolescenziali
I Problemi AdolescenzialiI Problemi Adolescenziali
I Problemi Adolescenziali
 
Libraries as a Bridge: The Role of Libraries in Closing the Digital Skills ...
Libraries as a Bridge: The Role of Libraries in Closing the Digital Skills ...Libraries as a Bridge: The Role of Libraries in Closing the Digital Skills ...
Libraries as a Bridge: The Role of Libraries in Closing the Digital Skills ...
 
Introduccio Als Mapes Conceptuals
Introduccio Als Mapes ConceptualsIntroduccio Als Mapes Conceptuals
Introduccio Als Mapes Conceptuals
 
SEO Analytics - Huzzah workshop
SEO Analytics - Huzzah workshopSEO Analytics - Huzzah workshop
SEO Analytics - Huzzah workshop
 

Semelhante a Paul Fremantle Restful SOA Registry

Restful web services by Sreeni Inturi
Restful web services by Sreeni InturiRestful web services by Sreeni Inturi
Restful web services by Sreeni InturiSreeni I
 
REST vs WS-*: Myths Facts and Lies
REST vs WS-*: Myths Facts and LiesREST vs WS-*: Myths Facts and Lies
REST vs WS-*: Myths Facts and LiesPaul Fremantle
 
LAJUG Napster REST API
LAJUG Napster REST APILAJUG Napster REST API
LAJUG Napster REST APIstephenbhadran
 
Understanding and Using Rest APIs (SocialDevCamp Chicago 2009)
Understanding and Using Rest APIs (SocialDevCamp Chicago 2009)Understanding and Using Rest APIs (SocialDevCamp Chicago 2009)
Understanding and Using Rest APIs (SocialDevCamp Chicago 2009)Pete Morano
 
Restful web services rule financial
Restful web services   rule financialRestful web services   rule financial
Restful web services rule financialRule_Financial
 
Phalcon 2 High Performance APIs - DevWeekPOA 2015
Phalcon 2 High Performance APIs - DevWeekPOA 2015Phalcon 2 High Performance APIs - DevWeekPOA 2015
Phalcon 2 High Performance APIs - DevWeekPOA 2015Jackson F. de A. Mafra
 
Web services soap and rest by mandakini for TechGig
Web services soap and rest by mandakini for TechGigWeb services soap and rest by mandakini for TechGig
Web services soap and rest by mandakini for TechGigMandakini Kumari
 
Separating REST Facts from Fallacies
Separating REST Facts from FallaciesSeparating REST Facts from Fallacies
Separating REST Facts from FallaciesAlan Dean
 
Web services101
Web services101Web services101
Web services101chaos41
 

Semelhante a Paul Fremantle Restful SOA Registry (20)

Restful web services by Sreeni Inturi
Restful web services by Sreeni InturiRestful web services by Sreeni Inturi
Restful web services by Sreeni Inturi
 
REST vs WS-*: Myths Facts and Lies
REST vs WS-*: Myths Facts and LiesREST vs WS-*: Myths Facts and Lies
REST vs WS-*: Myths Facts and Lies
 
REST Presentation
REST PresentationREST Presentation
REST Presentation
 
Modified REST Presentation
Modified REST PresentationModified REST Presentation
Modified REST Presentation
 
Rest web service
Rest web serviceRest web service
Rest web service
 
LAJUG Napster REST API
LAJUG Napster REST APILAJUG Napster REST API
LAJUG Napster REST API
 
Understanding and Using Rest APIs (SocialDevCamp Chicago 2009)
Understanding and Using Rest APIs (SocialDevCamp Chicago 2009)Understanding and Using Rest APIs (SocialDevCamp Chicago 2009)
Understanding and Using Rest APIs (SocialDevCamp Chicago 2009)
 
Unerstanding and Using RESTful APIs
Unerstanding and Using RESTful APIsUnerstanding and Using RESTful APIs
Unerstanding and Using RESTful APIs
 
Unit 2
Unit 2Unit 2
Unit 2
 
Rest overview briefing
Rest  overview briefingRest  overview briefing
Rest overview briefing
 
Restful web services rule financial
Restful web services   rule financialRestful web services   rule financial
Restful web services rule financial
 
REST & RESTful Web Services
REST & RESTful Web ServicesREST & RESTful Web Services
REST & RESTful Web Services
 
Phalcon 2 High Performance APIs - DevWeekPOA 2015
Phalcon 2 High Performance APIs - DevWeekPOA 2015Phalcon 2 High Performance APIs - DevWeekPOA 2015
Phalcon 2 High Performance APIs - DevWeekPOA 2015
 
Soap and Rest
Soap and RestSoap and Rest
Soap and Rest
 
Mini-Training: Let's have a rest
Mini-Training: Let's have a restMini-Training: Let's have a rest
Mini-Training: Let's have a rest
 
Web services soap and rest by mandakini for TechGig
Web services soap and rest by mandakini for TechGigWeb services soap and rest by mandakini for TechGig
Web services soap and rest by mandakini for TechGig
 
Separating REST Facts from Fallacies
Separating REST Facts from FallaciesSeparating REST Facts from Fallacies
Separating REST Facts from Fallacies
 
Web services101
Web services101Web services101
Web services101
 
Introduction To REST
Introduction To RESTIntroduction To REST
Introduction To REST
 
Web Programming
Web ProgrammingWeb Programming
Web Programming
 

Mais de deimos

Aspect Orientated Programming in Ruby
Aspect Orientated Programming in RubyAspect Orientated Programming in Ruby
Aspect Orientated Programming in Rubydeimos
 
Randy Shoup eBays Architectural Principles
Randy Shoup eBays Architectural PrinciplesRandy Shoup eBays Architectural Principles
Randy Shoup eBays Architectural Principlesdeimos
 
Remy Sharp The DOM scripting toolkit jQuery
Remy Sharp The DOM scripting toolkit jQueryRemy Sharp The DOM scripting toolkit jQuery
Remy Sharp The DOM scripting toolkit jQuerydeimos
 
Ola Bini J Ruby Power On The Jvm
Ola Bini J Ruby Power On The JvmOla Bini J Ruby Power On The Jvm
Ola Bini J Ruby Power On The Jvmdeimos
 
Joe Walker Interactivewebsites Cometand Dwr
Joe Walker Interactivewebsites Cometand DwrJoe Walker Interactivewebsites Cometand Dwr
Joe Walker Interactivewebsites Cometand Dwrdeimos
 
Aslak Hellesoy Executable User Stories R Spec Bdd
Aslak Hellesoy Executable User Stories R Spec BddAslak Hellesoy Executable User Stories R Spec Bdd
Aslak Hellesoy Executable User Stories R Spec Bdddeimos
 
Venkat Subramaniam Building DSLs In Groovy
Venkat Subramaniam Building DSLs In GroovyVenkat Subramaniam Building DSLs In Groovy
Venkat Subramaniam Building DSLs In Groovydeimos
 
Venkat Subramaniam Blending Java With Dynamic Languages
Venkat Subramaniam Blending Java With Dynamic LanguagesVenkat Subramaniam Blending Java With Dynamic Languages
Venkat Subramaniam Blending Java With Dynamic Languagesdeimos
 
Udi Dahan Intentions And Interfaces
Udi Dahan Intentions And InterfacesUdi Dahan Intentions And Interfaces
Udi Dahan Intentions And Interfacesdeimos
 
Tim Mackinnon Agile And Beyond
Tim Mackinnon Agile And BeyondTim Mackinnon Agile And Beyond
Tim Mackinnon Agile And Beyonddeimos
 
Steve Vinoski Rest And Reuse And Serendipity
Steve Vinoski Rest And Reuse And SerendipitySteve Vinoski Rest And Reuse And Serendipity
Steve Vinoski Rest And Reuse And Serendipitydeimos
 
Stefan Tilkov Soa Rest And The Web
Stefan Tilkov Soa Rest And The WebStefan Tilkov Soa Rest And The Web
Stefan Tilkov Soa Rest And The Webdeimos
 
Stefan Tilkov Pragmatic Intro To Rest
Stefan Tilkov Pragmatic Intro To RestStefan Tilkov Pragmatic Intro To Rest
Stefan Tilkov Pragmatic Intro To Restdeimos
 
Rod Johnson Cathedral
Rod Johnson CathedralRod Johnson Cathedral
Rod Johnson Cathedraldeimos
 
Mike Stolz Dramatic Scalability
Mike Stolz Dramatic ScalabilityMike Stolz Dramatic Scalability
Mike Stolz Dramatic Scalabilitydeimos
 
Matt Youill Betfair
Matt Youill BetfairMatt Youill Betfair
Matt Youill Betfairdeimos
 
Pete Goodliffe A Tale Of Two Systems
Pete Goodliffe A Tale Of Two SystemsPete Goodliffe A Tale Of Two Systems
Pete Goodliffe A Tale Of Two Systemsdeimos
 
Ola Bini Evolving The Java Platform
Ola Bini Evolving The Java PlatformOla Bini Evolving The Java Platform
Ola Bini Evolving The Java Platformdeimos
 
Neal Gafter Java Evolution
Neal Gafter Java EvolutionNeal Gafter Java Evolution
Neal Gafter Java Evolutiondeimos
 
Markus Voelter Textual DSLs
Markus Voelter Textual DSLsMarkus Voelter Textual DSLs
Markus Voelter Textual DSLsdeimos
 

Mais de deimos (20)

Aspect Orientated Programming in Ruby
Aspect Orientated Programming in RubyAspect Orientated Programming in Ruby
Aspect Orientated Programming in Ruby
 
Randy Shoup eBays Architectural Principles
Randy Shoup eBays Architectural PrinciplesRandy Shoup eBays Architectural Principles
Randy Shoup eBays Architectural Principles
 
Remy Sharp The DOM scripting toolkit jQuery
Remy Sharp The DOM scripting toolkit jQueryRemy Sharp The DOM scripting toolkit jQuery
Remy Sharp The DOM scripting toolkit jQuery
 
Ola Bini J Ruby Power On The Jvm
Ola Bini J Ruby Power On The JvmOla Bini J Ruby Power On The Jvm
Ola Bini J Ruby Power On The Jvm
 
Joe Walker Interactivewebsites Cometand Dwr
Joe Walker Interactivewebsites Cometand DwrJoe Walker Interactivewebsites Cometand Dwr
Joe Walker Interactivewebsites Cometand Dwr
 
Aslak Hellesoy Executable User Stories R Spec Bdd
Aslak Hellesoy Executable User Stories R Spec BddAslak Hellesoy Executable User Stories R Spec Bdd
Aslak Hellesoy Executable User Stories R Spec Bdd
 
Venkat Subramaniam Building DSLs In Groovy
Venkat Subramaniam Building DSLs In GroovyVenkat Subramaniam Building DSLs In Groovy
Venkat Subramaniam Building DSLs In Groovy
 
Venkat Subramaniam Blending Java With Dynamic Languages
Venkat Subramaniam Blending Java With Dynamic LanguagesVenkat Subramaniam Blending Java With Dynamic Languages
Venkat Subramaniam Blending Java With Dynamic Languages
 
Udi Dahan Intentions And Interfaces
Udi Dahan Intentions And InterfacesUdi Dahan Intentions And Interfaces
Udi Dahan Intentions And Interfaces
 
Tim Mackinnon Agile And Beyond
Tim Mackinnon Agile And BeyondTim Mackinnon Agile And Beyond
Tim Mackinnon Agile And Beyond
 
Steve Vinoski Rest And Reuse And Serendipity
Steve Vinoski Rest And Reuse And SerendipitySteve Vinoski Rest And Reuse And Serendipity
Steve Vinoski Rest And Reuse And Serendipity
 
Stefan Tilkov Soa Rest And The Web
Stefan Tilkov Soa Rest And The WebStefan Tilkov Soa Rest And The Web
Stefan Tilkov Soa Rest And The Web
 
Stefan Tilkov Pragmatic Intro To Rest
Stefan Tilkov Pragmatic Intro To RestStefan Tilkov Pragmatic Intro To Rest
Stefan Tilkov Pragmatic Intro To Rest
 
Rod Johnson Cathedral
Rod Johnson CathedralRod Johnson Cathedral
Rod Johnson Cathedral
 
Mike Stolz Dramatic Scalability
Mike Stolz Dramatic ScalabilityMike Stolz Dramatic Scalability
Mike Stolz Dramatic Scalability
 
Matt Youill Betfair
Matt Youill BetfairMatt Youill Betfair
Matt Youill Betfair
 
Pete Goodliffe A Tale Of Two Systems
Pete Goodliffe A Tale Of Two SystemsPete Goodliffe A Tale Of Two Systems
Pete Goodliffe A Tale Of Two Systems
 
Ola Bini Evolving The Java Platform
Ola Bini Evolving The Java PlatformOla Bini Evolving The Java Platform
Ola Bini Evolving The Java Platform
 
Neal Gafter Java Evolution
Neal Gafter Java EvolutionNeal Gafter Java Evolution
Neal Gafter Java Evolution
 
Markus Voelter Textual DSLs
Markus Voelter Textual DSLsMarkus Voelter Textual DSLs
Markus Voelter Textual DSLs
 

Último

Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 

Último (20)

Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 

Paul Fremantle Restful SOA Registry

  • 1. Using REST to aid WS-* Building a RESTful SOA Registry Paul Fremantle, CTO, WSO2 paul@wso2.com
  • 2. Paul Fremantle Co-founder and CTO, WSO2 Open source SOA middleware Chair, Apache Synapse PMC Co-Chair, OASIS WSRX TC Previously STSM at IBM Hursley Lab IBM WebServices Gateway, WSIF, JSR110, etc
  • 3. Contents Understanding SOA and Metadata Requirements for an SOA Registry Resources and REST design Applying this to SOA Metadata Atom Publishing Protocol REST design issues How does this apply to WS-* “Governance” – what is it, what does it mean?
  • 4. The oldest SOA picture of all Registry/ Repository LOOKUP PUBLISH INTERACT Service Service Consumer Provider
  • 5. One strong REST view Registry/ Repository LOOKUP PUBLISH Discover and Service INTERACT Service Consumer Provider Media-types
  • 6. One problem with UDDI Registry/ Repository SOAP SOAP SOAP Service Service Consumer Provider
  • 7. The Reality of SOA Email Word docs ?wsdl SVN etc SOAP, JMS, REST Service Service Consumer Provider XML/HTTP, etc, etc
  • 8. Our view Registry/ Repository REST WebUI WebUI REST SOAP, JMS, REST Service Service Consumer Provider XML/HTTP, etc, etc
  • 9. Where did UDDI come from? Publish, categorize and search Web Service definitions Designed with “homogenous” thinking Assumed that everyone will work to the same set of interfaces Based on strict criteria, systems will automatically find service instances that offer a given interface Fundamentally based on the same model as Windows Registry Long UUIDs - tModels Lots of interlinking
  • 10. This is a valid set of requirements SOA Developers can publish WSDLs and WS-Policies and search for service definitions The system shows dependencies between services, schemas and other dependent artifacts
  • 11. But only a small part of the requirements SOA Developers can publish WSDLs and WS-Policies and search for service definitions The system shows dependencies between services, schemas and other dependent artifacts
  • 12. Registry characteristics/requirements Business users feel happy to create and SOA Developers can publish WSDLs and document ‘domains’ WS-Policies and search for service definitions Developers can comment on what works and doesn’t, best practice, hints and tips The system shows dependencies between services, schemas and other Using my favourite blog reader I can dependent artifacts subscribe to comments on my services Using simple APIs, content handlers can Every change is versioned and I can be written to perform dependency rollback at any point to a previous analysis, extract useful data and validate revision against policies. Security controls allow me to configure Simple metadata properties allow the exactly who can read, write, delete and lifecycle of services to be managed. manage authorization for each resource Standard APIs allow systems to publish The system can be run in a highly- and consume metadata without available load-balanced cluster understanding complex standards
  • 13. REST design Everything is a Resource, identified by a URI Everything has a Uniform Interface (PUT, POST, GET, DELETE) The representation you get is based on Content-Type e.g. text/xml, image/jpeg Interactions are stateless Links are key “Hypermedia as the engine of application state” (HATEOAS)
  • 14. REST design (continued) Ideally the “site” and the “api” are the same Based on Accept headers each client gets the representation they like In reality very few sites work like this Many sites are not stateless – use sessions But not so good for APIs Navigational context is easy for people to figure out No simple technical description of HATEOAS How to apply this to SOA metadata?
  • 15. Building an SOA Registry with REST Web HTML / HTTP Browser Atom Feeds Registry/ Repository Registry APP Java API APP curl / wget Other APP Languages Registry Java API
  • 16. WSO2 Registry An open source project that has tried to think about human and community issues as it tackles Enterprise SOA http://wso2.org/projects/registry Apache 2.0 license Open mailing list, wiki, JIRA, etc
  • 17. Simple Atom Feed <?xml version=quot;1.0quot; encoding=quot;utf-8quot;?> <feed xmlns=quot;http://www.w3.org/2005/Atomquot;> <title>Registry Blog</title> <link href=quot;http://pzf.fremantle.org/registry/blog/quot;/> <updated>2008-02-07T15:15:02Z</updated> <author> <name>Paul Fremantle</name> </author> <id>blog-6003063374827736283.post- 4039376056255567566</id> <entry> <title>Social Enterprise</title> <link href=quot;http://pzf.fremantle.org/registry/blog/2quot;/> <id>blog-687987243798723.post-342798273498734</id> <updated>2008-02-07T15:15:02Z</updated> <content> <html>…</html> </content> </entry> </feed>
  • 18. The benefit of Atom You can “subscribe” with your Atom Feed Reader to ANYTHING in the Registry When new versions of this service are deployed When people comment on my service When new services tagged “finance” are deployed
  • 19. Atom and AtomPub Standard “feed” reading and writing capability AtomPub (Atom Publishing Protocol) RFC 5023 Service (1..1) Workspace (1..n) Collection (1..n) Entries / Media Entries (1..n)
  • 20. More on AtomPub Clear definition of behaviour of POST, GET, PUT, DELETE For example, when you POST a resource to a collection Specify a “Slug” header that defines the proposed name The response 201 Created + Location header of new URI Benefits A well-defined protocol With interoperability, multiple clients, tools But also accessible with curl, wget, etc Does exactly what we needed (almost) Issues There is some ambiguity about how to create a new collection No definition of queries
  • 21. AtomPub isn’t just for Atom The AtomPub team defined clearly how you can create collections of Atom entries But also they define what happens if you POST other “stuff” Other stuff == “Media Resources” Well defined behaviour when you post a Media Resource Creates an Atom Entry with the metadata Plus a link to the real resource
  • 22. HATEOAS Atom has well defined link model An example: <?xml version='1.0' encoding='UTF-8'?> <feed xmlns=quot;http://www.w3.org/2005/Atomquot; xmlns:ns=quot;tag:wso2.org,2008:fooquot;> <parentPath xmlns=quot;http://wso2.org/registryquot;>/</parentPath> <link href=quot;http://localhost:8000/wso2registry/atom/stuffquot; /> <link href=quot;http://localhost:8000/wso2registry/atom/stuffquot; rel=quot;selfquot; /> <entry> <link href=quot;http://localhost:8000/wso2registry/atom/stuff/flatpackmediator.jarquot; /> <title type=quot;textquot;>/stuff/flatpackmediator.jar</title> <updated>2008-03-13T11:19:39.512Z</updated> <link href=quot;http://localhost:8000/wso2registry/atom/stuff/flatpackmediator.jarquot; rel=quot;selfquot; /> <link href=quot;/stuff/flatpackmediator.jarquot; rel=quot;pathquot; /> </entry> </feed>
  • 23. How we defined our URLs Base URL http://server/wso2registry/ “Intermediate” paths base/web base/atom base/resource Examples: http://localhost:8080/wso2registry/web/services/finance/invoice.wsdl http://localhost:8080/wso2registry/atom/services/finance/invoice.wsdl http://localhost:8080/wso2registry/resource/services/finance/invoice.wsdl Three different views of the same resource Note we didn’t use the Accept model
  • 24. How we defined our URL scheme /tags Collection of all tags in the system /tags/[mytag] Collection of all resources tagged mytag /resource/r1;tags Collection of tags on resource r1 /resource/r1;comments Collection of comments on r1 etc
  • 25. Versions Every time a resource is updated we create a new version We keep track of dependencies between resources (e.g. WSDL <- Schema) Access versions /resource/r1?v=4 /resource/r1;version Collection of pointers to versions
  • 26. Creating Collections (or why Microsoft didn’t use AtomPub – until they did) Not defined in AtomPub Spec says: This specification does not specify any request semantics or server behavior in the case where the POSTed media type is quot;application/atom+xmlquot; but the body is something other than an Atom Entry. In particular, what happens on POSTing an Atom Feed Document to a Collection using the quot;application/atom+xmlquot; media type is undefined.
  • 27. Creating a collection by APP POST /wso2registry/atom/ HTTP/1.1 Slug: stuff Host: localhost:8000 Content-Type: application/atom+xml;type=entry <entry xmlns=quot;http://www.w3.org/2005/Atomquot; xmlns:ns=quot;tag:wso2.org,2008:fooquot;> <summary type=quot;textquot; /> <author> <name>admin</name> </author> <ns:properties /> <mediaType xmlns=quot;http://wso2.org/registryquot; /> <parentPath xmlns=quot;http://wso2.org/registryquot; /> <directory xmlns=quot;http://wso2.org/registryquot;>true</directory> </entry>
  • 28. Queries Still work in progress We want our backend to be flexible, but we haven’t yet created our own Query Language Our current solution: Store the backend specific query (e.g. SQL) as an entry in the Registry Execute the query with parameters passed as HTTP GET parameters
  • 30. Java API Registry reg = new RemoteRegistry(new URL(quot;http://localhost:8000/wso2registry/atomquot;), quot;adminquot;, quot;adminquot;); Resource resource = reg.get(quot;/services/finance/invoice.wsdlquot;); Object wsdl = resource.getContent(); Resource newCollection = new Resource(); newCollection.setDirectory(true); newCollection.setAuthorUserName(quot;adminquot;); reg.put(quot;/stuffquot;, newCollection);
  • 31.
  • 32. What about WS-*? Focus on storing, searching, managing WSDL, Schema, WS-Policy Issues Dependency links WSDL imports Schema and Policy Validity - is this WSDL valid? is it WS-I compliant? Does it meet my corporate guidelines? What stage of its lifecycle? Test, System Test, Production, Deprecation WS-* metadata isn’t enough for the real world Comments, Tags, Properties and Ratings add some simple real-life annotations that augment this
  • 33. Content Handlers Whenever you POST or GET a WSDL we can intercept and run stuff For example, when we import WSDL Also import the Schemas Create internal dependency mapping WSDL dependsUpon Schema Schema isDependedUponBy WSDL We are extending this to run WS-I validation We also support URL handlers Allow you to extend the REST model of the Registry
  • 34. Lifecycle handling Version 1.0 Properties Version 1.1 Better specification Configure your lifecycle phases Run handlers when lifecycle changes occur
  • 35. So, what do I think about REST? Be skeptical about REST Even in this – the most obvious possible scenario – there are too many design choices to be made Even after you subset to Atom/AtomPub there are still lots of non-standard design choices to be made Still needed very smart people But this has worked out very well In terms of building the Human Interaction and Social aspects Unification of the human interface with the machine interface Atom feeds
  • 36. Human design By defining the structure and permissions this registry is designed to operate at any scale Local on your hard drive for personal versioned storage Departmental or shared between colleagues Enterprise wide Internet scale Running middleware systems directly from this metadata can offer the same scaling http://mooshup.com example
  • 37. Get involved! Home page http://wso2.org/projects/registry/ Mailing List registry-dev@wso2.org SVN https://wso2.org/svn/browse/wso2/trunk/registry/ Issue tracker https://wso2.org/jira/browse/REGISTRY