NServiceBus 7 for .NET Core is here

It's a pretty cool time to be a .NET developer. Don't believe it? Check out this excerpt from a popular children's book1:

Congratulations! Today is your day.
You're off to Great Places! You're off and away!

Maybe you like Linux or have a MacBook,
Or want to host code without breaking your checkbook.
The license for Windows can be a bit pricey.
Getting approval for more servers can be a bit dicey.

But now you have choices, it's a bit of a shocker.
You can even choose to deploy your apps using Docker!
With your skills in .NET no opportunity shall go by,
When you can even deploy on a Raspberry Pi.

And now NServiceBus is ready, we've got your back.
The ultimate cross-platform messaging stack!
You're off to Great Places! Today is your day!
There's more than Windows now, so…get on your way!

-Adapted from Oh, the Places You'll Go! by Dr. Seuss

In other words, NServiceBus 7 for .NET Core is here.

Cross-platform NServiceBus

With NServiceBus 7, you get all the benefits of NServiceBus with the cross-platform capabilities of .NET Core.

You can develop your code on a Mac and deploy on your favorite flavor of Linux. You can reap the DevOps benefits of hosting your endpoints in Docker containers and use container orchestration technologies like Kubernetes on their own or through managed services like Azure Kubernetes Service or Amazon Elastic Container Service for Kubernetes.

You can even run NServiceBus on a Raspberry Pi.

By building your systems on top of NServiceBus and .NET Core, you benefit from the continous performance improvements being made to the framework. We see stories all the time about performance improvements being contributed to .NET Core through the power of open source. Low-level code in the .NET Framework that was previously considered good enough is now being optimized both by Microsoft and community contributions. The release of .NET Core 2.1 with its significant improvements to the HTTP stack is a great example of this. There's nothing better than being able to write code that gets faster over time.

But if you want to continue running on the regular .NET Framework, that's fine too. You don't have to switch. NServiceBus runs well on both frameworks, and we have the tests to prove it.

NServiceBus 7 is designed to be a smooth upgrade from NServiceBus 6, having just the changes necessary to support .NET Core. The upgrade will probably be a lot easier than you think.

Check out our NServiceBus 6 to 7 upgrade guide for more details.

Caveats

There are just a couple things to keep in mind.

We don't yet have support for everything on .NET Core, but we see no reason to hold back the release of NServiceBus 7 on anything that's left. We've documented the packages that don't yet support .NET Core and will work over time to get them migrated where possible.

Our broad suite of tests also detected poor performance with Azure Storage Queues when sending messages when using .NET Core 2.0. We traced this to inefficiencies in the HTTP stack, which we verified Microsoft has fixed in .NET Core 2.1. We recommend all customers use .NET Core 2.1 in their systems now that it's generally available.

But really, it's just those two things. That's it.

So are we done?

Heck no!

NServiceBus 7 is just one piece of our larger vision to support all platforms, both on-premises and across the clouds.

And even though other pieces of our stack are still Windows-only right now, we're simplifying their installation and deployment so that everything goes as smoothly as possible for you until we finish migrating them to .NET Core as well.

How do I get it?

As always, you get NServiceBus as a NuGet package, but as of today, you won't need to check the "Include Prerelease" box to get the latest and greatest.

Check our NServiceBus 7 page for more information, links to samples, frequently asked questions, and more.

Footnotes

1 Not a real book.