Microsoft Orleans 3.0 now available for distributed .NET applications
Posted: (EET/GMT+2)
Microsoft has announced the availability of Orleans 3.0, bringing a number of improvements for building distributed .NET applications.
If you have not looked at Orleans before, it is a framework based on the virtual actor (VA) model.Instead of manually managing distributed services and communication, Orleans handles activation, messaging, and lifecycle management for application "grains".
According to the Orleans team, several major improvements were included in this release:
- distributed ACID transaction support
- a new scheduler with measurable performance improvements
- a Roslyn-based code generator
- rewritten cluster membership handling
- co-hosting support.
One particularly interesting change is the new scheduler, which reportedly improved performance by more than 30% in some scenarios. That is substantial, if true.
The release also continues Orleans' alignment with modern .NET infrastructure patterns. Several framework features were developed alongside the broader .NET ecosystem, including Generic Host integration and options-based configuration.
A simple grain interface still looks fairly straightforward:
public interface IHelloGrain : IGrainWithStringKey
{
Task<string> SayHello(string name);
}
And usage from a client:
IHelloGrain grain = client.GetGrain<IHelloGrain>("user-1");
string message = await grain.SayHello("Me");
The framework handles locating and activating the grain instance without the caller needing to know where it is running.
Another notable addition in Orleans 3.0 is improved networking support, including TLS support for cluster communication. This has been a common requirement for production deployments.
Tip: Orleans is usually most interesting when application state and concurrency become difficult to manage manually. For smaller ASP.NET Core applications, the additional infrastructure may not be worth the complexity.
For larger distributed systems, however, the actor model can simplify patterns that would otherwise require significant custom coordination logic.
Happy distributing!