Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Complete the Implementation Details section

...

Websockets are designed to work very well on a pub/sub pattern. However, in Tuscany they will be used more on a request-response pattern benefiting from the ability to receive responses asynchronously. Aside from the communication over the wire between the Monsoon client and Monsoon server being done asynchronously due to the nature of the websocket protocol, communication between the reference and the Monsoon client as well as communication between the Monsoon server and the service implementation will be done asynchronously using the support for async invocation in inside the Tuscany internals which was recently improved in the 2.0-Beta2 release.

!!

The above communication flow happens when a SCA reference is being called by the client. Websocket clients are also destined to be supported by browsers so Tuscany will support browser clients as well for the websocket binding. In this case, the server side presented above remains the same but the client side runs in a completely different environment. For browser clients, javascript proxies will be generated for all services supporting the websocket binding from an SCA domain and will be available to access via HTTP. These will be imported by including it in the HTML document which is enough for the browser to download and load it. This will be a significant decrease in the complexity the user needs to handle as all the websocket related communication and wiring is done automatically under the hood for him. He will just have to call something like websocketComponentContext.serviceName.operationName(params) making the SCA integration seeming-less in the browser. Parameters will be passed in a JSON format from one peer to another so a databinding layer will be interlaced right before delegating I/O responsibility to Monsoon. JSON is a good choice for both browser clients and SCA references due to it's lightweight format and native support in browsers.

In conclusion, this project will bring a number of benefits to Apache Tuscany as well as to The Apache Software Foundation. Apache Tuscany will complement it's support for asynchronous communication at the same time initiating it's support for HTML5 technologies. The project will also enable me to gradually improve Monsoon and make progress toward the Apache Incubator proposal. The websocket protocol is currently an internet draft and is evolving to a final stable version in the near future. Enabling easy adoption of the websocket technology is very important as projects can experiment with it and provide feedback from an early stage. This will help Monsoon improve and mature over time as the protocol becomes an internet standard.

Deliverables

Additional Information

...