Skip to content

Commit e5656e8

Browse files
authored
Merge pull request #2043 from pareenaverma/uvision-review
tech review of .NET and Cobalt VM Lps
2 parents 3989113 + 9adc373 commit e5656e8

File tree

8 files changed

+68
-25
lines changed

8 files changed

+68
-25
lines changed

content/learning-paths/servers-and-cloud-computing/cobalt/1-create-cobalt-vm.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,14 @@ layout: learningpathall
88

99
## Use the Azure Portal to deploy a Cobalt 100 VM
1010

11-
Azure Cobalt 100 VMs are a part of the ['D' family of Azure VMs](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/general-purpose/d-family). To deploy one, follow these steps:
11+
Cobalt 100 is Microsoft’s first Arm-based server processor, built using the Armv9 Neoverse-N2 CPU. The Cobalt 100 processor is optimized for the performance of scale-out cloud-based applications.
12+
13+
The Azure Cobalt 100 VM instances include two series:
14+
15+
The general-purpose Dpsv6 and Dplsv6 virtual machine series.
16+
The memory-optimized Epsv6 virtual machine series.
17+
18+
To create a Cobalt 100 VM, follow these steps:
1219

1320
1. Sign in to the [Azure Portal](https://portal.azure.com/).
1421
2. Select **Create a resource → Compute → Virtual machine**.

content/learning-paths/servers-and-cloud-computing/cobalt/2-open-port.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,10 @@ In this step you will open port 22 for SSH, as well as port 8080 so that a web a
1414

1515
1. In the Azure Portal open the newly created VM resource and click **Networking → Network settings** in the left nav.
1616
2. Select the **Network security group**.
17-
3. In the left nav click **Settings → Inbound security rules**
18-
4. Click **Add** at the top of the screen.
19-
5. Fill in the form, specifying **My IP address** as the source and 22 as the destination port:
17+
3. Click on **Create Port Rule** and from the drop-down men select **Inbound port rule**
18+
4. Fill in the form, specifying **My IP address** as the source and 22 as the destination port:
2019
![Add inbound security rule with source of my IP and destination port 22#center](images/create-nsg-rule.png)
20+
5. Click **Add**.
21+
To open port 8080, follow steps 3 through 5 again, but instead choose port 8080 for the destination port.
2122

22-
To open port 8080, follow steps 4 and 5 again, but instead choose port 8080 for the destination port.
23-
24-
You have now opened ports 22 and 8080 to your IP. In the next step you will verify connectivity.
23+
You have now opened ports 22 and 8080 to your IP. In the next step you will verify connectivity.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Create an Azure Cobalt 100 VM
33

44
minutes_to_complete: 10
55

6-
who_is_this_for: Developers and DevOps engineers who need an Arm-based virtual machine on Azure and want to expose an application port to the internet.
6+
who_is_this_for: This is an introductory topic for developers and DevOps engineers who need an Arm-based virtual machine on Azure and want to expose an application port to the internet.
77

88
learning_objectives:
99
- Deploy an Arm-based Cobalt 100 virtual machine (VM) on Microsoft Azure.

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

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,18 @@ sudo apt-get install -y dotnet-sdk-8.0
2929
dotnet --version
3030
```
3131

32+
The output should look like:
33+
34+
```output
35+
8.0.117
36+
```
37+
38+
4. Install gcc for compiling your application:
39+
40+
```bash
41+
sudo apt install gcc g++ build-essential -y
42+
```
43+
3244
## Step 2: Install the OrchardCore Templates
3345

3446
To start building an OrchardCore application, you need to install the OrchardCore templates. Open your terminal and run the following command:
@@ -39,6 +51,19 @@ dotnet new install OrchardCore.ProjectTemplates::2.1.7
3951

4052
This command installs the OrchardCore project templates, which you will use to create a new application.
4153

54+
The output will look like:
55+
56+
```output
57+
Success: OrchardCore.ProjectTemplates::2.1.7 installed the following templates:
58+
Template Name Short Name Language Tags
59+
------------------------ ----------- -------- --------------------
60+
Orchard Core Cms Module ocmodulecms [C#] Web/Orchard Core/CMS
61+
Orchard Core Cms Web App occms [C#] Web/Orchard Core/CMS
62+
Orchard Core Mvc Module ocmodulemvc [C#] Web/Orchard Core/Mvc
63+
Orchard Core Mvc Web App ocmvc [C#] Web/Orchard Core/Mvc
64+
Orchard Core Theme octheme [C#] Web/Orchard Core/CMS
65+
```
66+
4267
## Step 3: Create a new OrchardCore application
4368

4469
1. **Create a new project**: Use the `dotnet` CLI to create a new OrchardCore application.
@@ -63,6 +88,21 @@ cd MyOrchardCoreApp
6388
dotnet build
6489
```
6590

91+
The output will look like:
92+
93+
```output
94+
MSBuild version 17.8.27+3ab07f0cf for .NET
95+
Determining projects to restore...
96+
Restored /home/azureuser/MyOrchardCoreApp/MyOrchardCoreApp.csproj (in 28.95 sec).
97+
MyOrchardCoreApp -> /home/azureuser/MyOrchardCoreApp/bin/Debug/net8.0/MyOrchardCoreApp.dll
98+
Copying translation files: MyOrchardCoreApp
99+
100+
Build succeeded.
101+
0 Warning(s)
102+
0 Error(s)
103+
104+
Time Elapsed 00:00:38.05
105+
```
66106
2. **Run the application**: Start the application with:
67107

68108
```bash
@@ -73,4 +113,4 @@ dotnet run --urls http://0.0.0.0:8080
73113

74114
4. **Configure the application as a blog** In the resulting configuration page,
75115

76-
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.
116+
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: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public static class NativeMethods
5050
}
5151
```
5252

53-
2. Call the `Greet` method from your application. For example, you can add the following code to your main program or a controller:
53+
2. Call the `Greet` method from your application. For example, you can add the following code to your main program `Program.cs` as shown:
5454

5555
```csharp
5656
using OrchardCore.Logging;

content/learning-paths/servers-and-cloud-computing/dotnet-migration/3-any-cpu.md

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,8 @@ The AnyCPU feature has been around since .NET 2, but it's current incarnation wa
1616

1717
To make your OrchardCore application architecture agnostic, you need to configure it to use the AnyCPU platform target. This allows the .NET runtime to choose the appropriate architecture at runtime.
1818

19-
1. Open your OrchardCore project in your preferred IDE.
20-
2. Locate the `.csproj` file for your project.
21-
3. Modify the `<PlatformTarget>` element to `AnyCPU`:
19+
1. Open your OrchardCore project `MyOrchardCoreApp.csproj` in your preferred IDE.
20+
2. Find the `<PropertyGroup>` and add the `<PlatformTarget>` element to `AnyCPU`:
2221

2322
```xml
2423
<PropertyGroup>
@@ -30,6 +29,8 @@ To make your OrchardCore application architecture agnostic, you need to configur
3029

3130
## Build once, run anywhere
3231

32+
You can now build your application on either an x86 or Arm host machine and deploy it on any architecture.
33+
3334
```bash
3435
dotnet build -c Release
3536
```
@@ -40,14 +41,12 @@ dotnet build -c Release
4041
dotnet run --urls http://0.0.0.0:8080
4142
```
4243

43-
Your application should now be runnable on any architecture. All you have to do is copy the `MyOrchardCoreApp` directory to any computer with the .NET 8 Framework installed and run
44+
Your application should now be runnable on any architecture. All you have to do is copy the `MyOrchardCoreApp` directory to any computer with the .NET 8 Framework installed and run the command shown from within the `MyOrchardCoreApp` directory:
4445

4546
```bash
4647
dotnet ./bin/Release/net8.0/MyOrchardCoreApp.dll --urls http://0.0.0.0:8080
4748
```
4849

49-
From within the `MyOrchardCoreApp` directory.
50-
5150
## Benefits of architecture agnostic applications
5251

5352
By configuring your application to be architecture agnostic, you gain several benefits:
@@ -56,4 +55,4 @@ By configuring your application to be architecture agnostic, you gain several be
5655
- **Efficiency**: Reduce the need for maintaining separate builds for different architectures.
5756
- **Scalability**: Easily scale your application across different hardware platforms.
5857

59-
This approach ensures that your OrchardCore application can run seamlessly on both Arm and x86 architectures.
58+
This approach ensures that your OrchardCore application can run seamlessly on both Arm and x86 architectures.

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ layout: learningpathall
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

13-
.NET has evolved significantly over the years, with each version introducing new features and performance improvements. Here, we will focus on the key versions that have notable performance implications for Arm architecture.
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.
1414

1515
## .NET Core 3.1 (end-of-life 2022)
1616

@@ -68,7 +68,7 @@ Although .NET 9 will receive only 18 months of support, it is an excellent choic
6868

6969
.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.
7070

71-
- Extended SVE2 and new SME (Scalable Matrix Extension) intrinsics to unlock efficient implementation of large-scale numerical algorithms and on-device AI inference on Arm v9.
71+
- [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.
7272
- 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.
7373

7474
Because .NET 10 is still in preview, you should validate any assumptions about feature availability against the latest preview builds and roadmap updates.

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
11
---
2-
title: Migrating a .NET application to Azure Cobalt
2+
title: Migrate a .NET application to Microsoft Azure Cobalt 100
33

44
minutes_to_complete: 25
55

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

88
learning_objectives:
99
- Create and compile a basic OrchardCore CMS application
1010
- Add a simple C shared library to your .NET application
1111
- Learn about anyCPU hardware agnostic builds
12-
- Gain intuition about performance of different .NET versions
12+
- Learn about performance of different .NET versions
1313

1414
prerequisites:
15-
- An Azure account
16-
- Installation of .NET 8
17-
- gcc installed
15+
- A Microsoft Azure account
1816

1917
author: Joe Stech
2018

0 commit comments

Comments
 (0)