Blog to discuss Midnight Coders products features, ideas and trends in development of Rich Internet Applications

Friday, March 31, 2006

Asynchronous binding for AJAX clients in WebORB

One of the features we added in the 2.0 GA release of WebORB is the support for asynchronous object binding for AJAX clients. Previously, the only way to create a client proxy for a server-side object was the webORB.bind() call which is synchronous. As a result, the binding process could freeze the browser for a brief period of time which may not be a desirable effect.

The asynchronous binding uses a separate thread in the browser to create a proxy and delivers the proxy object via callback. Consider the example below. The code binds to the com.foo.Bar object available in a WebORB server at weborbServerUrl.

var className = "com.foo.Bar";
var weborbServerUrl = "http://host:port/weborb";
var async = new Async( gotProxy, failedToBind );
webORB.asyncBind( className, weborbServerUrl, null, null, async );

function gotProxy( proxyObj )
{
// cache proxy object. The proxy object has all the
// same methods as com.foo.Bar
this.proxy = proxyObj;
}

function failedToBind( error )
{
alert( "unable to create proxy. " + error.description );
}

The most important part if the 'async' argument which contains two function references. One is called when the proxy is created, the other is called if an error occurs.

It is recommended to initiate object binding upon successful page loading and chain the execution logic through the binding callbacks.

Thursday, March 16, 2006

check out Mapable.com - WebORB powered service

Back in October of 2005, we created the map chat example demonstrating the WebORB Message Server feature of the product. The example was very successful and gave us some ideas for a general purpose service. We started a new company to execute those ideas and the website was released yesterday. So check out Mapable.com:

http://www.mapable.com


What is Mapable? It is a collection of consumer-oriented services based on 3 core components - users, location and communication. At the present moment there is only one service - Mapable Chat, but more are coming soon. The chat service lets you create chatrooms and import them to any website or a blog. Chatrooms are also hosted on mapable.com itself. If you're a blogger, you can configure your blogging system to automatically create a chatroom for any blog post.

I am proud to say that the chat functionality and AJAX interactions on Mapable.com are powered by WebORB. It was a great experience working with the Mapable team and I wish them lots of success with the great product they built.

Tuesday, March 14, 2006

WebORB for Java is now GA

I am happy to report that WebORB 2.0 for Java is now GA! The product is available for immediate download. Here's what you will find in 2.0:
  • Major Message Server enhancements.
    • Improved client side APIs
    • Support for both AJAX and Flash clients
    • Universal message delivery. Message Server can deliver any message type (primitives, strings, complex types, arrays) to the supported clients. Messages get automatically formatted to the client environment
    • Full documentation (client API, server architecture)
  • WebORB Standard Edition license generation is available to the public. Registered users can generate their own WebORB Standard license keys.
  • Safari 2.0 support. The Rich Client System has been fixed to work on Safari. All AJAX examples now work on all major browsers.
  • Date and array serialization for the AJAX clients has been fixed
  • Serialization of circular object references in returned complex types has been fixed.
  • Serialization of returned singleton objects has been fixed.
  • Added QuickStart guide for ColdFusion Components (CFCs) to the user guide.
  • Multi-protocol support. WebORB architecture allows pluggable protocol handlers. There are 2 built-in implementations: WOLF (Web Object Literal Format) - an XML-based protocol for handling AJAX requests and AMF (Action Message Format) - binary protocol developed by Macromedia for Flash-based clients.
  • Rich Client System. WebORB includes a set of APIs to simplify object binding and invocation process. In the future the APIs will include support for dynamic widget generation.
  • Integration with BlueDragon by New Atlanta and support for ColdFusion Components.
  • Ability to map client classes to the server ones and vice versa.
  • Type adaptation improvements. Added support for conversion of string-based arguments to the numeric types
  • JDBC Integration improvements. Changed to use column labels instead of column names.
  • WebORB for Java supports Development Mode. If license file cannot be found, WebORB for Java will respond to the requests only from 1 IP address. In addition to the IP limitation, the server will perform a shutdown after 3 hours of operation.
We would like to solicit your feedback on what you would want to see in the next release. We're looking into implementing the new AMF protocol and will simplify integration with Flex 2.0. If you have any suggestions please feel free to share them with us.