Bindings, Platforms, and Innovation
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
Tracking change and innovation in the enterprise software development community
Posted by Werner Schuster on Jul 21, 2008 06:10 PM
Google recently open sourced Protocol Buffers - a Data Interchange Format. Behind the somewhat nondescript name hide:message Person {
required int32 id = 1;
required string name = 2;
optional string email = 3;
}
The numbers ("tags") assigned to the field names need to be specified explicitly to allow the formats to evolve. If they were automatically assigned, a change to the format - say inserting a new field - would cause trouble. Why? Because in the binary format, tags are used to describe what field (in the protocol description) a particular chunk of bytes is. Together with the rule that unknown tags are ignored, explicitly assigned tag numbers allow to add new fields as the format evolves, yet retain compatibility. In the end, if you want an endpoint that is loosely coupled and offers the maximum flexibility, stick with XML, either wrapped in a SOAP envelope or in a RESTful envelope as dictated by the underlying transport (which means HTTP, since REST over anything else has never really been defined clearly by the Restafarians). If you need a binary format, then Protocol Buffers are certainly one answer... but so is ICE, or even CORBA (though this is fast losing its appeal thanks to the slow decline of the players in this space). Don't lose sight of the technical advantages or disadvantages of each of those solutions just because something has the Google name on it.With all the comparisons to XML or JSON, it's easy to miss that Protocol Buffers are a reimplementation of existing technologies. Next to the already mentioned ones, a widely used competing technology is ASN.1, which seems to be somewhat obscure and little known despite being several decades old. This is peculiar if you look at a small sample of the formats that are described in ASN.1:
5 Ways to Ensure Application Performance
Adobe® Rich Internet Application Project Portal
Performance Management and Diagnostics in Distributed Java and .NET Applications
Would you enroll in an India Forex Group i.e http://www.indiaforex.com Groups?
With ChangeSummary and XML support, SDO should have been a better choice.
Already there seems to be a huge debate going on about JSON vs XML, two more (thrift and pb) have popped up.
The three most important characteristics which are must for any good data format are data structure, data types and data constraints.
According to me currently only XML has all the three. I am not aware of any other format which has all these characteristics and widely accepted.
http://www.omg.org/gettingstarted/omg_idl.htm http://hessian.caucho.com/ Or, maybe, this a key to innovation? Reinvent 100 wheels and 101st will be another big thing? Regards, Slava Imeshev Cacheonix: Clustered Java Cache
You can also under-invent the wheel by providing a message editor that does not parse link breaks and links :)
http://www.omg.org/gettingstarted/omg_idl.htm
http://hessian.caucho.com
Regards,
Slava Imeshev
Cacheonix: Clustered Java Cache
It would be interested (to me, anyway) to also see in this comparison Adobe's AMF, another binary message format that has also been open-sourced.
Agree here w/Slava. WTF is wrong with Caucho if one needs this data portability? Or SDO? I don't understand... Can someone from Google team provide a sensible reasoning to use theirs vs. others?
Thanks,
Nikita Ivanov.
GridGain - Grid Computing Made Simple
It is actually not a foregone conclusion that protocol buffer will outperform XML, see this article for further analysis http://soa.sys-con.com/node/250512
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.
This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.
This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.
This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.
After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.
IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.
Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.
7 comments
Watch Thread Reply