On Mon, Mar 14, 2016 at 7:07 PM, Feng Xiao <[email protected]> wrote:

> On Mon, Mar 14, 2016 at 6:14 PM, Tim Kientzle <[email protected]> wrote:
>>
>> I was considering Any for cases such as logging, data storage, and other
>> systems where intermediaries do not need to access or understand the
>> additional data.  This was a common use of extensions in proto2:
>> Intermediate handlers would decode and act on a limited set of well-known
>> fields; additional data would be simply carried through until a final
>> consumer decoded and acted on it.  Any satisfies this use case for
>> protobuf-only systems but not for systems that use JSON.
>
> If you only use protobuf format, Any is mostly the same as extensions. If
> you are using JSON, proto2 extension doesn't help solve the issue at all. I
> think the problem is not that Any does not allow intermediate proxies to
> pass through the data without knowing the type info, but that you are
> trying to mix JSON and protobuf format in the same system. In google, we
> are using a front-end proxy to convert JSON to/from protobuf, and
> everything else behind it is using protobuf only. The current Any design
> works with this approach very well. Not sure whether this works for your
> case, but it's something worth considering.
>

If I'm understanding Tim correctly, I think what he is saying is true even
of systems that use only JSON. For example, consider an app in Ruby that
writes:

  msg = MyMessageType.decode_json(json_text)

If the JSON contains an Any, this line of code requires the parser to fetch
type info, and it must fail if it cannot be retrieved. This affects even
JSON-only apps.

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to