Learn About Middleware: Take the Middleware Tour

Start at the beginning, Learn about Inter-Process Communication (IPC) and Communications Middleware

  • What is Communications Middleware?

    Communications Middleware is computer software that enables two otherwise separate software components, processes, and/or applications to exchange information, either within one device, or between multiple devices. Often, this is referred to as "Inter-Process Communications" or IPC. Communications middleware is an IPC mechanism.

    Communications Middleware is a specific kind of Middleware: the layer that lies between the operating system (Linux, MAC, Unix, Windows, etc.) and system applications (accounting software, media players, office productivity suites, etc.) that allows for communications. Communications Middleware is built into or added the applications that need to communicate. Sometimes Communications Middleware is referred to as “plumbing” because it is the piece that connects two (or more) applications and allows data to pass through.

    The purpose of Communications Middleware is to simplify the designing, programming, and managing of applications by streamlining the way these applications receive and process data.

    Communications Middleware is used in a variety of software systems, from mobile devices (PDAs, Android phones, iPads, etc.) to enterprise and database systems. The equipment in these systems varies in screen and visual display capabilities, bandwidth capacities, and processing power. Communications Middleware can be cross-platform, that is, it facilitates communications between these differing devices. Communications Middleware can be cross-language, that is, it can understand and process multiple different operating languages (C, C++, Java, PHP, Ruby on Rails, etc.). We can use a cell phone and a PC here as an example. They both function in vastly different capacities, but with Communications Middleware, are able to “talk” to and “work with” each other. This holds true for devices of similar capacities with different operating systems as well (say a Mac talking to a PC, or your accounting software communicating with your word processing software).

    Companies and organizations are increasingly integrating previously independent applications with new developments and technologies; building enterprise-wide information systems. This integration process surrounds legacy applications; old or out of date software. Many of these legacy applications can only be used through their specific interface, and modifications prove costly or otherwise prohibitive. This can occur when software needs to be upgraded, or when one company acquires or takes over another company and their different systems now need to work together. Communications Middleware can link information from departmental databases such as payroll, sales, and accounting, or databases housed in multiple geographic locations into one centralized system, even if these databases store and process information differently.

  • What is DDS?

    A wide variety of operating systems are being used in today’s software development efforts: Windows, Android, Linux, and QNX, just to name a few. These operating systems communicate data differently, just as different hardware types (computers, cell phones, printers, etc.) store and retrieve information in a variety of ways. This translates into an expensive problem when your project needs to exchange information between two diverse systems, costing you and your business precious time, money, and resources.

    The solution to this problem is DDS.

    Data Distribution Service (DDS) is a type of Communications Middleware, or Inter-Process Communication (IPC) mechanism, whose concept was standardized and is currently managed by the Object Management Group (OMG) . DDS is a cross-langugae, cross-operating system, cross-platform middleware (or IPC) solution. It simplifies communications processes among different system types, making distributed development easier, faster, and more reliable.

    How does DDS work?

    DDS is a software layer lying in-between the operating system and an application.

    DDS is in charge of transferring information: Like all IPC mechanisms, information is transferred between software programs. Information is sent from publishers (producers and senders of messages) to subscribers (consumers and receivers of messages). Subscribers and publishers employing DDS can use different platforms or operating systems and still communicate with each other. Exchanges can take place through tens of thousands of devices at the same time, each one of which can be publishers, subscribers, or both simultaneously.

    Systems that use DDS to communicate can do so independently of each other: They do not rely on each other’s systems to send and process information. A publisher can still publish information even if there is no subscriber seeking the information. A subscriber can receive information from other publishers if the original publisher it was getting information from fails.

    DDS automatically knows how to send and receive messages with other DDS users: By design DDS is able to conclude which users should receive messages, where these users are located, and what to do if the receiver is unavailable. This simplifies data distribution, lessens the code required to perform message delivery (and less code means more efficiency), and thus saves time.

    Each implementation of DDS can perform the same minimum set of functions in the same way with the same results. This is referred to as an “open standard system”: system components can be replaced and/or take over for each other with minimal or no changes to the larger systems in which they operate. This saves costs as it prohibits vendor lock-in.

    DDS works in “real time”: With very low overhead and efficient processing, messages are sent with minimal latencies (approximately 70 microseconds). It has a flexible architecture that is also scalable: it can adapt to processing both large and small amounts of data.

  • What are the Benefits of DDS?

    DDS Reduces Risk:

    DDS ensures consistency: Users of DDS can make changes to one system without the other system being adversely affected. Time is saved as less design time is allocated to determining how to get these systems to “talk” to each other.

    DDS is interoperable: Every implementation of DDS can “talk” with every other type of DDS. The wire protocol is standardized; ensuring programs using different DDS products can discover each other and exchange data and can communicate. Referred to as interoperability: this is the ability of two or more systems to exchange information. DDS can also interoperate across different languages, operating systems, and hardware platforms.

    DDS automatically switches between publishers if the primary publisher fails. For example, once programmed, a publisher knows to “re-try” in 10 milliseconds, 10 minutes, every hour, or to drop the message all together, etc. if it is unable to reach a subscriber, and vice versa. In addition, subscribers always get the information that most closely matches their needs. If the information they seek is unavailable, they get the next best information. The system will automatically switch back to the information that most closely matches their needs when it becomes available.

    DDS has no single point of failure: Systems that use DDS to communicate can do so independent of a server or service, and independently of each other. They do not rely on each other’s systems to send and process information. A publisher can still publish information even if there is no subscriber seeking the information, or if a subscriber becomes “lost” for any reason. A subscriber can search for other publishers if the publisher it is getting information from fails or is lost.

    DDS filters data for unique users: Each user only receives the information they need (or are intended) to receive. Consider online banking. The information is available to anyone who can access the web, as long as they have the correct username and password.

    DDS can be used wirelessly to communicate information: For example: handling secure transactions via Smartphones and financial institutions, or scanning and tracking systems for package delivery systems.

    DDS is reliable and always available: interactions with other services or application's are independent from network services, meaning they are always available for users (the server can’t be “down” because of too many users, etc.) If one path fails, there are other paths to send and receive the information, so the information is not lost. The publisher and subscriber merely try again.

    DDs has the ability to tailor communication behavior: Quality of Service (QoS) policies allow the user to set reliability requirements, length of time data is stored for future use, how data is presented to subscribers, and if there are redundancy or failover requirements (more than one path to communicate information).

    DDS Reduces Cost:

    DDS cuts development lifecycle cost: When disparate systems need to be integrated, instead of building a new system from the beginning DDS can be deployed to facilitate communications and the project can continue. This saves both time and labor cost.

    DDS shortens deployment timeline: This is done by “hiding” irrelevant lower level programming details not necessary to exchange information.

    Administration and maintenance expenses are reduced with DDS: Dynamic (Automatic) discovery of new applications simplifies administration and maintenance. It is easy to replace a system component because the other components don’t have to change; the new component is simply accepted. It is easy to remove a component because other components will continue to exchange information when the removed component is gone. It is easy to add a device: new publishers and subscribers can be added with no change to existing components.

    Key Points:
    • DDS simplifies transferring information from one source to another, reducing risk and cost.
    • DDS streamlines communications processes among different system types, making program development easier, faster, and more reliable.
    • Subscribers and publishers employing DDS can use different platforms or operating systems and still communicate with each other.
    • Exchanges can take place through countless devices at the same time, each one of which can be publishers, subscribers, or both simultaneously.
    • DDS saves your business precious time, money, and resources through streamlining the communications process.

  • Why is CoreDX DDS the best Communications Middleware for my Needs?

    There are a number of factors that contribute to the complexity of a software system, all of which increase schedule budget and risk. (Any of these can be applied to the x-axis of the above graph.) Examples of these factors include: size of the system, the number of different hardware architectures and/or Operating Systems involved, the number of nodes that must communicate together, the distance over which they must communicate, and the length of time a system must be maintained. Using a communications middleware reduces system complexity, making this line of increasing complexity a linear one. CoreDX DDS further reduces this complexity with advanced features.

    CoreDX DDS is the leading small footprint implementation of Data Distribution
    Standard (DDS):
    With a small footprint and full Quality of Service coverage, CoreDX DDS is designed specifically to meet the performance and complexity requirements of real-time, embedded, time-critical, and mission-critical applications, while still being small in size and conservative in memory usage. The full feature set of CoreDX DDS is easy to use with Size, Weight, and Power (SWaP) constrained applications, and makes it a great choice for everyone else.

    Small Source Code Baseline: CoreDX DDS is well designed and compact with a low line of code count. Code bloat results in in-efficient code, code that is more likely to contain errors, and code that is harder to extend, maintain, and port to additional platforms. Each line of code is associated with a cost – something that safety critical programs readily recognize, but it is important for everyone.
    Learn More >

    CoreDX DDS is well designed and compact with a low line of code count: Low line of code count results in small library sizes. The complete C library is less than 500KB!
    Learn More >

    Small Run Time Requirements: CoreDX DDS can be used in a wide variety of embedded applications with minimal memory and CPU resources, reducing the amount of static memory (or FLASH) required to store your application.
    Learn More >

    CoreDX DDS is easy to use: CoreDX DDS has a clean, easy to use Application Programming Interface (API), uncluttered by any unnecessary or confusing configuration parameters. CoreDX DDS features completely native source code with no 3rd party products or packages. CoreDX DDS was written to the DDS standards, which translates into clean source code, with low Software Line of Code (SLoC) counts.
    Learn More >

    CoreDX DDS offers High Performance: CoreDX DDS provides exceptionally low latency and sustained high throughput numbers across all supported hardware architectures.

    CoreDX DDS is highly scalable: CoreDX DDS has the ability to communicate data to thousands of subscribers without requiring high powered machines or typical desktop memory resources. This allows the network to scale to large numbers of DDS entities while conserving run-time memory resources.
    Learn More >

    CoreDX DDS supports advanced reliable communications technology: CoreDX DDS can easily be employed reliably in wireless and other unreliable network environments. CoreDX DDS has lightweight, reliable communications protocols that have higher efficiency and scalability than TCP.
    Learn More >

    CoreDX DDS has proven vendor interoperability: CoreDX DDS can exchange data and communicate with every other implementation of DDS.
    Learn More >

    CoreDX DDS does not have a single point of failure: CoreDX DDS does not require any operating system services or daemons. This eases installation, deployment and maintenance, and eliminates the concern that if one process fails, so would all DDS communications.

    CoreDX DDS has advanced support for single and multi-core architecture: Applications running on multi-core hardware can take advantage of all cores by simply using CoreDX DDS for communications. CoreDX DDS can also be used in single threaded mode to improve performance on smaller, single-core hardware.

    Dynamic Types: CoreDX DDS Dynamic Types allows the run time creation and determination of DDS topics and Data Types. This technology eases integration challenges, enables flexible bridging between disparate systems, and reduces static memory usage.
    Learn More >

    CoreDX DDS supports multiple development languages and environments:
    • Languages: C, C++, C#, and Java.
    • Operating Systems: Linux, Windows, Solaris, QNX, VxWorks, NexusWare, LynxOS, Android.
    • Hardware Architectures: x86 (32 & 64 bit), UltraSPARC, ARMv5, ARVMv7, PPC, MIPS, Microblaze, FPGAs.
    • Transports: IP, VME, cPCI, Serial, and Xbee.
    • Customizations for additional platforms and transports are possible, and usually quick and easy to achieve. Contact>Twin Oaks Computing for information.

    Key Points:
    • CoreDX DDS is the leading small footprint implementation of Data Distribution Standard (DDS)
    • CoreDX DDS has a Small Source Code Baseline
    • CoreDX DDS is well designed and compact with a low line of code count
    • CoreDX DDS has Small Run Time Requirements
    • CoreDX DDS is easy to use
    • CoreDX DDS offers High Performance
    • CoreDX DDS is highly scalable
    • CoreDX DDS supports advanced reliable communications technology
    • CoreDX DDS has proven vendor interoperability
    • CoreDX DDS does not have a single point of failure
    • CoreDX DDS has advanced support for single and multi-core architecture
    • CoreDX DDS has Dynamic Types
    • CoreDX DDS supports multiple development languages and environments