Coder Social home page Coder Social logo

crossbar's Introduction

Welcome to Crossbar.io, the open-source unified application router.

Join the mailing list, follow us on Twitter and Quick Start with Crossbar.io!


This README:

  1. What is Crossbar.io?
  2. Benefits
  3. Things you can do

Related articles:

More Resources:

What is Crossbar.io?

Crossbar.io is an open-source server software that allows developers to create distributed systems, composed of application components which are loosely coupled, communicate in (soft) real-time and can be implemented in different languages:

Crossbar.io clients overview - languages/environments: javascript/browser, javascript/node.js, Python, C++, under development: Java/Android, PL/SQL - PostgreSQL

Crossbar.io features cross-language integration: you can have application components implemented in different languages and run under different run-times. E.g. a frontend component might be implemented in JavaScript/HTML5 and run in the browser, while a backend component might be implemented in Python and run under PyPy.

Crossbar.io also features cross-layer integration: application components can be freely deployed across layers, and transparently talk to each other no matter in what layer the components reside. E.g. you can call a remote procedure residing in a backend component from a frontend component running in the browser, but you can also call into code running inside the browser from a backend component!

Read more::

Unified Routing

At its core, Crossbar.io provides a flexible and scalable communication infrastructure for application components to talk to each other. This communication infrastructure is based on Unified Routing and WAMP:

Unified Routing provides applications components with two communication patterns to use: remote procedure calls and publish & subscribe. In both patterns, the application components involved are fully decoupled by Crossbar.io which dynamically routes calls and events between them. WAMP is an open, standardized protocol for Unified Routing that runs natively on WebSocket.

Read more:

Component Hosting

Crossbar.io also is a component host able to dynamically load, run and monitor application components written in different languages, and running under their native run-time.

Want to have component A written in JavaScript and running on NodeJS, component B written in Python and running on PyPy, and component C written and running on C++ natively? No problem - Crossbar.io has you covered.

To get you started quickly, the command line tool of Crossbar.io is able to generate complete, ready-to-run application templates for different languages.

Multi-process Architecture

Crossbar.io has a multi-process architecture where a single node controller process spawns and monitors multiple worker processes. Worker process types include router, application component host and arbitrary guest processes. The multi-process architecture enables scaling up on multi-core systems and supports secure and robust operation.

Read more:

Full-stack Services

Crossbar.io also includes a whole set of full-stack services, such as authentication and authorization, serving static Web files, HTTP long-poll fallback, HTTP push bridge, CGI scripts and hosting WSGI applications. This will often make Crossbar.io all the infrastructure you need besides your database.

Benefits

We think that application developers and system operators should be freed from the burden and compexity of old architectures.

Crossbar.io is made for DevOps: it allows developers to easily compose a system from self-contained, independent services or application components and operators to distribute application components freely across system resources like nodes without breaking application communication.

We believe the above approach is scalable in terms of development and deployment, and in particular allows you to create and operate more advanced systems with less complexity and in less time.

Things you can do

Here are a couple of demos and applications built with Crossbar.io

which can give you a hands-on impression of what you can do.

We can also take an example:

Imagine you create a "Vote Game" web applications, where visitors can vote for one of three kinds of ice cream and the total number of votes for the different ice creams is displayed.

Now, here is the catch: we want ot have the numbers shown to be correct - always, and instantly. Whenever someone votes on a ice cream, the displayed numbers of all visitors should update immediately.

In other words: we want a real-time enabled user interface.

From a developer point of view, what seems natural is having the frontend issue a remote procedure call to get the total number of votes initially. Then subscribe to a topic to get updates on the total number of votes. And finally issue a remote procedure call for actually voting. The backend should note each vote, and publish updated numbers for total votes. These patterns, remote procedure calls and publish & subscribe are exactly those provided by WAMP.

To summarize, above "Vote Game" app would be a good fit for Crossbar.io and is easy to implement.


Copyright (c) 2014 Tavendo GmbH. Licensed under the Creative Commons CC-BY-SA license. "WAMP", "Crossbar.io" and "Tavendo" are trademarks of Tavendo GmbH.

crossbar's People

Contributors

davidwdan avatar eth3lbert avatar si618 avatar wilbertom avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.