[ 
https://issues.apache.org/jira/browse/THRIFT-769?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Armaan Sarkar updated THRIFT-769:
---------------------------------

    Attachment: pluggable_serializer.patch

Adds the pluggable serializer from scratch

> Pluggable Serializers
> ---------------------
>
>                 Key: THRIFT-769
>                 URL: https://issues.apache.org/jira/browse/THRIFT-769
>             Project: Thrift
>          Issue Type: New Feature
>          Components: Java - Compiler, Java - Library
>            Reporter: Bryan Duxbury
>            Assignee: Bryan Duxbury
>              Labels: gsoc2011, mentor
>         Attachments: pluggable_serializer.patch, thrift_scheme.patch, 
> thrift_scheme_update1.patch
>
>
> Thrift is already designed to have modular Protocols, which define the 
> various elements of binary encoding. However, the way that our code is 
> generated, we're also implicitly defining every protocol to have a 
> *structure* like that of the Binary protocol. 
> This has served us well so far with it's simplicity, and other protocols 
> (like Compact and JSON) have been able to squeeze into this model 
> successfully, though at a noticeable cost. For instance, Compact protocol has 
> to keep its own internal state in a stack to know what the last field id we 
> wrote was so that it can write compact deltas. The JSON protocol is even more 
> complex, keeping a truly monstrous amount of state around in order to be able 
> to do the right thing at the right time. All this state tracking comes with 
> cost, both in complexity and in actual runtime.
> I think that there's a solution to this problem - making the serialization 
> code itself pluggable. That is, rather than there being a single "write" and 
> "read" method for every protocol, we could let Protocols require a certain 
> kind of Serializer to interact with them. Binary protocol could use the 
> "default tagged" serializer, which would look like what we have today. JSON 
> would probably use a custom one that basically let it write out strings and 
> nothing else. Compact would also likely use a custom serializer that kept all 
> the needed state on the system stack, rather than in a user-code stack. Dare 
> I say it, but it's possible that if we did it right, we could even serialize 
> Thrift structs with Avro's serialization format!
> The upshot of this change would be to make many protocols faster and simpler, 
> while also allowing us to implement a broader set of protocols that don't fit 
> with the traditional Thrift-style protocols.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to