OVERVIEW

VLINGO/PLATFORM: Fluent. Reactive. Delivered.

Domain-Driven Design (DDD) focuses on the use of fluent language to model solutions in complex digital business problem spaces. Most technology frameworks greatly detract from this goal. The VLINGO/PLATFORM toolset not only enables, but enhances the DDD experience.

As a charter member of the Reactive Foundation, we are leaders in Reactive software architecture and development. Whether with DDD or a different approach, you can count on our platform to help you deliver scalable and performant event-driven solutions.

A generous toolset of prebuilt powerful abstractions, designed for use in implementing Reactive DDD based full system solutions, is yours when adopting the VLINGO/PLATFORM. You gain an environment for rapid development, supporting fluent, highly scaleable, and concurrent models, with precision and type safe integration across subsystems. Capabilities include Reactive REST services over HTTP, domain object aggregates, key-value aggregates, event sourced aggregates, CQRS with projections, compute grid, actor/object caching, object spaces, cluster cross-node actor messaging, enterprise message exchanges, and long-running processes (aka Sagas).

Simplistic PowerActor Model Foundation

In 1973, Dr. Carl Hewitt and his colleagues formulated the Actor Model. In recent years, the inventor of object orientation, Alan Kay, has stated that the Actor Model retained more of what he thought were the important object ideas. So, when you think of the Actor Model, think of objects done right.

A Resource actor sending a command message to a Model Entity actor.

The VLINGO/ACTORS toolkit is an implementation of the Actor Model. The ideas behind the Actor Model are powerful, and the VLINGO/ACTORS toolkit elegantly implements the concepts behind it with simplicity. The VLINGO/ACTORS toolkit is type safe by design, and services use it by defining and implementing domain-specific interfaces as actors. This box shows how actors work and what they do.

How actors work and what they do

An actor receives messages in its mailbox, and processes one message at a time when a thread is available.

Fundamentally, actors are non-blocking and share none of their mutable state with the outside, not even with other actors.

Actors use available threads, and you can’t run more threads simultaneously than there are available cores, e.g. Runtime.getRuntime().availableProcessors()

The basic unit of computation is expressed through actors. Actors send and receive messages asynchronously.

As objects create other objects, actors can create other actors.

Each actor can designate the behavior it will exhibit for the next message it receives. With vlingo/actors this can be accomplished by actors implementing multiple type-safe domain-specific interfaces.

As objects are typically used, software developers have become accustomed, even addicted, to the blocking paradigm. In the blocking diagram a Client object invokes a method on a Server object. This is an in-process (in-VM) invocation, not a remote client and a remote server. The point is, when a method invocation occurs, the Client is blocked until the Server returns from the method invocation. This means that the Client can perform no additional operations while the Server is handling its request.

In contrast, the Actor Model works differently, as is shown in the message-driven diagram.

A Client object invoking a method on a Server object, which blocks the Client.

When the Sender actor wants another actor to provide a service, it sends that actor a message. The message is sent to the Receiver actor and handled asynchronously when a thread is available. The Sender is not blocked, but continues moving forward with its current activities, and when those complete, it returns from its own message handling. As a result the thread previously used by the Sender is now available for another actor. This achieves maximum efficiency across all actors in your service instance. The more cores that are available, the greater the overall throughput and the greater the efficiency.

The Actor Model is message-driven and processes messages asynchronously.

With VLINGO/ACTORS, type-safe messages are the fundamental building block. For those that depend on static typing, a strongly-typed Actor Model implementation is crucial to reassure developers that they are sending the correct and intended message to each actor. This is guaranteed by the compiler, and adds no overhead beyond a typeless implementation.

There is far too much complexity in the software industry. The overarching vision for the VLINGO/PLATFORM puts extreme emphasis on simplicity. In a few moments you can download the platform components through your build definition, with the whole platform fully configured for common use cases. You can be productive within minutes, rather than the typical untold number of weeks or months. Try it!

The VLINGO/ACTORS toolkit is the bedrock on which our other platform tools are implemented.

More...

To read more introductory explanations about our platform, see the following. Otherwise, jump to GETTING STARTED.

Topic

Description

Problems and Solutions

We are solving a set of big problems in the software industry.

Business Communication

The influence of business communication structures on software.

Reactive and Computing Health

The impact of a blocking paradigm vs non-blocking Reactive software.

No Comparison

Our first principles highlight our unique motivations and goals.

Platform Component

A quick reference to the components that comprise the VLINGO/PLATFORM.