On Sat, Sep 19, 2009 at 12:47 PM, Matthew Wild <[email protected]> wrote:
>>> * XEP-0225: Component Connections
>>
>> IMHO it would be great to work on this, although Jack Moffitt has
>> questioned how useful any kind of external component protocol really is
>> (given that you serializing and deserializing XML is expensive).
>>
>
> +1 to keeping this alive, it's something I'm quite interested in.
> Regardless of efficiency, components are very popular, they are a
> great way to implement services, and can be load-balanced, etc. We
> should definitely keep the ball rolling in this area.
>
> Regarding efficiency, by using a more "standard" XMPP stream, it would
> allow components to negotiate compression, or other more efficient
> encodings of the stream such as XEP-0239.
Well, jokes aside, imho for components it makes sense to define a more
efficient encoding. I like the concept of protocol buffers, but from
what I've understood they work well just for messages whose format if
fixed so they can't apply to xmpp. In the past we played with
different binary encodings, but they usually are oriented to
predefined schemas and therefore they are as limited as protocol
buffers, but without their simplicity. The only solution we have found
working in practice is a naive encoding we experimented, which doesn't
cover all xml serialization, but the one which is actually used in
XMPP. Here is a basic description of the format:
Element:
( (namespace_tag,ns),name_tag,name
nattrs,[(namespace_tag,ns),name_tag,name,len,value]
nchildren,[Element] |
text_tag,text
)
tags are 1 or 2 bytes tokens which contain a the next token type
(namespace, name or text) and its length in binary format; length
values are also defined with 1 or 2 bytes containing a binary value.
The great advantage of this format is that the type and the length of
each token is known in advance and no escaping is needed, therefore it
is possible to make very efficient parsers and serializers (in our
experiments 3x than normal xml serialization)
--
Fabio Forno,
Bluendo srl http://www.bluendo.com
jabber id: [email protected]