eShop 示例应用程序已更新并移至 https://github.com/dotnet/eShop。那里将继续积极发展。我们还推荐使用企业应用程序模式构建 Web 应用程序的可靠 Web 应用程序模式指南。
由 Microsoft 提供支持的示例 ASP.NET Core 参考应用程序,演示了单进程(整体)应用程序体系结构和部署模型。如果您是 .NET 开发新手,请阅读初学者入门指南。
有关此存储库的常见问题列表可以在此处找到。
Steve“ardalis”Smith 在 2020 年 10 月录制了一段直播,概述了 eShopOnWeb 参考应用程序。
此参考应用程序旨在支持免费的 .PDF 下载电子书:使用 ASP.NET Core 和 Azure 构建现代 Web 应用程序(已更新到ASP.NET Core 8.0) 。还提供 ePub/mobi 格式。
您还可以在 .NET 文档的在线页面中阅读本书:https://docs.microsoft.com/dotnet/architecture/modern-web-apps-azure/
eShopOnWeb示例与 eShopOnContainers 示例应用程序相关,在这种情况下,eShopOnContainers 侧重于基于微服务/容器的应用程序架构。然而, eShopOnWeb就其当前功能而言要简单得多,并且专注于通过单一部署进行传统 Web 应用程序开发。
此示例的目标是演示电子书中描述的一些原则和模式。它并不是一个电子商务参考应用程序,因此它没有实现许多对于真正的电子商务应用程序来说显而易见和/或必不可少的功能。
版本
main
分支当前运行 ASP.NET Core 8.0。旧版本已标记。
商店的主页应该如下所示:
Azure 开发人员 CLI ( azd
) 是一个以开发人员为中心的命令行界面 (CLI) 工具,用于创建 Azure 应用程序。
您需要在使用 Azure Developer CLI 运行和部署之前安装它。
powershell - ex AllSigned - c " Invoke-RestMethod 'https://aka.ms/install-azd.ps1' | Invoke-Expression "
curl -fsSL https://aka.ms/install-azd.sh | bash
您还可以使用包管理器进行安装,例如 winget、choco 和brew。有关更多详细信息,您可以按照文档:https://aka.ms/azure-dev/install。
使用以下命令登录后,您将能够使用 azd cli 快速配置和部署应用程序。
azd auth login
然后,执行azd init
命令初始化环境。
azd init -t dotnet-architecture/eShopOnWeb
运行azd up
将所有资源预配到 Azure 并将代码部署到这些资源。
azd up
根据提示输入env name
,并选择subscription
和location
,这些是创建资源时必须的参数。稍等资源部署完成,点击Web端点即可看到主页。
笔记:
您还可以直接在本地运行示例(见下文)。
该网站的大部分功能只需运行 Web 应用程序即可使用。但是,站点的管理页面依赖于在浏览器中运行的 Blazor WebAssembly,并且它必须使用站点的 PublicApi Web 应用程序与服务器进行通信。您还需要运行该项目。您可以将 Visual Studio 配置为启动多个项目,或者只需转到终端窗口中的 PublicApi 文件夹并从那里运行dotnet run
。之后,您应该从 Web 文件夹运行dotnet run --launch-profile Web
。现在您应该能够浏览到https://localhost:5001/
。 Blazor 中的管理部分可通过https://localhost:5001/admin
访问
请注意,如果您使用此方法,则需要手动停止应用程序才能构建解决方案(否则您将收到文件锁定错误)。
克隆或下载示例后,您必须设置数据库。要将示例与持久数据库一起使用,您需要先运行其 Entity Framework Core 迁移,然后才能运行应用程序。
您还可以在 Docker 中运行示例(见下文)。
默认情况下,该项目使用真实的数据库。如果您想要内存数据库,可以在 Web 文件夹中的appsettings.json
文件中添加
{
"UseOnlyInMemoryDatabase" : true
}
确保appsettings.json
中的连接字符串指向本地 SQL Server 实例。
确保工具 EF 已安装。您可以在这里找到一些帮助
dotnet tool update --global dotnet-ef
在 Web 文件夹中打开命令提示符并执行以下命令:
dotnet restore
dotnet tool restore
dotnet ef database update -c catalogcontext -p ../Infrastructure/Infrastructure.csproj -s Web.csproj
dotnet ef database update -c appidentitydbcontext -p ../Infrastructure/Infrastructure.csproj -s Web.csproj
这些命令将创建两个独立的数据库,一个用于商店的目录数据和购物车信息,另一个用于应用程序的用户凭据和身份数据。
运行应用程序。
第一次运行该应用程序时,它会在两个数据库中添加数据,以便您可以看到商店中的产品,并且您应该能够使用 [email protected] 帐户登录。
注意:如果需要创建迁移,可以使用以下命令:
-- create migration (from Web folder CLI)
dotnet ef migrations add InitialModel --context catalogcontext -p ../Infrastructure/Infrastructure.csproj -s Web.csproj -o Data/Migrations
dotnet ef migrations add InitialIdentityModel --context appidentitydbcontext -p ../Infrastructure/Infrastructure.csproj -s Web.csproj -o Identity/Migrations
该项目包含一个带有开发容器配置的.devcontainer
文件夹,它允许您使用容器作为全功能的开发环境。
您可以使用开发容器来构建和运行应用程序,而无需在本地安装任何工具!您可以使用 GitHub Codespaces 或 VS Code Dev Containers 扩展。
在其自述文件中了解有关使用开发容器的更多信息。
您可以通过从根文件夹(.sln 文件所在的位置)运行以下命令来运行 Web 示例:
docker-compose build
docker-compose up
这些命令完成后,您应该能够向 Web 项目的 localhost:5106 以及公共 API 项目的 localhost:5200 发出请求。如果您遇到任何问题,尤其是登录问题,请尝试使用新的来宾或隐身浏览器实例。
您还可以使用每个项目根目录下的Dockerfile
文件中的说明来运行应用程序。再次从解决方案的根目录(.sln 文件所在的位置)运行这些命令。
我们从社区中得到了一些伟大的贡献,虽然这些贡献不是由 Microsoft 维护的,但我们仍然想强调它们。
eShopOnWeb VB.NET 作者:Mohammad Hamdy Ghanem
FShopOnWeb Sean G. Wright 和 Kyle McMaster 对 eShopOnWeb 的 F# 改造