Open-source frameworks these days, they just grow up so darn fast…
Today marks a major milestone on a long road—466 days since the first commit, to be exact—in bringing the Reactive Model to the CLR.
Akka.NET has officially left -beta
and is production-ready with stable C# and F# APIs, on both Mono and Windows!
Akka.NET (repo) is a community-driven port of Typesafe’s Akka project to .NET. Akka is a framework for building powerful concurrent & distributed applications that scale up/out or down on any cloud.
The framework itself handles all thread management, low-level networking, and the utility code and “plumbing” for you. You just focus on the logic and workflow of your application.
Akka.NET has full C# and F# support, on Windows and Mono.
The Reactive Model Comes to .NET
In early 2014, Roger and Aaron teamed up to bring .NET developers the same power and flexibility that Scala/Java developers enjoy on the JVM. They were inspired by Typesafe’s Akka—the most powerful and important distributed computing framework in the world, trusted by Amazon, Twitter, Klout, Walmart, LinkedIn, Apache Spark and many more for doing massively parallel and stateful computing.
What Akka.NET v1.0 represents is the next step in bringing the principles of the Reactive Manifesto to the Common Language Runtime (CLR). The Manifesto is comprised of the following parts:
Reactive Systems are:
- Responsive: The system responds in a timely manner if at all possible.
- Resilient: The system stays responsive in the face of failure. This applies not only to highly-available, mission critical systems — any system that is not resilient will be unresponsive after a failure.
- Elastic: The system stays responsive under varying workload. Reactive Systems can react to changes in the input rate by increasing or decreasing the resources allocated to service these inputs.
- Message Driven: Reactive Systems rely on asynchronous message-passing to establish a boundary between components that ensures loose coupling, isolation, location transparency, and provides the means to delegate errors as messages.
You can read the full Reactive Manifesto here.
Any technology that implements the tenets of the Reactive Manifesto is considered to be a “Reactive System.” We’ll refer to this style of programming as the “Reactive Programming Model” or “Reactive Model” going forward.
Today’s Software Demands Can’t Be Met by Yesterday’s Architectures
Reactive systems are crucial to the future of .NET, because in today’s world data is measured in petabytes. Customers scoff at any app below five stars and demand millisecond response times. And radical decreases in cloud computing and data storage costs have created opportunities for new types of applications that were never possible before.
In order to deal with the new scale, responsiveness, and resiliency requirements of our software, we have to change the way we architect applications in .NET.
ASP.NET and SQL Server can’t be the only game in town anymore if .NET is to exist in a world where all of the above are true.
.NET developers must expand their tool set to include new architectures and styles of programming in order to participate in building the next generation of software.
And that’s why Akka.NET is important. It’s one of the largest and most important tools for bringing Reactive Programming to .NET.
With Akka.NET, you’ll discover new ways of building highly concurrent and distributed applications that can automatically scale out on Windows Azure (or any other cloud platform). You’ll learn how to build microservices that can automatically discover each other via Akka.Cluster. And you’ll open yourself to a whole new world of programming patterns and architectures that never occurred to you until you discovered what the Actor Model makes possible.
And you can get started right now by signing up for Akka.NET Bootcamp.
What Does the Stable Release Include?
Akka.NET v1.0 hit code complete last week, and the contributors have been hard at work since then updating documentation, doing last minute cleanup, and upgrading the docs.
Here’s what is included in the stable release of Akka.NET v1.0, for both Mono and Windows, and in both C# and F# APIs..
We will now be supporting these APIs for long-term, production use:
- Akka.NET Core
- Akka.FSharp
- Akka.Remote
- Akka.TestKit
- Akka.DI (dependency injection): currently AutoFac, Ninject, and Castle Windsor
- Akka.Loggers (logging): currently NLog, Serilog, and slf4net
Read the full v1.0 release notes here.
The v1.0.0 NuGet package is available here.
Docs & Training Materials Updated
Good news! The global contributor team has already 1.0-ified the docs, as well as the Akka.NET Code Samples library.
What’s Next After 1.0?
Akka.Cluster (late beta) and Akka.Persistence (early beta) are both high on the priority list. These modules are both working great and are already being used in production by many users, and the project will soon commit to production APIs for these modules.
If you liked this post, you can share it with your followers or follow us on Twitter!
- Read more about:
- Akka.NET
- Case Studies
- Videos
Observe and Monitor Your Akka.NET Applications with Phobos
Did you know that Phobos can automatically instrument your Akka.NET applications with OpenTelemetry?
Click here to learn more.