Skip to content

Easysoa proxy use cases

mdutoo edited this page Oct 19, 2011 · 5 revisions

This page is the output of #33 "List the different kinds of proxy & their use cases".

Done on the basis of what's been done or prototyped up to now. To be used as requirements for the upcoming FraSCAti Studio / Proxy Factory, which will have to support generation of these kind of proxies (at least their use in SCA, and also their SCA configuration and possibly java code save if the proxy is generic enough).

AutoRearmFuseIntent

what it does

blocks incoming calls when there are too much within a timeframe

consumes, provides

  • consumes : Java Object Service
  • Provides : proxied java Object Service (or errors when fused)

how (technology, limitations)

  • stacks call times in a Queue (concurrency / scope ??) and compare their count with configuration provided as fixed properties
  • configuration : as an Intent, declared on each service to protect

what has to be generated (beyond use : configuration, code)

features it is useful for

global protection layer that has to be used by EasySOA Light (i.e. "mashupped") services before calling existing services

test / demo

PureAirFlowers : http://127.0.0.1:8083/easysoa/light/paf.html samples/easysoa-samples-pureairflowers/easysoa-samples-paf-restsoapproxy/src/main/resources/RestSoapProxy_withIntents.composite

source

easysoa/easysoa-intents/easysoa-intents-fuseIntent

wiki / readme

https://github.com/easysoa/easysoa-model-demo/wiki/EasySOA-Light https://github.com/easysoa/easysoa-model-demo/wiki/Demo-v0.1-Doc

WSDL-based form generator

what it does

Generate an HTML form from data's contained in a WSDl file.

consumes, provides

  • consumes : WSDL
  • provides : generic HTML service UI, exposed by binding.velocity (Servlet interface)

how (technology, limitations)

  • there are several implementations (of the same TransformationFormGeneratorInterface) :
  • XSL transformation : call a velocity page with the WSDL to transform as parameter (NB. a simple binding.http Servlet interface would be enough). The transformation is made with an XSLT file. returns the corresponding HTML form with input, output fields and javascript code to call an operation contained in the original WSDL
  • WSDL model templating : call a template (velocity) to be rendered using an object model of the WSDL (implementing TemplateFormGeneratorInterface). Two implementations of such an object model are provided, based either on EasyWSDL 2 (default) or Apache Woden (WSDL 2.0 only).
  • limitations :
  • At the moment, only works with simples WSDL (primitives types input/output parameters for the operations). Complex input/ouptut structures are difficult to transform and to render in HTML. A 'developper' mode is more easily realizable as we can only put text areas in the form to get/returns raw XML data format.
  • EasyWSDL 2.0 is in light conflict with FraSCAti dependencies (BPEL) which uses EasyWSDL 3.0 (alas WSDL 1 only), but other alternatives are worse
  • further :
  • compare to other HTML binding alternatives (FraSCAti, Nuxeo)
  • make it instantiable, see #59 Scaling up FraSCAti proxies
  • which allows to let the user edit the velocity template of a service-specific instantiation of the proxy. This allows for UIs able to call complex services.
  • configuration : As an SCA component

what has to be generated (beyond use : configuration, code)

XSLT transformation to eventually replace the provided one

features it is useful for

works with the "call it" button embeded in Nuxeo for each registered web service.

test / demo

http://localhost:8090/scaffoldingProxy?wsdlUrl=http://localhost:9010/PureAirFlowers?wsdl EasySOA/easysoa-proxy/easysoa-proxy-core/easysoa-proxy-core-scaffolderproxy/src/test/java/org/openwide/easysoa/test/FormGeneratorTester.java

source

https://github.com/easysoa/EasySOA/tree/master/easysoa-proxy/easysoa-proxy-core/easysoa-proxy-core-scaffolderproxy

wiki / readme

Templatized form

what it does

generate an HTML form from web service definition using a service-specific template

consumes, provides

  • consumes : WSDL and an HTML template
  • provides : service-specific HTML service UI

how (technology, limitations)

Using Velocity or another templating mechanism (XSL, mustache.js, code, Talend job...). Can be done in the velocity-based WSDL form generator, by making it instantiable and the velocity template editable.

features it is useful for

Generation of HTML forms from WSDL or rest web services definitions for complex services

test / demo

Not yet implemented

source

Not yet implemented

wiki / readme

Not yet implemented

REST/SOAP proxy

what it does

Transforms a REST exchange in SOAP exchange, by calling the web service and sending back the response

consumes, provides

  • consumes : SOAP web service, accessed programmatically through SOAPUI libraries
  • provides : REST service : a REST request, with WSDL reference, port and operation specified as parameters ; The response of the SOAP web service, returned as a JSON data structure (to be used directly by the HTML form).

how (technology, limitations)

  • the HTML form send a REST request containing the target WSDL URL, the port and the operation to call, and others parameters to map in the SOAP request. The SOAP request is generated with SOAPUI (can be replaced by an other system implementing WebServiceHelper, like the provided Apache Woden based alternative which is alas WSDL 2 only, or for instance EasyWSDL), parameters are mapped in the XML request structure. The service is called and the response is transformed in JSON, then sent back to the form to be displayed.
  • limitations : none. Supports complex WSDL types, however no specific type mapping (date) for now and there may be some conflicts because of (no) namespace to jason mapping.
  • further :
  • compare to other HTML binding alternatives (FraSCAti, Nuxeo, using JAXRS/CXF to get a universal REST to SOAP proxy)
  • make it instantiable notably by putting "consumes" in FraSCAti, see #59 Scaling up FraSCAti proxies
  • which allows to added user-editable velocity templates for the request and response. This makes the REST service less complex.
  • and / or use other strategies to make services less complex (Talend, Light), see #58 EasySOA Light - Further scaffolding features
  • configuration : As a SCA component

what has to be generated (beyond use : configuration, code)

nothing

features it is useful for

works with the "call it" button embeded in Nuxeo for each registered web service, along with the WSDL-based form generator.

test / demo

http://localhost:8090/scaffoldingProxy?wsdlUrl=http://localhost:9010/PureAirFlowers?wsdl EasySOA/easysoa-proxy/easysoa-proxy-core/easysoa-proxy-core-scaffolderproxy/src/test/java/org/openwide/easysoa/test/FormGeneratorTester.java

source

https://github.com/easysoa/EasySOA/tree/master/easysoa-proxy/easysoa-proxy-core/easysoa-proxy-core-scaffolderproxy

wiki / readme

Templatized REST or SOAP exchange

what it does

generate an HTML form from web service definition using a service-specific template

consumes, provides

  • consumes : REST (resp SOAP) service, request and response templates
  • provides : simpler REST (resp SOAP) service

how (technology, limitations)

Using Velocity or another templating mechanism (XSL, mustache.js, code, Talend job...). The SOAPUI-based REST to SOAP proxy can be enhanced by such a proxy, by adding velocity templates before (resp. after) transforming to SOAP.

features it is useful for

Making a service less complex.

test / demo

Not yet implemented

source

Not yet implemented

wiki / readme

Not yet implemented

Other Light proxies

what it does

Provide one (or more) business service on top of existing services

consumes, provides

  • consumes : existing REST services, configuration (templates, code, configuration files...)
  • provides : REST business service

how (technology, limitations)

  • Multiple service templatized form : can use many services (instead of a single one), editor allows to include any used service's generated HTML form at any point in the template, main UI template is therefore composed of calls to generation of parts of service forms, or of an inlined and reworked version of such code.
  • Javascript code proxy, allowing to code business logic before transforming / send messages to services. On FraSCAti's implementation.javascript (other script languages available), maybe also on node.js ?? Editor allows to generate script / SPoRE calling any used service at any point in the javascript
  • decision table-like, spreadsheet-driven proxy, TODO MDU more
  • n-tier business application proxy : Multiple service templatized form for presentation, javascript code for business logic, templatized exchanges (+ REST to SOAP, SLA, cache, security...) for data layer. Allows from making personalized template to simplify huge forms (for example by adding default values in a template and others in another one), to develop full-fledged business applications.
  • workflow business application proxy : a special kind of n-tier proxy
  • using in addition to business services a workflow service
  • whose implementation can be done in Light, or as a wrapper on top of entreprise workflow engines such as Bonita...
  • and with an enhanced, customizable form template strategy : has a templates allowing to list user tasks, then get to a task's own form, and there perform it and see the result ; however these templates can be overriden for a whole workflow, or per task...

Non-proxy features :

  • user auth / permission / authorization layer

features it is useful for

Configure or code business logic and application

test / demo

Not yet implemented

source

Not yet implemented

wiki / readme

Not yet implemented

HTTP Monitoring

what it does

listen HTTP message and record them to offer to possiblity to "rerun" the recorded messages

consumes, provides

  • consumes : REST message, REST messages or SOAP messages
  • provides : REST message, the response form the original web service and a Java object message, the message request and response recorded in the proxy for the rerun feature

how (technology, limitations)

  • Monitoring proxy extends HttpServlet interface. As we talk about a proxy, the messages are sended to ther orginal recipient and the response send back to the client. The message and the response are transformed in Java object message and then recorded in a run manager. The run manager offer the possibility to 'replay' the recorded messages.
  • configuration : As a SCA component
  • limitations : none. It can even monitor Java object calls, though at the cost of putting a specific WS between the Java client and the Java server.

features it is useful for

get a message collection for discovering SOA API's and services, for building a test set, for monitoring purposes, for api change detection ....

test / demo

source

https://github.com/easysoa/EasySOA/tree/master/easysoa-proxy/easysoa-proxy-core/easysoa-proxy-core-httpdiscoveryproxy

wiki / readme

API/Services Discovery

what it does

make an heuristic based analisys of messages to discover api's and services. The discovered api's and services are registered in Nuxeo

consumes, provides

  • consumes : Java object message, a set of message request and response
  • provides : REST Message, a REST request for the registering of discovered API's and services.

how (technology, limitations)

  • Works with Esper and message handlers. 2 disctincts modes : Discovery and validated. In discovery mode, each message is analysed, its URL is decomposed and stored in a tree. when enough data's are in the tree, the discovered API's and services are registered in Nuxeo. In validated mode, at the start of the proxy, registered data's are recovered from Nuxeo. Only the already registered API's and services are updated, the others are stored in a temporary structure and the user have to decide what to do with them (register or not).
  • configuration : a SCA component
  • limitations : At the moment, the message analysis is made with very simple, hardcoded heuristics so the system works only with simple URL's. It will be necessary to use a more sophisticated system like a data mining software (see Weka3 at http://www.cs.waikato.ac.nz/ml/weka/) to obtain good results during the discovering of API's and services.

features it is useful for

feed and update the service registery in Nuxeo.

test / demo

Configure a client to use the proxy at port EasySOA/easysoa-proxy/easysoa-proxy-core/easysoa-proxy-core-httpdiscoveryproxy/src/test/java/org/openwide/easysoa/test/MockedHttpDiscoveryProxyTest.java

source

https://github.com/easysoa/EasySOA/tree/master/easysoa-proxy/easysoa-proxy-core/easysoa-proxy-core-httpdiscoveryproxy

wiki / readme

Caching proxy

what it does

Cache exchanged data so that existing low-level services are not hit too much by top-level business services configured in EasySOA.

consumes, provides

  • consumes : existing REST services
  • provides : cached REST business service

how (technology, limitations)

  • client-side HTTP caching (header driven refresh)
  • server-side caching. Data obsolescence could be provided by pluggable notifications, or scheduling for more BI-like uses...

features it is useful for

Cache, also an alternative to Fuse (SLA)

test / demo

Not yet implemented

source

Not yet implemented

wiki / readme

Not yet implemented

Security proxy

what it does

Add a security layer to a service or application (HTML service), or connect to a secured service, or both (translate / SSO).

consumes, provides

  • consumes : existing REST (resp. SOAP) service, not secured (resp. secured)
  • provides : REST (resp. SOAP) service, secured (resp. not secured)

how (technology, limitations)

  • auth kinds : BASIC, OAuth(2), HTTPS/SSL...

features it is useful for

  • Work with existing secured-only services
  • security as a service : expose a secured version of existing unsecured services
  • secure Light unsecured services and applications with EasySOA Light-wide authorization / permission management

test / demo

Not yet implemented

source

Not yet implemented

wiki / readme

Not yet implemented

Compression proxy

what it does

(Un)compresses HTTP (resp SOAP ??) exchanges

consumes, provides

  • consumes : existing compressed (resp. uncompressed) service
  • provides : uncompressed (resp. compressed ) service

how (technology, limitations)

  • HTTP Accept header, ex. gzip

features it is useful for

  • let non-business proxies look into compressed messages, ex. HTTP monitoring can discover services in compressed exchanges. Further work with existing compressed-only services.
  • performances : expose a compressed version of existing uncompressed services. Note that at least in the case of Light applications and services, node can be used to add compression.

test / demo

Not yet implemented

source

Not yet implemented

wiki / readme

Not yet implemented

Clone this wiki locally