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

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

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

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

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

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

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