Architectural Overview

This tutorial provides a general overview of how a Finsemble smart desktop is composed.

As a starting point, consider four Finsemble windows on a monitor: a stock-chart and three chat windows. For this example, these four windows make up a smart desktop.

Finsemble up and running

A corresponding representation of these windows is shown below: a set of HTML5 windows connected through underlying desktop services.

High level Finsemble architecture

In simple terms, Finsemble is set of web assets: HTML, JavaScript, CSS, and JSON files (i.e., Finsemble assets). Finsemble does not interact directly with the user's desktop except in ways that you specify.

A basic analogy is that Finsemble is a "site." However, Finsemble is not a single page app; it’s a collection of smaller web pages and native apps from multiple sources, knit together by a framework of supporting services. By connecting and coordinating with Finsemble desktop services, the windows form a Finsemble application. Each web page represents a component or service: chart component, toolbar, desktop service, config files, Finsemble API (FSBL.js), etc. These are all served from an HTTP server—just like a website.


The Finsemble Library and desktop services

A desktop service in Finsemble is an independently-threaded JavaScript module providing functionality throughout a Finsemble smart desktop. Desktop services provide capabilities to Finsemble windows. Similar to cloud microservices, these desktop services don't have a UI. A desktop service can be interacted with using a corresponding client API.

Each window launched by Finsemble is a Chromium window whose JavaScript accesses the underlying Finsemble Library. The Finsemble Library (FSBL.js) is a set of client APIs connecting to the desktop services. The FSBL object is available to components on the global namespace, providing access to Finsemble's features.

Finsemble Workspaces ships with a set of desktop services that manage core features such as workspaces, storage, or docking. Firms licensing any of the advanced modules (Flow, Connect, or Native) can also add their own desktop services to encapsulate their own business logic.


Electron: A secure container

As previously stated, Finsemble's web assets are vaguely analogous to a "site." The thing that’s different in the Finsemble paradigm is that Finsemble displays multiple pages simultaneously, and puts them directly on the desktop as an .EXE. To accomplish this, we use technology we call a container as a "browser." The container Finsemble uses is Electron.

For security, we isolate Finsemble's assets from the Electron API.


Security overview

Finsemble does not communicate back with ChartIQ in any way, nor does ChartIQ have any access to communicate with applications built with Finsemble. Finsemble runs solely within the container on each user’s PC, with no server- or cloud-based infrastructure provided by ChartIQ.

Finsemble does not collect or report any information on usage, user behavior, preferences, or related matters back to ChartIQ or any other party. Finsemble provides your firm’s developers with the ability to connect to their own databases (to store workspaces, preferences, and other session- and component-related information) through the use of Storage Adapters.


Architectural breakdown

Below is a complete architectural breakdown of a Finsemble application: a set of cooperating Finsemble components and desktop services. All components access the desktop services through the client APIs contained in the Finsemble Library.

The most common scenario for developers is to build new components on top of the core module. Developers can connect their applications, our prebuilt components, and third-party applications to the Finsemble core to form a single application. For advanced users, Finsemble also supports adding new desktop services and corresponding client APIs. The aim is full extensibility through new components, services, and client APIs.

As mentioned earlier, the Finsemble Library is a set of client APIs connecting to one or more desktop services. For example, the Launcher Client connects to the Launcher Service. Likewise, the Router Client connects to the Router Service. The Router Service (via the Router Client) acts as an inter-window event hub, providing communication between all components and desktop services.

The core of Finsemble is packaged as a NPM module to simplify updates.

Here's a summary of key ideas about the Finsemble architecture reflected in this diagram.

  • Components are "pluggable" in the sense they can be mixed and matched to form a smart desktop. You can use in-house, third-party, or custom application components.

  • A special class of components, called UI components, are provided as samples to provide common UI functionality to end users. An example is the toolbar component that end users can use to launch other components. These are built from React UI controls. The UI components are distinct in their purpose; however, each is built like every other Finsemble component: by using the Finsemble Library's client APIs. The toolbar is really just a long, thin HTML window, styled to look like a native toolbar.

  • Similar to components, desktop services are "pluggable." Desktop services are less likely to change (or be interchanged) than components since they provide a basic building block functionality. Nevertheless, developers can create their own desktop services with corresponding client APIs, essentially extending the Finsemble Library. Third-party desktop services built for Finsemble can also be used as they become available.

  • Each individual component and desktop service is independently threaded in its own Chromium window that sits on top of a secure operating layer.


check   A Finsemble application is comprised of a set of cooperating Finsemble components and desktop services. Finsemble allows for full extensibility though pluggable components, services, and client APIs.
 

Further reading

Finsemble is a config-driven platform. For more about the basic set up and configuration of Finsemble, proceed onward to Configuration.

The Distributed Store is an essential part of Finsemble's loose coupling. For more information, read the Distributed Store documentation.

The Router is a central part of Finsemble's "skeleton." To learn more about the Finsemble Router, check out the Router documentation.

For a list of the terms used in Finsemble, you can read the Glossary of Key Terms.