You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/dotnet-migration/1-create-orchardcore-app.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,11 +6,11 @@ weight: 2
6
6
layout: learningpathall
7
7
---
8
8
9
-
# Getting started with the OrchardCore app
9
+
##Getting started with the OrchardCore app
10
10
11
11
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.
12
12
13
-
## Set up your development environment
13
+
###Set up your development environment
14
14
15
15
First, launch an Azure Cobalt 100 instance (Arm-based VM) running Ubuntu 24.04, and open port 8080 to the internet.
16
16
@@ -43,7 +43,7 @@ Install gcc for compiling your application:
First, create a new project using the `dotnet` CLI to create a new OrchardCore application:
72
72
@@ -82,7 +82,7 @@ Now navigate to the project directory:
82
82
cd MyOrchardCoreApp
83
83
```
84
84
85
-
## Run the OrchardCore application
85
+
###Run the OrchardCore application
86
86
87
87
Build the application:
88
88
@@ -115,12 +115,12 @@ Access the application:
115
115
116
116
* In your browser, navigate to `http://[instance IP]:8080` to see your OrchardCore application in action.
117
117
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.
119
119
120
120
Configure the application:
121
121
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.
123
123
124
-
## Summary and next steps
124
+
###Summary and next steps
125
125
126
126
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.
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/dotnet-migration/2-add-shared-c-library.md
+7-3Lines changed: 7 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,11 +7,15 @@ layout: learningpathall
7
7
---
8
8
## Create a C shared library
9
9
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:
11
11
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`
13
15
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.
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/dotnet-migration/4-dotnet-versions.md
+22-7Lines changed: 22 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,15 +6,26 @@ weight: 5
6
6
layout: learningpathall
7
7
---
8
8
9
-
## Evaluate .NET versions for performance on Arm
9
+
## Version-by-version feature and throughput improvements
10
10
11
11
Understanding which versions perform best and the features they offer can help you make informed decisions when developing applications for Arm-based systems.
12
12
13
13
.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.
.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:
18
29
19
30
- Initial JIT (Just-In-Time) optimizations for Arm64 (but the bulk of Arm throughput work arrived in .NET 5).
20
31
- 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
39
50
40
51
## .NET 7 (end-of-life 2024)
41
52
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:
43
56
44
57
- General-availability of Native AOT publishing for console applications, producing self-contained, very small binaries with fast start-up on Arm64.
45
58
- 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.
46
59
- New Arm64 hardware intrinsics (e.g. SHA-1/SHA-256, AES, CRC-32) exposed through System.Runtime.Intrinsics, enabling high-performance crypto workloads.
47
60
48
61
## .NET 8 (current LTS – support until November 2026)
49
62
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:
51
66
52
67
- 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 lowdouble-digit throughput gains in real-world benchmarks.
54
69
- 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.
55
70
- Garbage-collector refinements that reduce pause times on highly-threaded, many-core servers.
56
71
@@ -66,10 +81,10 @@ Although .NET 9 will receive only 18 months of support, it is an excellent choic
66
81
67
82
## .NET 10 (preview – next LTS)
68
83
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:
70
85
71
86
-[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.
72
87
- 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.
73
88
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.
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/dotnet-migration/_index.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ title: Migrate a .NET application to Azure Cobalt 100
4
4
5
5
minutes_to_complete: 25
6
6
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.
8
8
9
9
learning_objectives:
10
10
- Build and run a basic OrchardCore CMS application
0 commit comments