Skip to content

Commit 4d88dde

Browse files
Final tweaks
1 parent 8a334c8 commit 4d88dde

File tree

4 files changed

+38
-19
lines changed

4 files changed

+38
-19
lines changed

content/learning-paths/servers-and-cloud-computing/dotnet-migration/1-create-orchardcore-app.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ weight: 2
66
layout: learningpathall
77
---
88

9-
# Getting started with the OrchardCore app
9+
## Getting started with the OrchardCore app
1010

1111
In this section, you'll build and run a basic [OrchardCore](https://github.com/OrchardCMS/OrchardCore) CMS application, which is a popular Linux-based .NET workload. OrchardCore is a modular and multi-tenant application framework built with ASP.NET Core, that's commonly used to create content-driven websites.
1212

13-
## Set up your development environment
13+
### Set up your development environment
1414

1515
First, launch an Azure Cobalt 100 instance (Arm-based VM) running Ubuntu 24.04, and open port 8080 to the internet.
1616

@@ -43,7 +43,7 @@ Install gcc for compiling your application:
4343
sudo apt install gcc g++ build-essential -y
4444
```
4545

46-
## Install the OrchardCore templates
46+
### Install the OrchardCore templates
4747

4848
Install the OrchardCore templates:
4949

@@ -66,7 +66,7 @@ Orchard Core Mvc Web App ocmvc [C#] Web/Orchard Core/Mvc
6666
Orchard Core Theme octheme [C#] Web/Orchard Core/CMS
6767
```
6868

69-
## Create a new OrchardCore application
69+
### Create a new OrchardCore application
7070

7171
First, create a new project using the `dotnet` CLI to create a new OrchardCore application:
7272

@@ -82,7 +82,7 @@ Now navigate to the project directory:
8282
cd MyOrchardCoreApp
8383
```
8484

85-
## Run the OrchardCore application
85+
### Run the OrchardCore application
8686

8787
Build the application:
8888

@@ -115,12 +115,12 @@ Access the application:
115115

116116
* In your browser, navigate to `http://[instance IP]:8080` to see your OrchardCore application in action.
117117

118-
* Replace `[instance IP]` with your VM’s public IP address. You can find it in the Azure portal under the Networking tab of your virtual machine.
118+
* Replace `[instance IP]` with your VM’s public IP address. You can find it in the Azure portal under the **Networking** tab of your virtual machine.
119119

120120
Configure the application:
121121

122-
On the setup screen, choose the Blog recipe and complete the admin credentials and database configuration to finish setup.
122+
* On the setup screen, choose the Blog recipe and complete the admin credentials and database configuration to finish setup.
123123

124-
## Summary and next steps
124+
### Summary and next steps
125125

126126
You have successfully created and run a basic OrchardCore CMS application. In the next sections, you will learn how to integrate a C shared library into your .NET application and explore performance optimizations for Arm architecture.

content/learning-paths/servers-and-cloud-computing/dotnet-migration/2-add-shared-c-library.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,15 @@ layout: learningpathall
77
---
88
## Create a C shared library
99

10-
In this section, you’ll integrate a simple C shared library into your .NET OrchardCore application. You’ll create the library, compile it, and call it from your .NET code. This allows you to reuse existing C code and improve performance by accessing native functionality.
10+
In this section, you’ll integrate a simple C shared library into your .NET OrchardCore application, by doing the following:
1111

12-
First, create a simple C shared library that defines a function you’ll call from your .NET application.
12+
- Write a C function
13+
- Compile it into a shared object (`.so`)
14+
- Call it from C# using `DllImport`
1315

14-
Create a new file named `mylib.c` with the following content:
16+
This allows you to reuse existing C code and improve performance by accessing native functionality.
17+
18+
Create a file named `mylib.c` with the following:
1519

1620
```c
1721
#include <stdio.h>

content/learning-paths/servers-and-cloud-computing/dotnet-migration/4-dotnet-versions.md

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,26 @@ weight: 5
66
layout: learningpathall
77
---
88

9-
## Evaluate .NET versions for performance on Arm
9+
## Version-by-version feature and throughput improvements
1010

1111
Understanding which versions perform best and the features they offer can help you make informed decisions when developing applications for Arm-based systems.
1212

1313
.NET has evolved significantly over the years, with each version introducing new features and performance improvements. Here, you will learn about key versions that have notable performance implications for Arm architecture.
1414

15+
{{% notice Support status summary %}}
16+
17+
- .NET 8 – Current LTS (support until Nov 2026)
18+
- .NET 9 – STS (preview; GA Q4 2025)
19+
- .NET 10 – Next LTS (preview; expected 2025 Q4–Q1 2026)
20+
- .NET 3.1, 5, 6, 7 – End of life
21+
{{% /notice %}}
22+
23+
1524
## .NET Core 3.1 (end-of-life 2022)
1625

17-
.NET Core 3.1 was the first LTS with meaningful Arm64 support. Highlights were:
26+
.NET Core 3.1 was the first LTS with meaningful Arm64 support.
27+
28+
Highlights were:
1829

1930
- Initial JIT (Just-In-Time) optimizations for Arm64 (but the bulk of Arm throughput work arrived in .NET 5).
2031
- Faster garbage collection thanks to refinements to the background GC mode.
@@ -39,18 +50,22 @@ With .NET 5 Microsoft started the “one .NET” unification. Even though it had
3950

4051
## .NET 7 (end-of-life 2024)
4152

42-
.NET 7 was an STS (Standard-Term Support) release which is now out of support, but it pushed the performance envelope and is therefore interesting from a historical perspective. Key highlights were:
53+
.NET 7 was an STS (Standard-Term Support) release which is now out of support, but it pushed the performance envelope and is therefore interesting from a historical perspective.
54+
55+
Key highlights were:
4356

4457
- General-availability of Native AOT publishing for console applications, producing self-contained, very small binaries with fast start-up on Arm64.
4558
- Dynamic PGO (Profile-Guided Optimisation) and On-Stack Replacement became the default, letting the JIT optimise the hottest code paths based on real run-time data.
4659
- New Arm64 hardware intrinsics (e.g. SHA-1/SHA-256, AES, CRC-32) exposed through System.Runtime.Intrinsics, enabling high-performance crypto workloads.
4760

4861
## .NET 8 (current LTS – support until November 2026)
4962

50-
.NET 8 is the current Long-Term Support release and should be your baseline for new production workloads. Important Arm-related improvements include:
63+
.NET 8 is the current Long-Term Support release and should be your baseline for new production workloads.
64+
65+
Important Arm-related improvements include:
5166

5267
- Native AOT support for ASP.NET Core, trimming enhancements and even smaller self-contained binaries, translating into faster cold-start for containerised Arm services.
53-
- Further JIT tuning for Arm64 delivering single- to low-double-digit percentage throughput wins in real-world benchmarks.
68+
- Further JIT tuning for Arm64 delivering single-digit to low double-digit throughput gains in real-world benchmarks.
5469
- Smaller base container images (`mcr.microsoft.com/dotnet/aspnet:8.0` and `…/runtime:8.0`) thanks to a redesigned layering strategy, particularly beneficial on Arm where network bandwidth is often at a premium.
5570
- Garbage-collector refinements that reduce pause times on highly-threaded, many-core servers.
5671

@@ -66,10 +81,10 @@ Although .NET 9 will receive only 18 months of support, it is an excellent choic
6681

6782
## .NET 10 (preview – next LTS)
6883

69-
.NET 10 is still in preview and will likely change prior to it's GA release, but it will be the next LTS version of .NET.
84+
.NET 10 is still in preview and will likely evolve prior to its GA release, but it will be the next LTS version of .NET, with the following benefits:
7085

7186
- [Extended SVE2 intrinsics](https://github.com/dotnet/runtime/issues/109652) to unlock efficient implementation of large-scale numerical algorithms and on-device AI inference on Arm v9.
7287
- C# 14 is expected to ship alongside .NET 10, bringing additional compile-time metaprogramming features that can reduce boilerplate on resource-constrained Arm edge devices.
7388

74-
Because .NET 10 is still in preview, you should validate any assumptions about feature availability against the latest preview builds and roadmap updates.
89+
Developers targeting Arm-based systems should track preview builds and roadmap updates closely to validate feature availability and compatibility with their target platforms.
7590

content/learning-paths/servers-and-cloud-computing/dotnet-migration/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ title: Migrate a .NET application to Azure Cobalt 100
44

55
minutes_to_complete: 25
66

7-
who_is_this_for: This is an advanced learning path for .NET developers who want to take advantage of the performance and cost benefits of Azure Cobalt processors.
7+
who_is_this_for: This is an advanced topic path for .NET developers who want to take advantage of the performance and cost benefits of Azure Cobalt processors.
88

99
learning_objectives:
1010
- Build and run a basic OrchardCore CMS application

0 commit comments

Comments
 (0)