-
Notifications
You must be signed in to change notification settings - Fork 8
Easysoa proxy use cases
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).
blocks incoming calls when there are too much within a timeframe
- consumes : Java Object Service
- Provides : proxied java Object Service (or errors when fused)
- 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
global protection layer that has to be used by EasySOA Light (i.e. "mashupped") services before calling existing services
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
easysoa/easysoa-intents/easysoa-intents-fuseIntent
https://github.com/easysoa/easysoa-model-demo/wiki/EasySOA-Light https://github.com/easysoa/easysoa-model-demo/wiki/Demo-v0.1-Doc
Generate an HTML form from data's contained in a WSDl file.
- consumes : WSDL
- provides : generic HTML service UI, exposed by binding.velocity (Servlet interface)
- 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
XSLT transformation to eventually replace the provided one
works with the "call it" button embeded in Nuxeo for each registered web service.
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
generate an HTML form from web service definition using a service-specific template
- consumes : WSDL and an HTML template
- provides : service-specific HTML service UI
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.
Generation of HTML forms from WSDL or rest web services definitions for complex services
Not yet implemented
Not yet implemented
Not yet implemented
Transforms a REST exchange in SOAP exchange, by calling the web service and sending back the response
- 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).
- 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
nothing
works with the "call it" button embeded in Nuxeo for each registered web service, along with the WSDL-based form generator.
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
generate an HTML form from web service definition using a service-specific template
- consumes : REST (resp SOAP) service, request and response templates
- provides : simpler REST (resp SOAP) service
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.
Making a service less complex.
Not yet implemented
Not yet implemented
Not yet implemented
Provide one (or more) business service on top of existing services
- consumes : existing REST services
- provides : REST business service
- Javascript code proxy. On FraSCAti's implementation.javascript (other script languages available), maybe also on node.js ??
- decision table-like, spreadsheet-driven proxy, TODO MDU more
Configure or code business logic
Not yet implemented
Not yet implemented
Not yet implemented
generate an HTML form from web service definition
- consumes : Java object message and external templates for presentation and another one for data mapping.
- provides : generic HTML service UI
including 2-tier (presentation template and data structure template) and workflow form (multi screen & muti user). Proxies :
- presentation : Templatized form (and its editor)
- data structure : Templatized REST exchange (and its editor) and / or js code proxy, on top of REST to SOAP proxy.
Using Velocity as templating engine.
Generating advanced HTML forms from WSDL or Rest web services definitions. Make personalized template to simplify huge forms (for example by adding default values in a template and others in another one).
Not yet implemented
Not yet implemented
Not yet implemented
listen HTTP message and record them to offer to possiblity to "rerun" the recorded messages
- 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
- 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.
get a message collection for discovering SOA API's and services, for building a test set, for monitoring purposes, for api change detection ....
make an heuristic based analisys of messages to discover api's and services. The discovered api's and services are registered in Nuxeo
- 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.
- 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.
feed and update the service registery in Nuxeo.
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
Cache exchanged data so that existing low-level services are not hit too much by top-level business services configured in EasySOA.
- consumes : existing REST services
- provides : cached REST business service
- 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...
Cache, also an alternative to Fuse (SLA)
Not yet implemented
Not yet implemented
Not yet implemented