Google Protocol Buffers

     

    Protocol Buffers is a highly efficient method of data serialisation.  You first define your message types, and the fields you wish to express, and then use the Google compiler to create the code. See the official Google project site for information.

     

    message vehicle
    {
        optional    string            _type                        = 1;
        optional    string            _make                        = 2;
        optional    string            _model                       = 3;
        optional    string            _registration                = 4;
        optional    uint32            _odometer                    = 5;
        optional    string            _transmition                 = 6;
        optional    string            _fuelType                    = 7;
        optional    string            _engine                      = 8;
        optional    string            _colour                      = 9;
        optional    string            _contents                    = 10;
        optional    bool              _towingATrailer              = 11;
        optional    float             _grossMass                   = 12;
        optional    string            _trim                        = 13;
    }

     

    Turbo Dispatch defines string fields, but there is no definition as to which fields you can use with which message type (except for some examples).

    When using our Google Protocol Buffers implementation, the messages are built into classes that an IDE (e.g Visual Studio), can inteliseance, prompting which fields are available.  This make development easier, and reduces the possibility of mistakes.


    Backward/Forward compatibly.

     

    Extending the data structures is trivial, and does not break applications that have already been deployed.  We compile the message structures into our .NET DLL connector, so keeping up to date with changes, is juat a metter of downloading the latest DLL.

     

    Compatibility with Turbo Dispatch


    Our .NET DLL connector has a compatibility layer that converts from TD to Protocol Buffers and back again.  Since TD does not define which fields can be contained in each message, there is the possibility this convention will fail.  Under such a situation, the message will be sent in the original TD format, and providing the destination is accepting TD formatted messages, will get though.


    We have tested all known messages, but if there is a situation where the conversion wont take place, we will do the work necessary to fix it.