eShopModernizing

eShopModernizing

Windows容器化助力ASP.NET应用和N层架构现代化

eShopModernizing项目展示了如何利用Windows容器和Azure云技术对传统ASP.NET Web应用和N层应用进行现代化改造。该项目提供了多种部署方案,涵盖本地开发环境、Azure容器实例、Windows Server虚拟机、AKS Kubernetes集群和Azure Web App for Containers。通过容器化技术,项目实现了DevOps部署流程的优化,而无需修改原有应用架构或代码。此外,项目还配备了详细的指南和电子书,为开发者提供了应用程序'提升和转移'现代化的实施参考。

Windows ContainersAzureASP.NET现代化DockerGithub开源项目

eShopModernizing - 使用Windows容器和Azure现代化ASP.NET Web应用(MVC和WebForms)和N层应用(WCF + WinForms)

本仓库提供了三个假设的传统eShop Web应用示例(基于.NET Framework的传统ASP.NET WebForms和MVC,以及基于WCF服务和WinForms桌面客户端应用的N层应用),并展示了如何使用Windows容器和Azure云将它们现代化(提升和转移场景),部署选项包括:

  • 在开发PC上使用Visual Studio和Docker for Windows进行本地构建和部署
  • Azure容器实例(ACI)
  • 普通Windows Server 2016虚拟机(VM)
  • AKS Kubernetes编排集群
  • 用于容器的Azure Web应用(Windows容器)

所有这些环境都可以部署到Azure云(如Wiki中所述),但您也可以将它们部署到本地服务器甚至其他公共云中。

相关指南/电子书

您可以下载相关的免费指南/电子书(第2版):

<img src="https://github.com/dotnet/docs/raw/master/docs/architecture/modernize-with-azure-containers/media/index/web-application-guide-cover-image.png" width="300">

PDF下载:https://aka.ms/liftandshiftwithcontainersebook

使用Windows容器进行现代化显著改善了DevOps部署,无需更改应用程序的架构或C#代码。

示例应用是用于eShop内部后台的简单Web应用,供员工更新产品目录。 这两个应用都是简单的CRUD Web应用,用于更新SQL Server数据库中的数据。

请参见下面两个应用的截图。

现有ASP.NET Web应用的初始版本

图片

开发环境中的容器化版本

图片

UI和业务功能

WebForms和MVC应用在UI和业务功能方面非常相似。我们创建了两个版本,以便您可以根据现有应用使用的技术(ASP.NET MVC或Web Forms)进行比较。

图片

Winforms + WCF应用

Winforms应用是一个目录管理工具,使用WCF作为后端。在这里阅读更多关于Winforms + WCF示例的信息。

部署到AZURE容器实例

图片

部署到AZURE WINDOWS SERVER 2016虚拟机

图片

部署到AKS(Azure Kubernetes服务)的KUBERNETES集群

图片

部署到用于容器的AZURE WEB应用

图片

快速入门:在本地Windows 10 PC上使用"Docker for Windows"运行所有应用

Wiki中有更详细的流程,但最快的入门方式是使用Docker for Windows在本地运行所有示例。打开"VS 2017(或2019)的开发人员命令提示符"(确保PATH中有正确的msbuild),进入eShopModernizing根文件夹并运行build.cmd脚本。

注意:当前版本使用netcoreapp3.0。您需要安装预览版SDK并将Visual Studio设置为"使用.NET Core SDK的预览版"(在选项 - 项目和解决方案 - .NET Core下)。

此脚本将:

  • 构建MVC项目
  • 构建Webforms项目
  • 构建WCF后端项目
  • 创建三个Docker镜像(Windows容器镜像):
    • eshop/modernizedwebforms
    • eshop/modernizedmvc
    • eshop/wcfservice

您可以通过在命令行运行docker images来检查刚刚创建的Docker镜像:

图片

最后,只需在仓库根目录运行docker-compose up即可启动所有三个项目和一个SQL Server容器。容器启动后:

  • MVC Web应用监听:
    • Docker主机(PC)网卡IP的5115端口
    • 容器内部IP的80端口
  • Webforms Web应用监听:
    • Docker主机(PC)网卡IP的5114端口
    • 容器内部IP的80端口
  • WCF服务监听:
    • Docker主机(PC)网卡IP的5113端口
    • 容器内部IP的80端口

注意 您应该能够使用http://localhost:<端口>访问所需的应用程序。

要从Docker主机本身(开发Windows PC)测试应用/容器,您需要使用内部IP(容器的IP)来访问应用程序。要查找内部IP,只需输入docker ps即可找到容器ID:

docker ps输出

然后使用命令docker inspect <容器ID> -f {{.NetworkSettings.Networks.nat.IPAddress}}查找容器的IP,并使用该IP和80端口访问容器:

访问容器

Windows容器Docker主机中的localhost回环限制

由于当前Windows版本中的默认NAT限制(参见https://blog.sixeyed.com/published-ports-on-windows-containers-dont-do-loopback/),您无法使用主机计算机上的localhost访问容器。 这里也有更多信息:https://blogs.technet.microsoft.com/virtualization/2016/05/25/windows-nat-winnat-capabilities-and-limitations/

尽管从Build 17025开始已移除此限制(截至2018年初,仍仅适用于Windows Insider,非公开/稳定版本)。使用该版本(Windows 10 Build 17025或更高版本),应可通过"localhost"/127.0.0.1访问已发布的容器端口。

查看Wiki以获取如何设置和部署到多个环境的详细说明

Wiki:https://github.com/dotnet-architecture/eShopModernizing/wiki

选择内存中模拟数据或与SQL Server数据库的真实连接

MVC和WebForms Web应用允许连接到真实数据库以获取/更新产品目录,或者在数据库由于某种原因尚不可用而您需要测试/演示应用时使用模拟数据。

对于每个应用,可以在使用Windows容器时在docker-compose.override.yml文件中配置选择一种或另一种模式的选项,或者在尚未使用容器(原始版本)时在Web.config文件中配置。

编辑推荐精选

QoderWork

QoderWork

阿里Qoder团队推出的桌面端AI智能体

QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

nano-banana纳米香蕉中文站

nano-banana纳米香蕉中文站

国内直接访问,限时3折

输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成热门AI工具AI图像AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

下拉加载更多