Project Icon

eShopModernizing

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

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

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版):

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文件中配置。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

Trae

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号