2009/9/19 Fabio Forno <fabio.fo...@gmail.com>: > On Sat, Sep 19, 2009 at 12:47 PM, Matthew Wild <mwi...@gmail.com> 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: >
> 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) > Yep, jokes aside this is exactly the kind of thing I had in mind. :) Matthew.