----- Original Message -----
From: "Jason T. Greene" <jason.greene(a)redhat.com>
To: jboss-as7-dev(a)lists.jboss.org
Sent: Wednesday, February 9, 2011 11:08:58 PM
Subject: [jboss-as7-dev] DMR GWT Prototype
I was able to port DMR so that it can be used with GWT to send and
receive DMR's native externalized binary format via client-side
javascript.
https://github.com/n1hility/jboss-as/tree/detyped2
A pure binary protocol is not possible in all browsers, so the
implementation has to base64 encode the stream.
The main advantage to this approach is that there is essentially no
loss
of information (all type info is preserved), and the API works very
well
at dynamic access and is exactly the same as the management API used
in
server code. In addition parsing requests on the server is much more
efficient since there is less transformation and pattern matching.
Lastly it has the potential to be much more space efficient.
However, due to Javascript's very poor binary handling, lack of
streaming, and lack of native floating point encoding, client side
execution is on average 2x+ slower than directly evaling JSON code.
That
said, processing a dump of the entire model took on average 9ms (in
webkit based browsers), and in the worst case (firefox) took 20ms. So
the times are still somewhat reasonable.
And from what I have seen of the Firefox 4 beta testing, that 20ms will shrink a lot.
In addition to being faster on the client side, eval'd JSON does
not
require maintaining the DMR API. On the other hand JSON usage in GWT
is
clumsy if you aren't using overlay types, and overlay types are not
helpful to dynamic client code (dynamic as in being able to discover
and
manage resources based on resource descriptions as opposed to static
code).
Lastly, JSON output, by its nature, loses type information. Although
this could be worked around if it's a problem by adding type
identifiers
to all node values, at the cost of looking less JSON like (extra
verbose).
So ultimately it's up to everyone working on the console as to which
direction this goes. I can easily support both mechanisms on the
server.
--
Jason T. Greene
JBoss, a division of Red Hat
_______________________________________________
jboss-as7-dev mailing list
jboss-as7-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-as7-dev