Woohoo, .NET Core 3.0 is out!
And what better way to celebrate, than to experiment with it?
Let the Fun Begin
This site now has a B-side, at b.zpqrtbnk.net. It runs on the same Windows server (just another IIS site) and the same database instance. It is, so far, a typical load-balanced scenario. It is powered by Umbraco... on AspNet Core 3.0, thanks to Beyumbe.
Beyumbe is an experimental / lab software layer that provides most of the .NET Core plumbing for Umbraco: bootstrapping the application, hosting, dependency injection, filesystems, logging, background-tasking, routing, etc.
Umbraco sits on top of this layer, pretty much unchanged, and provides the content cache, its pipeline and services, etc—everything that is required to publish content. It does run its distributed cache, for instance.
One of the benefits of running a pure .NET Core site, apart from the excitement, is that it can be turned into a Docker container. This site now also has a C-side (can you picture this?) at c.zpqrtbnk.net. It runs as a Linux Docker container on Amazon AWS Fargate service. It is also part of the load-balancing scenario, and updates with the other sides.
You might notice that this C-side does not render images. Fargate in a compute engine, which simply executes containers. It does not yet support mounting filesystems into containers, and this prevents us from sharing a common media directory. The feature is currently "in progress" at Amazon, yet with no ETA.
Azure does seem to support mounting Azure Files shares into Azure Containers, so it may be easier on Azure. Unfortunately, I don't really have time to experiment on both platforms at the moment.
Beyumbe needs some love and polish to be able to support Umbraco in a robust way, as the whole thing was put together in a very short time. But it is slowly getting there.
As for Umbraco itself, most of the
Umbraco.Core project is ported, but work remain to deal with configuration, identity & security, and the runtime / maindom.
Umbraco.Web project is an entirely different beast. Only the very basic minimum, required to render content, has been ported. Everything else, from trees to controllers, WebApi to healthchecks, you name it, needs to be ported.
Umbraco on .NET Core? Not fully there yet. But a nice project.