CBFS® IPC

Cross-platform communication framework for your applications

CBFS IPC is a software component for transparent data transfer between applications running in heterogeneous environment or parts of a single application. CBFS IPC offers cross-platform protocol-independent communication framework, which takes implementation of data transfer, multithreading, data compression, encryption, packet integrity, and other operations off developers' hands.

Exchange Messages in Heterogeneous Environments

With CBFS IPC, you can quickly implement an application for cross-platform messaging. Using messages, you can send commands or data to other processes and receive replies, transfer data across multiple processes and systems, etc.

Protocol-independent Communication

CBFS IPC is not limited to TCP protocol. It utilizes a pluggable transports scheme, where you can add transports to a Messenger object and send messages via any of those transports. CBFS IPC includes TCP and UDP socket, HTTP, and MemoryMappedFile transports.

Industry Standard Data Security

CBFS IPC provides identification, on-the-fly compression, encryption, and integrity checking of messages being sent. Built-in transparent strong encryption is based on 256-bit AES algorithm.

Client-server and Peer-to-peer Data Transfer

Each node in distributed system using CBFS IPC can act as both client and server. CBFS IPC can transfer messages independently in both directions. This provides benefits from building peer-to-peer networks, parallel, and distributed systems, while retaining the option of a client-server scheme.

Strong Data Protection

Improve security and prevent unauthorized access with industry-adopted data encryption mechanisms. Strong 256-bit AES encryption can be applied to a wide range of entities: from a single file stream to whole file storage. And if you need to meet stronger requirements, you can add your own encryption schemas including public key cryptography.

Build Client-server Sytems

To simplify the process of creating client-server systems, CBFS IPC offers an efficient server core and provides an independent bi-directional conversation via single connection (you just split one connection into two). It also provides a way to create event-driven clients and servers, and such scheme is easily designed and scalable.

Simplify Cross-Platform Data Exchange

CBFS IPC can simplify synchronization between desktop and PDA or between two PDAs (not available with default synchronization solutions). Moreover, CBFS IPC can be used in ad-hoc networks, where standard solutions don't work

Create Distributed Systems

CBFS IPC was developed with distributed systems in mind. It effectively utilizes persistent connections and restores them if they are broken, making data exchange completely transparent. There exists only one connection between any two nodes, and it is used for data transfer in both directions.

Optimize Split Systems

CBFS IPC is used to provide an effective event-driven communication between background and user interface processes. If the systems are running on the same computer, CBFS IPC offers fast and simple transport that doesn't add networking overkill to your application.

Details

A common way to exchange data in modern systems is to use sockets. While being quite flexible, sockets are stream-oriented and provide only very basic service. You have to split the stream of data into packets yourself, and you have to deal with data compression, security, checking data integrity, timeouts, and other low-level tasks. One more problem with sockets is that it is not always reasonable to use such complicated thing as sockets for simple task of sending a couple of bytes to the process residing on the same computer.

CBFS IPC simplifies your job significantly by solving all those low-level tasks for you. It was designed to be small, fast, and effective and at the same time provide complete service. With CBFS IPC, you won't have to write and test multithreaded server code and you won't need to split the data stream into messages and dispatch these messages. You will work with your business logic and won't go into details of data transfer.

CBFS IPC belongs to the class of software called "Message-Oriented middleware" (MOM). As any message-oriented middleware, CBFS IPC is based on the concept of messages - blocks of data that have a fixed part with predefined fields and optionally have a data part. Using messages, you can send commands to other processes and receive replies, transfer the data across multiple processes, and do plenty of other useful things.

CBFS IPC was born as an attempt to emulate the Windows Messaging subsystem and support sending messages across the network. While utilizing the same concept of message queue that was used in Windows, CBFS IPC provides identification, on-the-fly compression, encryption, and integrity checking of the message being sent. With CBFS IPC, you don't transfer data, instead you send messages (which can contain generic data).

With CBFS IPC, you will be able to build heterogenous systems and networks ranging from Windows desktops to Unix servers to mobile devices. Implementations are available for Windows, .NET, Android, macOS, iPhone/iPad, Java™ (SE/EE, ME), Linux, FreeBSD, QNX, and Windows CE / PocketPC platforms.

CBFS IPC is not limited to TCP protocol. CBFS IPC utilizes a pluggable transports scheme, where you can add one or more transports to single Messenger object and send messages via any of those transports almost transparently. The transport is chosen based on the destination address of the recipient (the address includes the name of the transport to use). CBFS IPC includes TCP and UDP socket, HTTP, and MemoryMappedFile transports.

Most current middleware libraries are based on a client-server scheme, where the client initiates connection, sends commands to the server, and receives replies. Such a scheme is not suitable in cases where there are no servers and clients in the distributed system or when the server needs to send a command to the client. In such cases, the developer needs to create another client-server connection in opposite direction or change the conversation scheme.

Unlike those client-server solutions, each node in distributed system that uses CBFS IPC can act as both client and server. CBFS IPC can use single connection to transfer messages independently in both directions. This approach keeps classic client-server scheme available and also allows building peer-to-peer networks, parallel, and distributed systems.

Code packages (APIs) are independent licensing units. Each code package can be used with one or more platforms and development tools. Currently the following code packages are available:

  • .NET
  • C++
  • Delphi
  • Java
  • ActiveX
  • DLL

Windows

  • Windows XP, Vista, 7, 8, 8.1, 10
  • Windows Server 2008, 2008 R2, 2012, 2012 R2

Microsoft .NET Framework

  • 2.0, 3.0, 3.5, 4.0, 4.5
  • Xamarin.Andriod
  • Mono 2.0+

Mobile

  • iOS
  • Android
  • QNX 6.x

macOS

  • Mac OS X

Java

  • Java SE/EE 6+
  • Java Mobile (J2ME MIDP 2.0)

Linux/Unix

  • Linux (various versions)
  • *BSD

.NET API

  • Visual Studio 2008, 2010, 2012, 2013, 2015
  • Xamarin.Android

C++ API

  • Visual Studio 2008, 2010, 2012, 2013, 2015
  • Embarcadero RAD Studio 2010, XE, XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin
  • CodeGear RAD Studio 2007, 2009
  • C++ Builder 2007, 2009, 2010, XE, XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin
  • Xcode 4.2+
  • gcc

VCL API (no need for external DLLs)

  • Embarcadero RAD Studio 2010, XE, XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin
  • CodeGear RAD Studio 2007, 2009
  • Delphi 5, 6, 7, 2005, 2006, 2007, 2009, 2010, XE, XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin

Java API

  • Any Java development tool

DLL API

  • Any development tool for Windows XP / 2003 Server / Vista / 2008 Server / Windows 7 / 2008 R2 Server / Windows 8 / 2012 Server / Windows 8.1 / 2012 Server R2 / Windows 10 that supports use of DLLs

ActiveX API

  • Visual Studio 2005, 2008, 2010, 2012, 2013, 2015
  • Visual Basic 6
  • Any development tool for Windows XP / 2003 Server / Vista / 2008 Server / Windows 7 / 2008 R2 Server / Windows 8 / 2012 Server / Windows 8.1 / 2012 Server R2 / Windows 10 that supports use of DLLs

Download a Free Trial

Download a fully-functional trial complete with documentation, samples, and support.

All code packages (Windows Installer) v2017.0.0.0 | 09/11/2017 Download Now
C++ and Pascal code packages for Linux x64 v2017.0.0.0 | 09/11/2017 Download Now
C++ and Pascal code packages for Linux x86 v2017.0.0.0 | 09/11/2017 Download Now
Java and Android packages (Java installation) v2017.0.0.0 | 09/11/2017 Download Now

Request a Quote

Please tell us about your project and interests and we will respond as quickly as we can.

Request a Quote