x Extensible Binary Universal Protocol - Wiki

User Tools

Site Tools

Site » About 
en:about

Project Introduction

XBUP is binary data protocol and file format for communication, data storage and application interfaces.

Key Features

  • Unified block-tree structure - Allows to combine different data together into single unit
  • Build-in and custom data types - Catalog of types and support for external definitions
  • Transformations framework - Data processing for compression, encryption, compatibility and data handling

Motivation

Project should provide universal protocol as a more feature-rich alternative to currently used binary protocols. It should provide general methods for handling various types of data including:

  • Multimedia files - Audio, Video, Animation
  • Filesystem structure - Allow to represent data in the form of filesystem or as compressed archive
  • Application API - Remote or local methods execution supporting parameters and result passing
  • Serialization protocol - Provide ability to serialize structured data
  • Long-term data storage - Provide way to define data with separate or integrated specification
  • Huge data - Use dynamic numeric values to allow support for data in terabytes range or more
  • Representation of segmented, fragmented or indexed data

The protocol is also intended to bring advantages of modern markup languages like XML into binary world. It's a ground-up designed alternative focused on binary data, yet providing similar techniques like XML Schema, XML Namespaces, XSLT and so on.

Where applicable, project should also include concepts from other similar protocols, like for example:

  • RIFF - Resource Interchange File Format
  • HDF5/CDF - Hierarchical Data Format / Common Data Format
  • ASN.1 - Abstract Syntax Notation One
  • Matroska/EBML - Extensible Binary Meta Language
  • Protocol Buffers - Serialization protocol for binary data exchange

Design Principles

Project is using bottom-up approach with layers building on top of each other adding gradually new functionality.

Some of the design principles:

  • Small steps - Project should be build and evolve by adding small and independent functionality
  • Universaility first - Focus should be on support of wide range of use-cases and provide extensibility instead of fixed and compact structure
  • Abstraction - Data should be defined using abstraction instead of vague description only

More

You can learn more about this project by reading following sections:

en/about.txt · Last modified: 2017/07/08 12:43 by hajdam