我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
Bob 的二手书:.NET 示例应用程序 — 第 1 部分:入门
简介
最好的示例应用程序易于理解,但具有足够的复杂性来演示实际用法。我们新的开源.NET 示例应用程序 Bob's Used Books 为.NET 社区提供了一个利用多个 亚马逊云科技 框架和服务的简单但真实的.NET 应用程序。
Bob's 二手书是一个简单的电子商务应用程序,用于销售虚构的二手书。该应用程序由管理门户和客户门户组成。应用程序管理员使用管理门户来管理订单和库存等内容。客户使用客户门户网站搜索和购买图书。客户还可以通过该应用程序出售自己的图书。Bob 的二手书利用了多项 亚马逊云科技 服务,包括:
-
亚马逊 Cognito -
亚马逊 S3 -
亚马逊系统管理器参数存储 -
亚马逊密钥管理器 -
适用于 SQL 服务器的亚马逊 RD -
亚马逊 CloudFront
Bob 的二手书还为未来的博客、研讨会和有关.NET 工作负载现代化的指导提供了起点。每个.NET 现代化演示都将介绍该特定现代化之旅的内容、原因和方式。
这是深入探讨鲍勃二手书实施情况的一系列博客文章中的第一篇。在这篇文章中,我将介绍如何尽快启动并运行 Bob 的二手书,并探索可用的不同调试和部署模式。在下一篇文章中,我将讨论应用程序架构,并重点介绍构建应用程序时的一些决策和惯例。
Bob 的二手书入门
在这个博客系列中将分享很多有趣和有用的信息,但是如果你只想尽快启动并运行,那么你需要做的是:
-
在 Windows 计算机上,从
https://github.com/aws-samples/bobs-used-bookstore-sample 下载源代码或克隆 GitHub 存储库。 - 在支持 .NET 6.0(即 Visual Studio 2022 或 JetBrains Rider )的 IDE 中打开解决方案(bobsBookstore.sln )。
-
确保安装了
SQL Server Express LocalDB (默认情况下它是使用 Visual Studio 安装的)。 - 将 Bookstore.Web 项目设置为启动项目。
- 选择 本地 启动配置文件,然后按 F5 。
就是这样!应用程序将启动,你可以在本地开发计算机上调试应用程序。使用本地启动配置文件时,应用程序完全在您的本地计算机上运行,不会调用 亚马逊云科技 或使用 亚马逊云科技 资源。
图 1 — 选择 “本地调试” 并将 Bookstore.Web 设置为启动项目
调试和运行 Bob 的二手书
当我们着手制作 Bob's 二手书时,我们的目标之一是提供卓越的开发者体验。它应该易于理解,应该易于调试,并且应该易于部署。 考虑到这一点,有三种方法可以调试和运行 Bob 的二手书店: 本地调试 和 集成 调试 ,即在 Bookstor e.web/Properties/launchSettings.json 中定义的启动配置文件,以及在 Bookstore. Cdk 项目中实现的完全部署。 每种服务在应用程序使用的 亚马逊云科技 服务和资源数量上都不同。
本地调试
本地调试配置文件是开始使用 Bob 的二手书的最快、最简单的方法(如上文 Bob 的二手书 入门 中所述 )。本地调试不需要 亚马逊云科技 账户,也不使用 亚马逊云科技 服务或资源。亚马逊云科技 服务与模拟或本地实现互换。例如,Bob's 二手书通常会使用亚马逊 S3 来存储图书图片,但在本地调试期间,它却交换了亚马逊 S3 服务实现(Bookstore.data/Fileservices/s3Fileservice),而是使用本地文件服务实现(bookstore.data/Fileservices/localFileService)。
我们预计,本地调试将是开发人员与 Bob 的二手书进行交互的初始方式。它使开发人员能够快速轻松地启动应用程序,查看其运行情况,并检查通常用于与 亚马逊云科技 特定服务交互的代码,而无需预置这些云资源。但是,在某些时候,大多数开发人员会希望逐步完成与 亚马逊云科技 交互的代码。这就是集成调试的用武之地。
集成调试
当您准备好对照真实的 亚马逊云科技 服务调试 Bob 的二手书时,您可以使用集成调试启动配置文件。您可以将集成调试视为本地调试和全面部署到 亚马逊云科技 之间的中间地带。通过集成调试,您可以将 Bob's Used Books 在全面部署中使用的一些 亚马逊云科技 资源预置到云端,但该应用程序仍在您的开发计算机上本地运行。您可以采用与本地调试完全相同的方式调试应用程序,但是现在您可以看到应用程序与 亚马逊云科技 服务直接交互。
在使用集成调试之前,您需要预置少量 亚马逊云科技 资源。
Bookstore.Cdk
项目使用
亚马逊云科技 CDK 使我们能够用 C# 定义 亚马逊云科技 服务和资源,然后在准备就绪时预置这些 亚马逊云科技 资源。这通常被称为基础设施即代码 (IaC)。
要使用 CDK 预置 亚马逊云科技 资源,您需要执行以下操作:
-
安装最新的长期支持 (LTS) 版本的 Node.js -
如果您还没有
亚马逊云科技 账户,请创建 一个 -
按照《亚马逊云科技 CDK
入门指南》中的 “ 使用 亚马逊云科技 进行 身份验证 ” 部分配置 CDK 身份验证 - 打开命令行外壳并运行以下命令来安装 亚马逊云科技 CDK:npm install-g aws-cdk
首次使用 亚马逊云科技 CDK 在您的 亚马逊云科技 账户中预置服务时,您需要
亚马逊云科技 CDK 完成账户的引导后,您就可以预置支持集成调试所需的 亚马逊云科技 资源了。运行以下命令:
—require-approvalog “从不” 参数告诉 亚马逊云科技 CDK 自动批准对您的 亚马逊云科技 账户进行的所有修改,而不是提示您批准,即使是影响权限和访问权限的修改也是如此。就本示例应用程序而言,这种便利性是可以接受的,但您应仔细考虑它是否适用于其他 亚马逊云科技 CDK 部署。
上面的 CDK 命令假设您的 亚马逊云科技 凭证配置文件被命名为默认。如果您没有使用该名称的凭证配置文件,或者希望使用其他凭证配置文件,请添加 —profile 参数,然后添加证书配置文件的名称。例如,
cdk 部署 bobsBook
storeCore--profile my-profile。 请注意,应将所选配置文件配置为设置目标区域。有关更多详细信息,请参阅
这告诉 亚马逊云科技 CDK 部署
bobsBookstore
现在,您所需要做的就是选择集成启动配置文件,然后开始使用真实的 亚马逊云科技 资源进行调试!
图 2 — 选择集成调试
Bob 的二手书使用
图 3 — Bob 的二手书客户门户主页
使用 管理员 输入用户 名并使用 P @ssword1 输入密码登录。
图 4 — 亚马逊 Cognito 托管的登录用户界面
然后,系统将提示您创建新密码并提供一些其他详细信息。
图 5 — 亚马逊 Cognito 更改密码托管用户界面
仅此而已!您已登录应用程序并进入客户门户主页。管理员用户属于 管理员 群组,这意味着您可以通过页面右上角的管理员门户和客户门 户 链接在 管理 门户 和 客户门户 之间导航。
图 6 — Bob 的二手书经过身份验证的客户门户主页
该应用程序支持自注册。当用户注册 Bob's 二手书时,他们被授予访问客户门户的权限,但不能访问管理员门户。无法通过自注册添加管理员,他们必须直接添加到应用程序的 Cognito 用户池中。
全面部署
调试在本地运行的应用程序是一项重要功能,但在某些时候您需要将该应用程序部署到生产环境中。将 Bob's 二手书部署到 亚马逊云科技 的过程与部署用于集成调试的 亚马逊云科技 服务非常相似,但是部署的不是bobsBookstoreCore CloudFormation Stack,而是部署 bobsBookstoreEC2 CloudFormation Stack。这将在云中创建全套资源以支持已部署的应用程序。
你需要做的第一件事是构建和发布应用程序。打开命令行提示符并导航到存储库文件夹的根目录(这是包含 BobsBookstore.sln 的文件夹)。运行以下命令:
图 7 — 发布应用程序
应用程序构建并发布后,即可将其部署到 亚马逊云科技。如果您尚未在开发计算机上设置 亚马逊云科技 CDK,请执行上述 “ 集成调试 ” 部分中的步骤,安装先决条件、配置 CDK 身份验证并引导您的 亚马逊云科技 账户。完成后,打开命令行提示符并导航到应用程序解决方案文件夹(这是包含 BobsBookstore.sln 的文件夹)。运行以下命令:
—require-approvalog “从不” 参数告诉 亚马逊云科技 CDK 自动批准对您的 亚马逊云科技 账户进行的所有修改,而不是提示您批准,即使是影响权限和访问权限的修改也是如此。就本示例应用程序而言,这种便利性是可以接受的,但您应仔细考虑它是否适用于其他 亚马逊云科技 CDK 部署。
上面的 CDK 命令假设您的 亚马逊云科技 凭证配置文件被命名为默认。如果您没有使用该名称的凭证配置文件,或者希望使用其他凭证配置文件,请添加 —profile 参数,然后添加证书配置文件的名称。例如,
cdk 部署 bobsBook
storeCore--profile my-profile。 请注意,应将所选配置文件配置为设置目标区域。有关更多详细信息,请参阅
部署完成后,应用程序 URL 将显示在名为 bobsb ookstoreec2.ec2URL 的输出中。将该 URL 复制并粘贴到浏览器中。
图 8 — 已部署应用程序的 URL
在全新部署后,Web 服务器可能需要几秒钟才能开始为请求提供服务。一旦你看到类似于下方屏幕截图的浏览器警告,它就会按预期运行。
为了尽可能简化部署,应用程序使用自签名证书来启用通过 SSL 的流量。当你第一次在浏览器中打开 Bob's 二手书时,你会看到一条关于潜在安全风险的安全警告。这是因为浏览器无法识别自签名证书。对 Bob's Used Books 来说,忽略这个警告是安全的,但如果你在其他地方看到这些警告,请务必格外小心!
图 9 — 浏览器警告
如果你在本地调试或集成调试中使用了 Bob 的二手书,然后进行了全面部署,你可能会注意到你的账簿和订单已经消失了。这是因为在 “本地调试和集成调试” 中,Bob 的《二手书》使用 SQL Server LocalDB 实例作为数据库后端,但完整部署会预置和使用 RDS for SQL Server 数据库。如果你对我们为什么采用这种方法感兴趣,请务必查看本博客系列的下一篇文章。
清理
如果您使用了集成调试或完整部署,则可以通过打开命令行提示符、导航到应用程序解决方案文件夹并运行以下命令来删除创建的 亚马逊云科技 服务和资源:
这是确保您不会产生不必要费用的重要步骤。
结论
Bob's Used Books 是一款新的开源.NET 应用程序,旨在反映在 亚马逊云科技 上运行的简单但真实的电子商务应用程序。在这篇博客文章中,我描述了如何启动和运行应用程序,以及在本地和在 亚马逊云科技 中运行应用程序的不同方式。
你可以通过下载源代码或从
这是该系列的第一篇博客文章。在下一篇文章中,我将深入探讨应用程序架构、应用程序使用的 亚马逊云科技 服务以及构建 Bob's Used Books 时采用的设计决策。
作者简介
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。