Build the power of Wolfram into your technology stack
The Wolfram Technology Integration system provides a variety of ways to integrate Wolfram-powered computation into your technology stack - with convenient solutions that optimize various attributes such as local footprint, network independence, computation efficiency, communication overhead and installability.
Make Wolfram technology an internal part of systems you build, calling it from code through interprocess and intraprocess communication mechanisms such as APIs, function calls and scripts.
Use Wolfram technology to add power inside a system you build.
Use Wolfram technology to provide user interface elements that control and interact with systems you build - communicating through WSTP and other interprocess communication mechanisms.
Use Wolfram technology to provide or enhance the "face" of a system you build.
The Wolfram Technology Integration system supports both one-time calls and persistent sessions.
Why Integrate Wolfram Technology?
Some sample objectives:
Add Computational Power Through the Wolfram Engine
Call on the power of the Wolfram Engine inside a software product, device or cloud service.
Add Programmability Through the Wolfram Language
Use the Wolfram Language to add sophisticated programmability to any system or service.
Provide a Language-Level Interface to a Complex System
Use the Wolfram Language to access and control complex software or other systems.
Automatically Generate Rich Computational Reports
Use the Wolfram Language to generate rich visualizations, reports, dashboards, etc. from within a system.
Create Smart Form-Based Interfaces
Use the Wolfram Language to create form-based interfaces with natural language understanding.
Insert Interactive Elements Anywhere
Use Wolfram Cloud technology to add interactive elements to documents, pages, etc.
Enable Uniform Symbolic Handling of Code and Data
Use the Wolfram Language and Wolfram Data Framework (WDF) as a uniform way to represent, transport and compute with code and data inside a system.
Enable Broad Access & Deployment for a System
Leverage the Wolfram Universal Deployment System to enable access to a system across many platforms and deployment channels.
Provide Broad Services for Developers
Integrate the Wolfram Engine and Wolfram Language to raise the level of capability of developers on a new or existing platform.
Many ways to utilize the Wolfram system
Pick the Wolfram platform that's best for your integration project.
Call on a fully hosted Wolfram Engine in the Wolfram Cloud.
Wolfram Enterprise Private
Call on managed instances of the Wolfram Engine in an on-premise or hosted Wolfram Enterprise Private Cloud (EPC).
Wolfram Microcloud (coming soon)
Call on a Wolfram Engine using cloud protocols, but with the engine running locally on a computer.
Wolfram Application Server
Deploy powerful Wolfram Language applications at scale.
Wolfram Language Library
Link a Wolfram Language library into the code space of a program.
Use an embedded Wolfram Engine to power standalone notebook documents.
Use Wolfram SDKs to build programs that include the Wolfram Engine.
Run Wolfram Language scripts using a standalone Wolfram kernel.
WolframScript Command-Line Driver
Run a command-line program that calls the Wolfram Engine locally, through the cloud or using WSTPServer.
Use the WSTP protocol to call on managed instances of the Wolfram Engine running locally or on the network.
Set up a Wolfram Notebook interface to connect to a program.
Access & Communication Mechanisms
The Wolfram Integration system supports a range of styles of access and communication - each of which can be implemented in multiple ways appropriate for different development and deployment scenarios.
RESTful API Style
Call Wolfram Language code by giving a sequence of named arguments and getting back a single result.
Execute a web URL (cloud only).
Function Call Interface
Use automatically synthesized or custom-written code in any standard language (cloud or local).
Command-Line Program (wolframscript)
Execute a command-line program in the operating system shell (cloud, local or WSTPServer).
Provide a block of Wolfram Language code to run locally, in the cloud or using WSTPServer.
Run a WolframScript file (.wl, .wls, etc.) using side effects to generate output.
Command Interpreter (wolfram, wolframscript)
Run the Wolfram Engine with input from stdin and output on stdout.
Evaluate inputs in a notebook that is provided.
WSTP IPC Style
Use WSTP (Wolfram Symbolic Transfer Protocol) for flexible two-way communication.
Wolfram Language WSTP API
Communicate directly with a Wolfram Engine from within the Wolfram Language (local or remote).
External Language Bindings
Communicate directly with a Wolfram Engine from C, Java, .NET, etc. (typically local only).
Linked Library Style
Make the Wolfram Engine an integrated part of an executable program.
Direct DLL-Style Linking
Call the Wolfram Engine within a single executable process (single-process local only).
Connect a form-like interface to the Wolfram Engine.
Call the Wolfram Engine from an embeddable form on the web (cloud only).
Mobile or Native Apps
Call the Wolfram Engine through forms on mobile or native apps (effectively local only).
Interactive Session Style
Have a Wolfram Engine user interface.
Dynamic Interactive Element
Expose a single interactive element (such as a Manipulate) for users (local or cloud).
Allow a back-and-forth dialog with a Wolfram Engine in a document interface (local or cloud).
Have an ASCII-terminal-style back-and-forth dialog with a Wolfram Engine (local or WSTPServer).
Depending on the scenario, there are a variety of ways to distribute Wolfram functionality and software.
Do not distribute any actual Wolfram Engine software; just call the cloud (Wolfram Cloud, Wolfram Enterprise Private Cloud).
Distribute machine images that can be brought up as Wolfram Enterprise Private Clouds (Wolfram Enterprise Private Cloud).
Embeddable Virtual Machines
Distribute embeddable virtual machine images that can be installed to provide microcloud functionality (Wolfram Microcloud).
Installable Standalone Software
Distribute packaged software that can be installed by end users through an operating system (Wolfram Desktop, Wolfram Engine, Wolfram Player, ...).
Installable Server Software
Distribute packaged software to be installed by administrators on individual machines or subnets (WSTPServer, Wolfram Application Server).
Operating System Components
Distribute the Wolfram Engine as part of an operating system to provide shared capabilities for many programs (WSTPServer, Wolfram Application Server, Wolfram Engine, ...).
Shared Linkable Libraries
Use a shared library that is dynamically linked into a program and accessed through function calls (Wolfram Language libraries).
Software Development Frameworks
Use a software development framework that includes appropriate libraries to connect or include with programs (Wolfram SDKs).
There are ways to integrate Wolfram technology into whatever kind of infrastructure environment you want.
Use the Wolfram Cloud from any environment for fully hosted Wolfram services.
Wolfram Inside: Wolfram Enterprise Private Cloud, Wolfram Application Server, Wolfram Engine
Wolfram Outside: Wolfram Enterprise Private Cloud
Wolfram Inside: WSTPServer, Wolfram Application Server, Wolfram Engine, WolframScript Command-Line Driver
Wolfram Outside: WSTPServer, Wolfram Microcloud
Contact us for details on the Wolfram Embedded Computing System.
Wolfram Inside: WSTPServer, Wolfram Application Server, Wolfram Engine, Wolfram Language Library
Wolfram Outside: WSTPServer, Wolfram Desktop, Wolfram Player
Wolfram Inside: Wolfram SDKs
Wolfram Outside: Wolfram SDKs
Wolfram Engine Provisioning
There are a variety of ways Wolfram Engines can be configured for a project.
Use Wolfram Language libraries or Wolfram SDKs to link the Wolfram Engine directly into your program.
Use Wolfram Application Server or WSTPServer to connect to an instance of the Wolfram Engine when needed.
Use a Wolfram Enterprise Private Cloud or WSTPServer to have a managed pool of Wolfram Engines.
In many applications, you will want to initialize the Wolfram Engine with your particular code or data.
Initialize on Demand
Initialize whenever the engine is called.
Allows best sharing of Wolfram Engine resources.
Initialize at Startup
Initialize whenever your program is started.
Suitable for single-instance and linked library configurations.
Always maintain a dedicated pool of pre-initialized Wolfram Engines.
Suitable for WSTPServer and Wolfram Enterprise Private Cloud configurations.
Any Wolfram Engine needs to go to the cloud for certain services.
Get your own Wolfram Knowledge Server to keep all services within your infrastructure.