How karthikayan-m/eshopmodernizing works
Purpose and top-level entry points
This is a lift-and-shift modernization sample for three .NET Framework catalog-management applications: ASP.NET MVC, ASP.NET Web Forms, and WinForms backed by WCF. Legacy and containerized variants coexist to demonstrate deployment without redesigning application code. Local orchestration starts at build.cmd, docker-compose.yml, and docker-compose.override.yml.
Application variants
The legacy implementations are separate Visual Studio solutions:
• MVC: eShopLegacyMVCSolution/eShopLegacyMVC.sln
• Web Forms: eShopLegacyWebFormsSolution/eShopLegacyWebForms.sln
• N-tier WCF/WinForms: eShopLegacyNTier/eShopLegacyNTier.sln
Modernized equivalents retain these application architectures while adding container, Azure, identity, telemetry, and cloud-storage integration:
• eShopModernizedMVCSolution/eShopModernizedMVC.sln
• eShopModernizedWebFormsSolution/eShopModernizedWebForms.sln
• eShopModernizedNTier/eShopModernizedNTier.sln
MVC catalog application
The modernized MVC app is an IIS-hosted ASP.NET MVC CRUD site. ASP.NET startup and HTTP pipeline entry points are eShopModernizedMVCSolution/src/eShopModernizedMVC/Global.asax.cs and eShopModernizedMVCSolution/src/eShopModernizedMVC/Startup.cs. Catalog requests pass through Controllers/CatalogController.cs, service abstractions/implementations, then EF-backed catalog models:
• eShopModernizedMVCSolution/src/eShopModernizedMVC/Controllers/CatalogController.cs
• eShopModernizedMVCSolution/src/eShopModernizedMVC/Services/CatalogService.cs
• eShopModernizedMVCSolution/src/eShopModernizedMVC/Models/CatalogDBContext.cs
Web Forms catalog application
The Web Forms app provides the same catalog CRUD domain through .aspx pages and code-behind. Its process/pipeline starts in eShopModernizedWebFormsSolution/src/eShopModernizedWebForms/Global.asax.cs; catalog editing is centered in Catalog/*.aspx.cs, backed by the same service-to-Entity Framework pattern:
• eShopModernizedWebFormsSolution/src/eShopModernizedWebForms/Default.aspx.cs
• eShopModernizedWebFormsSolution/src/eShopModernizedWebForms/Catalog/Edit.aspx.cs
• eShopModernizedWebFormsSolution/src/eShopModernizedWebForms/Models/CatalogDBContext.cs
N-tier desktop/service boundary
The N-tier sample separates a WinForms client from a SOAP/WCF catalog service. The desktop executable begins at eShopModernizedNTier/src/eShopWinForms/Program.cs, uses generated service-reference code, and delegates catalog operations to the WCF service endpoint. The service contract/endpoint and persistence model form the remote boundary:
• eShopModernizedNTier/src/eShopWinForms/Connected Services/eShopServiceReference/Reference.cs
• eShopModernizedNTier/src/eShopWCFService/CatalogService.svc.cs
• eShopModernizedNTier/src/eShopWCFService/EntityModel.cs
Data, identity, images, and observability
The catalog domain consists of items, brands, and types, persisted in SQL Server; initial data and HiLo SQL sequences are included with each web app. The modernized web apps can switch service implementations to mocks when SQL is unavailable. They add optional Azure Key Vault configuration, Azure SQL token support, Azure Blob image storage, Application Insights telemetry, and authentication middleware:
• eShopModernizedMVCSolution/src/eShopModernizedMVC/App_Start/OptionalKeyVaultConfigurationBuilder.cs
• eShopModernizedMVCSolution/src/eShopModernizedMVC/Services/ImageAzureStorage.cs
• eShopModernizedMVCSolution/src/eShopModernizedMVC/Middleware/AuthenticationMiddleware.cs
Container build and local runtime
Each modernized server-side application has a Windows-container Dockerfile; solution-level Compose files define the multi-container topology of MVC, Web Forms, WCF, and SQL Server. The root compose stack exposes the applications on host ports while services communicate over the internal Docker network:
• eShopModernizedMVCSolution/src/eShopModernizedMVC/Dockerfile
• eShopModernizedWebFormsSolution/src/eShopModernizedWebForms/Dockerfile
• eShopModernizedNTier/src/eShopWCFService/Dockerfile
Deployment targets
Deployment descriptors package the same containerized workloads for Azure Container Instances, Windows Server VMs, Kubernetes/AKS, and Service Fabric. Kubernetes manifests define service/deployment topology, while Service Fabric application manifests wrap individual MVC, Web Forms, and SQL container packages:
• ACI/aci.json
• Kubernetes/eShopModernizedMVC-K8s/ServiceDeployments/eshop-modernized-mvc-k8s-services-deployment.yml
• ServiceFabric/eShopModernizedMVC-ServiceFabricApp/ApplicationPackageRoot/ApplicationManifest.xml
Main entry points: docker-compose.yml Compose stack · Dockerfile Windows container images · Startup.cs MVC HTTP startup · CatalogService.cs Catalog service
Components 23
Local build & runtime
- Build script
build.cmd - Compose stack · Runs MVC, Web Forms, WCF, and SQL containers on an internal network.
docker-compose.yml - Windows container images · Built separately for MVC, Web Forms, and WCF server workloads.
eShopModernizedMVCSolution/src/eShopModernizedMVC/Dockerfile
Modernized MVC
- MVC HTTP startup
eShopModernizedMVCSolution/src/eShopModernizedMVC/Startup.cs - Catalog controller
eShopModernizedMVCSolution/src/eShopModernizedMVC/Controllers/CatalogController.cs - Catalog service
eShopModernizedMVCSolution/src/eShopModernizedMVC/Services/CatalogService.cs - MVC catalog context
eShopModernizedMVCSolution/src/eShopModernizedMVC/Models/CatalogDBContext.cs - Blob image storage
eShopModernizedMVCSolution/src/eShopModernizedMVC/Services/ImageAzureStorage.cs - Authentication middleware
eShopModernizedMVCSolution/src/eShopModernizedMVC/Middleware/AuthenticationMiddleware.cs
Modernized Web Forms
- Web Forms pipeline
eShopModernizedWebFormsSolution/src/eShopModernizedWebForms/Global.asax.cs - Catalog edit pages
eShopModernizedWebFormsSolution/src/eShopModernizedWebForms/Catalog/Edit.aspx.cs - Web Forms catalog context
eShopModernizedWebFormsSolution/src/eShopModernizedWebForms/Models/CatalogDBContext.cs
Modernized N-tier
- WinForms client
eShopModernizedNTier/src/eShopWinForms/Program.cs - Generated WCF proxy
eShopModernizedNTier/src/eShopWinForms/Connected Services/eShopServiceReference/Reference.cs - WCF catalog service
eShopModernizedNTier/src/eShopWCFService/CatalogService.svc.cs - WCF entity model
eShopModernizedNTier/src/eShopWCFService/EntityModel.cs
Shared platform services
- SQL Server catalog · Stores catalog items, brands, types, and HiLo sequences.
- Azure Key Vault
eShopModernizedMVCSolution/src/eShopModernizedMVC/App_Start/OptionalKeyVaultConfigurationBuilder.cs - Application Insights
Deployment targets
- Kubernetes / AKS
Kubernetes/eShopModernizedMVC-K8s/ServiceDeployments/eshop-modernized-mvc-k8s-services-deployment.yml - Azure Container Instances
ACI/aci.json - Service Fabric
ServiceFabric/eShopModernizedMVC-ServiceFabricApp/ApplicationPackageRoot/ApplicationManifest.xml
Other components
- Legacy .NET Framework apps · MVC, Web Forms, and N-tier solutions coexist with their modernized variants.
eShopLegacyMVCSolution/eShopLegacyMVC.sln
Connections 23
- Build script → Compose stack: starts
- Windows container images → Compose stack: runs as
- Compose stack → MVC HTTP startup: hosts
- Compose stack → Web Forms pipeline: hosts
- Compose stack → WCF catalog service: hosts
- MVC HTTP startup → Authentication middleware: applies
- Authentication middleware → Catalog controller: authorizes
- Catalog controller → Catalog service: uses
- Catalog service → MVC catalog context: persists through
- MVC catalog context → SQL Server catalog: stores in
- Catalog service → Blob image storage: manages images
- Web Forms pipeline → Catalog edit pages: routes to
- Catalog edit pages → Web Forms catalog context: persists through
- Web Forms catalog context → SQL Server catalog: stores in
- WinForms client → Generated WCF proxy: uses
- Generated WCF proxy → WCF catalog service: SOAP calls
- WCF catalog service → WCF entity model: uses
- WCF entity model → SQL Server catalog: stores in
- Azure Key Vault → MVC HTTP startup: optional config
- MVC HTTP startup → Application Insights: emits telemetry
- Windows container images → Azure Container Instances: deploys to
- Windows container images → Kubernetes / AKS: deploys to
- Windows container images → Service Fabric: packages for