Project Icon

dev-store

基于ASP.NET 6构建的开源微服务电商应用

DevStore是一个基于ASP.NET 6的开源微服务电商应用,集成了ASP.NET Core、Entity Framework Core和RabbitMQ等主流技术。项目采用六边形架构、领域驱动设计和CQRS等现代架构理念,包含7个API和1个Web应用。作为一个参考实现,DevStore展示了如何使用.NET构建复杂的分布式系统,为开发者提供了学习现代软件架构的实践平台。

标志 标志

DevStore - 基于ASP.NET 6构建的微服务电子商务参考应用

desenvolvedor.io提供支持的真实世界参考应用 巴西,实现了最常见和最常用的技术,旨在与技术社区分享使用.NET开发完整复杂应用程序的最佳方式


本项目受EShopOnContainers启发,但真正的动机是以"我们的方式"构建它。
EShopOnContainers是一个很棒的项目,但代码中存在一些"坏味道"。与DevStore相比,我们发现开始学习/使用EShopOnContainers比较困难。我们喜欢将DevStore视为一个简化(但并不简单)的版本,并在代码和小细节方面更加用心。我们还只专注于使用ASP.NET的Web架构。

给个星星! :star:

如果你喜欢这个项目或者DevStore对你有帮助,请给我们一个星星 ;)

DevStore

想学习构建这样的应用所需的一切吗? :mortar_board:

查看desenvolvedor.io的在线课程(仅提供葡萄牙语)

实现的技术/组件

  • .NET 6

    • ASP.NET MVC Core
    • ASP.NET WebApi
    • ASP.NET Minimal API
    • ASP.NET Identity Core
    • 刷新令牌
    • 带旋转公钥/私钥的JWT
    • GRPC
    • 后台服务
    • Entity Framework Core 6
  • 组件/服务

    • RabbitMQ
    • EasyNetQ
    • Refit
    • Polly
    • Bogus
    • Dapper
    • FluentValidator
    • MediatR
    • 支持JWT的Swagger UI
    • NetDevPack
    • NetDevPack.Identity
    • NetDevPack.Security.JWT
  • 托管

    • IIS
    • NGINX
    • Docker(带compose)

架构:

完整的架构实现了最重要和常用的关注点,如:

  • 六边形架构
  • 整洁代码
  • 整洁架构
  • DDD - 领域驱动设计(层和领域模型模式)
  • 领域事件
  • 领域通知
  • 领域验证
  • CQRS(即时一致性)
  • 重试模式
  • 断路器
  • 工作单元
  • 仓储
  • 规约模式
  • API网关 / BFF

架构概览

整个应用程序基于一个包含7个API和一个Web应用程序(MVC)的唯一解决方案

先读


这是一个参考应用程序,每个微服务都有自己的数据库,代表一个有界上下文(DDD概念)。 有一个BFF / API网关来管理购物篮/订单/支付请求和响应的数据结构。

先读


入门

你可以在任何操作系统上运行DevStore项目。确保你的环境中已安装Docker。获取Docker安装

克隆DevStore仓库并导航到**/Docker**文件夹,然后:

如果你只想在Docker环境中运行DevStore应用程序:

docker-compose up

如果你想构建本地镜像并在Docker环境中运行DevStore应用程序:

这个compose将为每个API服务提供一个数据库容器。

docker-compose -f docker-compose-local.yml up --build

如果你更喜欢节省机器资源,请使用轻量级本地compose:

这个compose将为所有API服务提供一个数据库容器。

docker-compose -f docker-compose-local-light.yml up --build

如果你想在VS/VS Code中本地运行:

你需要:

  • Docker
  • SQL实例(或容器)
  • RabbitMQ

这样你就可以编辑Docker compose来只运行数据库和队列依赖,节省时间。

如果你想要Visual Studio的F5和调试体验:

image


如果你想要Visual Studio Code体验:

  • 在根目录(解决方案文件)打开VS Code
  • 在VS Code调试部分创建一个新的launch.json,并使用以下配置来设置"启动所有项目"选项
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "DevStore MVC WebApp",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/src/web/DevStore.WebApp.MVC/bin/Debug/net6.0/DevStore.WebApp.MVC.dll",
            "args": [],
            "cwd": "${workspaceFolder}/src/web/DevStore.WebApp.MVC",
            "console": "internalConsole",
            "stopAtEntry": false
        },
        {
            "name": "DevStore Billing API",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/src/services/DevStore.Billing.API/bin/Debug/net6.0/DevStore.Billing.API.dll",
            "args": [],
            "cwd": "${workspaceFolder}/src/services/DevStore.Billing.API",
            "console": "internalConsole",
            "stopAtEntry": false
        },
        {
            "name": "DevStore Catalog API",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/src/services/DevStore.Catalog.API/bin/Debug/net6.0/DevStore.Catalog.API.dll",
            "args": [],
            "cwd": "${workspaceFolder}/src/services/DevStore.Catalog.API",
            "console": "internalConsole",
            "stopAtEntry": false
        },
        {
            "name": "DevStore Customers API",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/src/services/DevStore.Customers.API/bin/Debug/net6.0/DevStore.Customers.API.dll",
            "args": [],
            "cwd": "${workspaceFolder}/src/services/DevStore.Customers.API",
            "console": "internalConsole",
            "stopAtEntry": false
        },
        {
            "name": "DevStore Identity API",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/src/services/DevStore.Identity.API/bin/Debug/net6.0/DevStore.Identity.API.dll",
            "args": [],
            "cwd": "${workspaceFolder}/src/services/DevStore.Identity.API",
            "console": "internalConsole",
            "stopAtEntry": false
        },
        {
            "name": "DevStore Orders API",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/src/services/DevStore.Orders.API/bin/Debug/net6.0/DevStore.Orders.API.dll",
            "args": [],
            "cwd": "${workspaceFolder}/src/services/DevStore.Orders.API",
            "console": "internalConsole",
            "stopAtEntry": false
        },
        {
            "name": "DevStore ShoppingCart API",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/src/services/DevStore.ShoppingCart.API/bin/Debug/net6.0/DevStore.ShoppingCart.API.dll",
            "args": [],
            "cwd": "${workspaceFolder}/src/services/DevStore.ShoppingCart.API",
            "console": "internalConsole",
            "stopAtEntry": false
        },
        {
            "name": "DevStore BFF Checkout",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/src/api-gateways/DevStore.Bff.Checkout/bin/Debug/net6.0/DevStore.Bff.Checkout.dll",
            "args": [],
            "cwd": "${workspaceFolder}/src/api-gateways/DevStore.Bff.Checkout",
            "console": "internalConsole",
            "stopAtEntry": false
        }
    ],
    "compounds": [
        {
            "name": "启动所有项目",
            "configurations": [
                "DevStore MVC WebApp",
                "DevStore Billing API",
                "DevStore Catalog API",
                "DevStore Customers API",
                "DevStore Identity API",
                "DevStore Orders API",
                "DevStore ShoppingCart API",
                "DevStore BFF Checkout"
            ],
            "stopAll": true
        }
    ]
}   

免责声明

  • 这不是新应用程序的架构模板或引导模型
  • 所有实现都是为了真实世界而制作的,但目标是分享知识
  • 你可能不需要许多包含的实现,尽量避免过度工程

拉取请求

提出一个问题,让我们讨论!不要提交未讨论或未批准功能的PR。

如果你想帮助我们,选择一个已批准的问题并实现它。

我们在线上

查看在DevStore官方实例上运行的项目

关于

DevStore由desenvolvedor.io巴西团队自豪地开发,采用MIT许可证

项目侧边栏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

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

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