这个项目是关于什么的?
ContainNInja是一个样板模板项目,可展示使用ASP.NET Core(.NET 6)Web API构建多包装完整的堆栈应用程序,并在干净的体系结构之后和Angular构建。该解决方案使用Docker组合来编排整个堆栈到Docker的部署。
解决方案提供了什么?
该解决方案构建,请记住API为建立可扩展且近乎完美的API组件所必须拥有的最基本块。该解决方案提供了以下完整实施:
- 与API,核心,合同,下文和迁移的分离层的清洁架构
- 带有通用存储库的单位工程
- 实体框架核心迁移使用SQLITE
- CQRS之后的实体完全crud,带有分离命令和查询
- 命令类中输入的流利验证
- 预配置的Swagger UI
- API侧的ETAG生成和验证响应缓存(GET)和碰撞检测(PUT)
- 准备与Dockerfiles一起使用Docker配置
- 通过iMemorycache为单个实体的内存中缓存
- 通过IdistributedCache分布式缓存实现,并带有NCACHE
- JWT令牌API用于生成和配置JWT验证
- 基于角色的授权,具有预定义的角色
- 用户跟踪的审核实体
- 在Angular中完整的客户实施实体CRUD和代币管理
- 带有分离的招摇文档的API版本控制
- 实体到DTO转换的自动应用程序实施
- 与Docker组成的Docker中的一个命令部署
- Ilogger日志记录实现
- 使用单个用户的数据库播种,并在应用程序启动时添加角色
使用的技术
- ASP.NET Core(.NET 6)Web API
- 实体框架核心(EFCORE 6)
- .NET 6的MediaTR
- .NET 6的流利验证
- sqlite
- Swaggerui
- 汽车应用程序
- Angular 13(客户)
- Bootstrap 4(CSS框架)
- nginx(代理)
- Docker组成
我如何开始Docker撰写?
要开始,请按照以下步骤:
- 安装.NET 6 SDK
- 安装最新的nodejs
- 安装Docker桌面(用于Windows) / Docker(用于Linux / Mac)
- 克隆解决方案到您的本地目录
- 在存储库根上您可以找到docker-compose.yml文件
- 运行以下命令以在Docker中构建和运行解决方案(需要一个工作的Docker安装)
> docker-compose build --force-rm --no-cache && docker-compose up
- 一旦容器开始成功导航到http:// localhost
我不喜欢Docker。我如何开始?
您也可以在没有Docker的情况下运行解决方案,然后遵循以下步骤:
- 安装.NET 6 SDK
- 安装最新的nodejs
- 克隆解决方案到您的本地目录
- 导航到API目录(./api)并运行以下命令以使API运行:
> dotnet run --project ./ContainerNinja.API
- 导航到客户端目录(./client)并运行以下命令以使Angular应用程序运行:
> npm install && npm start
- 打开浏览器,导航到http:// localhost:4200,您都设置了!
默认用户:
作为种子的一部分,该解决方案将默认用户添加到数据库中。您可以使用以下凭据来登录并开始添加项目。
EmailAddress: admin@admin.com; Password: admin
什么是Docker撰写?
Docker-Compose是一个配置文件,其中包含有关Docker的指令,涉及如何从相应的Dockerfiles构建服务。虽然Dockerfile旨在通过基本图像和说明来创建和自定义应用程序容器,但Docker-Compose文件在Dockerfile之上起作用,并帮助开发人员在运行具有复杂运行时规格(例如端口,卷)等的Docker容器中运行。
阅读更多:将完整的堆栈应用程序与Docker组成
问题还是想法?
如果您遇到任何问题或想放弃建议,
执照
该解决方案是完全开源的,并获得了MIT许可证的许可。
表示您的支持
我真的希望这种解决方案可以帮助开发人员开始使用ASP.NET Core(.NET 6)Web API构建出色的东西,并真正快速进入集装箱开发的世界。
发现该解决方案有用且有用吗?您可以做到这一点,以帮助吸引更多的受众。
- 在此存储库上留下一颗星星
- 向您的同事和开发社区推荐此解决方案
- 加入我的Twitter家庭。我经常在那里的开发人员上发布很棒的内容。
- 加入我的Facebook社区。我也经常在那儿发布有趣的内容。
- 您也可以给我买一杯优质的咖啡☕!
有关更详细的文章和操作指南,请访问https://refe*rb*ruv*.com
