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-nopcommerce/3-checkout-build-baseline.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,12 +1,12 @@
1
1
---
2
-
title: Create an Arm baseline before optimization
2
+
title: Create a nopCommerce endpoint benchmark baseline on Arm
3
3
weight: 3
4
4
5
5
### FIXED, DO NOT MODIFY
6
6
layout: learningpathall
7
7
---
8
8
9
-
## Build and baseline
9
+
## Build nopCommerce and create an endpoint baseline
10
10
11
11
Create a reproducible Arm baseline before optimization work.
The outputs after a successful install should be: `root=200`, `install=302`.
82
82
83
-
### Run the baseline
83
+
### Run the endpoint baseline benchmark
84
84
85
85
Don't benchmark `/install`. Baseline stable storefront paths first, then add cart and attribute-change routes only after you know the valid product IDs, attribute IDs, request method, and anti-forgery token behavior for your installed store.
86
86
@@ -235,6 +235,6 @@ This baseline process becomes the control for every later tuning or code-change
235
235
236
236
You've now created a baseline before migrating the application.
237
237
238
-
Next, you'll make note of dependencies before migration.
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/dotnet-migration-nopcommerce/4-dependency-mapping-manifests.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,5 @@
1
1
---
2
-
title: Run dependency discovery before migration
2
+
title: Generate an SBOM and run .NET dependency discovery before migration
3
3
weight: 4
4
4
5
5
### FIXED, DO NOT MODIFY
@@ -28,7 +28,7 @@ dotnet list src/Presentation/Nop.Web/Nop.Web.csproj package --include-transitive
28
28
29
29
### Generate an SBOM
30
30
31
-
Generate an SBOM so you can track all components, versions, and exposure surface as a first-class migration artifact. While not strictly necessary for migration purposes, this is a best practice that will save your team time down the road. You can also give this SBOM to an LLM to extract insights about your codebase for you.
31
+
Generate an SBOM so you can track all components, versions, and exposure surface as a first-class migration artifact. While not strictly necessary for migration purposes, this is a best practice that'll save time. You can also give this SBOM to an LLM to extract insights about your codebase.
32
32
33
33
The CycloneDX tool is installed as a .NET global tool. Add `~/.dotnet/tools` to `PATH` in the current shell so the `dotnet-CycloneDX` command is available immediately after installation.
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/dotnet-migration-nopcommerce/5-containerization.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,12 +1,12 @@
1
1
---
2
-
title: Choose between options to containerize the application
2
+
title: Choose a containerization path for the nopCommerce application
3
3
weight: 5
4
4
5
5
### FIXED, DO NOT MODIFY
6
6
layout: learningpathall
7
7
---
8
8
9
-
## Containerize the application
9
+
## Containerize and migrate the application
10
10
11
11
Containerization should preserve reproducibility across architectures. The following are practical paths for Dockerfile-based builds and .NET SDK container publish, with guardrails for multi-architecture delivery.
12
12
@@ -16,7 +16,7 @@ Use the Dockerfile workflow as the default migration path for nopCommerce until
16
16
17
17
Run a Dockerfile build with `buildx` from the repository root when you want to preserve the upstream nopCommerce Dockerfile behavior. This is the safest first containerization path because the Dockerfile installs runtime packages used by nopCommerce on Linux, including globalization and image-processing dependencies.
18
18
19
-
Before you push a multi-architecture image, make sure `buildx` is available, you are logged in to your registry, and your builder can build both requested platforms. If `docker buildx version` fails, install the Docker Buildx plugin for your Docker package before continuing. On an Arm-only VM, the `linux/amd64` build requires emulation or an additional x64 builder node.
19
+
Before you push a multi-architecture image, make sure `buildx` is available, you're logged in to your registry, and your builder can build both requested platforms. If `docker buildx version` fails, install the Docker Buildx plugin for your Docker package before continuing. On an Arm-only VM, the `linux/amd64` build requires emulation or an additional x64 builder node.
Use SDK publish when you want tighter integration with .NET build settings and fewer custom Docker steps. For nopCommerce, treat this as a validation path until you have confirmed that the generated image includes the Linux native packages your store needs. SDK publish creates the container image, but it does not run `apk add` or `apt-get install` steps like a Dockerfile does.
39
+
Use SDK publish when you want tighter integration with .NET build settings and fewer custom Docker steps. For nopCommerce, treat this as a validation path until you have confirmed that the generated image includes the Linux native packages your store needs. SDK publish creates the container image, but it doesn't run `apk add` or `apt-get install` steps the way a Dockerfile does.
40
40
41
-
This command publishes an Arm64 image into the local Docker daemon with an explicit repository, tag, and container runtime identifier:
41
+
This command publishes an arm64 image into the local Docker daemon with an explicit repository, tag, and container runtime identifier:
@@ -88,13 +88,13 @@ Before choosing the SDK publish path for multi-architecture images, check the SD
88
88
dotnet --version
89
89
```
90
90
91
-
If you can't use a .NET SDK version that supports multi-RID container publishing, or if SDK publish does not produce the multi-architecture image index you need, use the `docker buildx build --platform linux/amd64,linux/arm64` workflow instead.
91
+
If you can't use a .NET SDK version that supports multi-RID container publishing, or if SDK publish doesn't produce the multi-architecture image index you need, use the `docker buildx build --platform linux/amd64,linux/arm64` workflow instead.
92
92
93
93
Multi-RID container publishing starts with .NET SDK versions `8.0.405`, `9.0.102`, and `9.0.2xx`. The nopCommerce `release-4.90.3` source pins SDK `9.0.100` in `global.json` with feature-band roll-forward, so confirm the actual SDK selected by CI is new enough before relying on SDK multi-arch publish.
94
94
95
95
96
96
## What you've accomplished and what's next
97
97
98
-
You've learned about different containerization paths for the .NET application and containerized the app.
98
+
You've learned about different containerization paths for the .NET application.
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/dotnet-migration-nopcommerce/6-deploy-verify-cobalt.md
+4-2Lines changed: 4 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,9 @@ Treat tuning as an experiment pipeline, not a one-shot tweak. On Arm, apply chan
14
14
15
15
Start with a conservative runtime profile that is commonly effective for server workloads. Keep these settings outside the application code at first so you can switch profiles without rebuilding.
16
16
17
-
Runtime environment variables are read when the .NET process starts. Stop the baseline `dotnet run` process, set the variables in the same terminal, and then restart nopCommerce. The thread-pool minimum below matches the 2-vCPU validation VM; treat it as a starting point, not a universal value for every Cobalt size.
17
+
Runtime environment variables are read when the .NET process starts. Stop the baseline `dotnet run` process, set the variables in the same terminal, and then restart nopCommerce.
18
+
19
+
The following thread-pool minimum matches the 2-vCPU validation VM. Treat it as a starting point, not a universal value for every Cobalt size:
18
20
19
21
```bash
20
22
export DOTNET_TieredCompilation=1
@@ -86,7 +88,7 @@ Use these rules before adopting a tuning profile:
86
88
87
89
### Considerations for interpreting metric improvements
88
90
89
-
When interpeting metric improvements, consider the following:
91
+
When interpreting metric improvements, consider the following:
90
92
91
93
- If only one metric improves while p95 or error rate regresses, don't treat the change as a win.
92
94
- If run-to-run variation is near the observed delta, treat it as noise.
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/dotnet-migration-nopcommerce/7-arm-mcp-server.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -80,8 +80,8 @@ Implement the following guardrails when using the Arm MCP Server for optimizatio
80
80
- Ask the agent to separate observed facts from inferred explanations.
81
81
- Re-run on production-like traffic before release.
82
82
83
-
## What you've accomplished
83
+
## What you've learned
84
84
85
-
You've used the Arm MCP Server to optimize a .NET nopCommerce application migrated to Arm.
85
+
You've learned how to use the Arm MCP Server to optimize a .NET nopCommerce application migrated to Arm.
86
86
87
87
You can use the workflows in this Learning Path as a template for your own applications, then validate with your production-like traffic profile before rollout.
0 commit comments