Projects‎ > ‎

USDS

Documentation

Last published version: not available
Development version: USDS 1.0*
Previous versions: not available
Plan for improvements: ToDo

Software

USDS Basic parser: the simplest USDS parser; it does not require any additional software..
USDS Creator: generates DOM and SAX parsers according to the dictionary; provides maximum performance.
USDS Converter: converts data between USDS, XML and JSON.
USDS Editor special editor for USDS documents with GUI.

You can see the benchmark tests here.
All software: Downloads
The source code: https://github.com/IT-DC/USDS

FAQ

  1. What is USDS?
  2. Why is USDS necessary, when JSON, BSON, XML, Protobuf and ASN.1 exist already?
  3. The text formats JSON and XML are better because they are "human readable"
  4. Binary formats are more complex then text
  5. How to use it?
  6. Which program languages are supported?
  7. Where USDS can be Used?

What is USDS?

USDS: Universal serialized data structures (or $S), a binary format which can replace XML and JSON completely. The main differences between XML and JSON are:

  • Integer numbers are used instead of text names for Tags/Keys. The relationship between the numbers and the text names are defined in the "Dictionary". The dictionary can be added to a USDS document (as an option).
  • There are no closing tags.
  • USDS documents can only be formed according to the scheme, which is defined in the dictionary. Polymorphism and optional fields are supported.
  • Numbers are stored in binary form (no text).
The full description of the format is represented here: USDS 1.0*

Why is USDS necessary, when JSON, BSON, XML, Protobuf and ASN.1 exist already?

Primarily, USDS is faster and more compact than most other formats (look at the Benchmark tests). This will positively affect the servers.

The USDS binary documents are "human readable", unlike most binary formats (USDS Editor).

Comparison with other formats:


USDS is superior to JSON, BSON and XML in these respects:
  • It's more compact and easier for machine processing;
  • Contains instruments for working with several versions of one schema;
  • USDS documents always correspond to schema (this reduces possible errors).
USDS is equivalent to JSON, BSON and XML in this respect:
  • Fields are searchable by name.

USDS is superior to Protobuf in these respects:
  • It's about 10% more compact;
  • Polymorphism is supported (compared with Protobuf 2.x. Protobuf 3.x supports data type "ANY");
  • Contains instruments for working with several versions of one schema;
  • Fields are searchable by name.
USDS is equivalent to Protobuf in this respect:
  • It's easy to integrate USDS into any projects, as well.

USDS is superior to ASN.1 in these respects:
  • USDS is an open format, and could be used in commercial projects for free;
  • ASN.1 XER supports searching data by field name, but this is functionally equivalent to XML (with all its problems);
  • Contains instruments for working with several versions of one schema;
USDS is equivalent to ASN.1 in these respects:
  • USDS is similarly compact;
  • Both formats support polymorphism and optional fields.

The text formats JSON and XML are better because they are "human readable"

In fact, you use special text editors for JSON and XML, with syntax highlighting and automatic formatting.

USDS is similarly "human readable" with USDS Editor. You can also convert USDS to JSON/XML with USDS Converter or USDS Basic parser.

Binary formats are more complex then text

As a user of USDS libraries, you will not feel the difference with text formats. You do not have to know the binary structure of the USDS at all (look at Examples of Using USDS Basic Parser). When debugging a program, you won't dig into the USDS binary data, you will use USDS Editor.

How to use it?

Download USDS Basic parser and read the chapter Examples of Using USDS Basic Parser.

Use USDS Editor for viewing the USDS documents.

Which program languages are supported?

The list of the supported program languages is represented here: USDS Basic parser.

The following languages will be supported:

  • C/C++
  • C#
  • Java
  • JavaScript
  • Objective C
  • Perl
  • PHP
  • Python
  • Visual Basic
If you don't see your language in the list, you can use a Dynamic Library USDS Basic Parser (.dll .so).

Where USDS can be Used?

USDS can be used everywhere XML and JSON are used, and in even more scenarios.

You can use USDS for data transfer via network. You can reduce traffic by transferring the dictionary and head only once, when the connection is established. If a client and a server know the dictionary already, you need only to transfer the head.

You can use USDS for configuration files: it's more reliable and faster than XML, and files can be modified with a USDS editor.USDS can be used as a base for HTML instead of XML: web-servers will be able to generate webpages 100 times faster. If you use USDS with JavaScript, then security is improved: HTML-injections become impossible. If you use USDS for data transfer with DBMS, SQL-injections become impossible too.


Comments

The gadget spec URL could not be found