当前位置: 首页 > news >正文

南阳网站推广方案厦门网站建设解决方案

南阳网站推广方案,厦门网站建设解决方案,自己创造网站平台,网站模板无忧在上一篇文章《手把手教你用Abp vnext构建API接口服务》中#xff0c;我们用ABP vnext实现了WebAPI接口服务#xff0c;但是并非ABP模块化架构的最佳实践。我本身也在学习ABP#xff0c;我认为ABP新手应该从最佳实践开始学习#xff0c;可以少走很多弯路#xff0c;所以写… 在上一篇文章《手把手教你用Abp vnext构建API接口服务》中我们用ABP vnext实现了WebAPI接口服务但是并非ABP模块化架构的最佳实践。我本身也在学习ABP我认为ABP新手应该从最佳实践开始学习可以少走很多弯路所以写了这篇最佳实践来做个总结同时给其他朋友们提供一点参考。一、什么是模块化架构的最佳实践ABP是一个包含许多nuget包的模块化框架。它提供了一个完整的基础架构来开发你自己的具有实体、服务、数据库集成、API、 UI组件等等功能的应用程序模块。模块化架构的最佳实践就是按功能的划分创建相应的模块实现的服务必要时可以把模块发布到nuget由其他模块安装组合成新的服务或单体应用。这样就可以复用现有的模块功能快速的交付产品告别996。二、模块化架构的最佳实践说明这部分内容全部来自于模块化架构最佳实践 约定有兴趣的朋友可以去官方文档查看。如果已经很熟悉ABP分层了可以直接阅读第三部分。1、解决方案结构为每个模块创建一个单独的解决方案。将解决方案命名为CompanyName.ModuleName。一个模块做为分层项目开发因为它有几个包(项目)是相互关联的。每个包都有自己的模块定义文件,并显式声明所依赖的包/模块的依赖关系。2、模块分层和包之间的关系下面展示了一个分层良好的模块中的包以及它们之间的依赖关系:领域层将领域层划分为两个项目Domain.Shared 包(项目) 命名为CompanyName.ModuleName.Domain.Shared,包含常量,枚举和其他类型它不能包含实体、存储库、域服务或任何其他业务对象。可以安全地与模块中的所有层使用。此包也可以与第三方客户端使用。Domain 包(项目) 命名为CompanyName.ModuleName.Domain包含实体、仓储接口、领域服务接口及其实现和其他领域对象。Domain 包依赖于 Domain.Shared 包。应用服务层将应用服务层划分为两个项目:Application.Contracts 包(项目) 命名为CompanyName.ModuleName.Application.Contracts,包含应用服务接口和相关的数据传输对象(DTO)。Application contract 包依赖于 Domain.Shared 包。Application 包(项目)命名为CompanyName.ModuleName.Application,包含应用服务实现。Application 包依赖于 Domain 包和 Application.Contracts 包。基础设施层为每个orm/数据库集成创建一个独立的集成包比如Entity Framework Core 和 MongoDB。例如创建一个抽象Entity Framework Core集成的CompanyName.ModuleName.EntityFrameworkCore 包。ORM 集成包依赖于 Domain 包。不推荐依赖于orm/数据库集成包中的其他层.为每个主要的库创建一个独立的集成包, 在不影响其他包的情况下可以被另一个库替换.HTTP 层创建命名为CompanyName.ModuleName.HttpApi的HTTP API包为模块开发REST风格的HTTP API。HTTP API 包只依赖于 Application.Contracts 包。不要依赖 Application 包。为每个应用服务创建一个Controller (通常通过实现其接口)。这些控制器使用应用服务接口来委托操作。它根据需要配置路由HTTP方法和其他与Web相关的东西。创建一个为HTTP API包提供客户端服务的HTTP API Client包它的命名为Companyname.ModuleName.HttpApi.Client。这些客户端服务将应用服务接口实现远程端点的客户端。HTTP API Client包仅依赖于 Application.Contracts包。推荐使用ABP框架提供的动态代理HTTP C客户端的功能。Web 层创建命名为CompanyName.ModuleName.Web的Web包。包含页面、视图、脚本、样式、图像和其他UI组件。Web包仅依赖于HttpApi包。三、实现模块化架构的最佳实践开发环境Mac Visual Studio CodeSDKdotnet core 3.1数据库PostgreSQL创建项目文件夹然后进入改文件夹的命令目录执行以下命令创建项目在上一篇文章中引入的是Volo.Abp.Identity的包现在改用Volo.Abp.DDD的包更简洁。/**创建解决方案**/ dotnet new sln /**创建模块分层**/ dotnet new classlib -o src/Lemon.Account.Domain.Shared dotnet new classlib -o src/Lemon.Account.Domain dotnet new classlib -o src/Lemon.Account.EntityFrameworkCore dotnet new classlib -o src/Lemon.Account.EntityFrameworkCore.DbMigrations dotnet new classlib -o src/Lemon.Account.Application.Contracts dotnet new classlib -o src/Lemon.Account.Application dotnet new classlib -o src/Lemon.Account.HttpApi dotnet new classlib -o src/Lemon.Account.HttpApi.Client dotnet new web -o src/Lemon.Account.Host/**加入解决方案**/ dotnet sln Lemon.Account.sln add src/Lemon.Account.Domain.Shared dotnet sln Lemon.Account.sln add src/Lemon.Account.Domain dotnet sln Lemon.Account.sln add src/Lemon.Account.EntityFrameworkCore dotnet sln Lemon.Account.sln add src/Lemon.Account.EntityFrameworkCore.DbMigrations dotnet sln Lemon.Account.sln add src/Lemon.Account.Application.Contracts dotnet sln Lemon.Account.sln add src/Lemon.Account.Application dotnet sln Lemon.Account.sln add src/Lemon.Account.HttpApi dotnet sln Lemon.Account.sln add src/Lemon.Account.HttpApi.Client dotnet sln Lemon.Account.sln add src/Lemon.Account.Host/**分层间互相引用**/ dotnet add src/Lemon.Account.Domain/Lemon.Account.Domain.csproj reference src/Lemon.Account.Domain.Shared/Lemon.Account.Domain.Shared.csproj dotnet add src/Lemon.Account.EntityFrameworkCore/Lemon.Account.EntityFrameworkCore.csproj reference src/Lemon.Account.Domain/Lemon.Account.Domain.csproj dotnet add src/Lemon.Account.EntityFrameworkCore.DbMigrations/Lemon.Account.EntityFrameworkCore.DbMigrations.csproj reference src/Lemon.Account.EntityFrameworkCore/Lemon.Account.EntityFrameworkCore.csproj dotnet add src/Lemon.Account.Application/Lemon.Account.Application.csproj reference src/Lemon.Account.Application.Contracts/Lemon.Account.Application.Contracts.csproj dotnet add src/Lemon.Account.Application/Lemon.Account.Application.csproj reference src/Lemon.Account.Domain/Lemon.Account.Domain.csproj dotnet add src/Lemon.Account.HttpApi/Lemon.Account.HttpApi.csproj reference src/Lemon.Account.Application.Contracts/Lemon.Account.Application.Contracts.csproj dotnet add src/Lemon.Account.Host/Lemon.Account.Host.csproj reference src/Lemon.Account.EntityFrameworkCore.DbMigrations/Lemon.Account.EntityFrameworkCore.DbMigrations.csproj dotnet add src/Lemon.Account.Host/Lemon.Account.Host.csproj reference src/Lemon.Account.Application/Lemon.Account.Application.csproj dotnet add src/Lemon.Account.Host/Lemon.Account.Host.csproj reference src/Lemon.Account.HttpApi/Lemon.Account.HttpApi.csproj/**添加nuget依赖包**/ dotnet add src/Lemon.Account.Domain.Shared/Lemon.Account.Domain.Shared.csproj package Volo.Abp.Validation dotnet add src/Lemon.Account.Domain/Lemon.Account.Domain.csproj package Volo.Abp.Ddd.Domain dotnet add src/Lemon.Account.Domain/Lemon.Account.Domain.csproj package Lemon.Commondotnet add src/Lemon.Account.EntityFrameworkCore/Lemon.Account.EntityFrameworkCore.csproj package Volo.Abp.EntityFrameworkCore dotnet add src/Lemon.Account.EntityFrameworkCore/Lemon.Account.EntityFrameworkCore.csproj package Volo.Abp.EntityFrameworkCore.PostgreSqldotnet add src/Lemon.Account.EntityFrameworkCore.DbMigrations/Lemon.Account.EntityFrameworkCore.DbMigrations.csproj package Volo.Abp.EntityFrameworkCore dotnet add src/Lemon.Account.EntityFrameworkCore.DbMigrations/Lemon.Account.EntityFrameworkCore.DbMigrations.csproj package Volo.Abp.EntityFrameworkCore.PostgreSql dotnet add src/Lemon.Account.EntityFrameworkCore.DbMigrations/Lemon.Account.EntityFrameworkCore.DbMigrations.csproj package Microsoft.EntityFrameworkCore.Designdotnet add src/Lemon.Account.Application.Contracts/Lemon.Account.Application.Contracts.csproj package IdentityModel dotnet add src/Lemon.Account.Application.Contracts/Lemon.Account.Application.Contracts.csproj package Volo.Abp.Ddd.Application.Contractsdotnet add src/Lemon.Account.Application/Lemon.Account.Application.csproj package Volo.Abp.Ddd.Application dotnet add src/Lemon.Account.Application/Lemon.Account.Application.csproj package Volo.Abp.AutoMapperdotnet add src/Lemon.Account.HttpApi/Lemon.Account.HttpApi.csproj package Volo.Abp.AspNetCore.Mvcdotnet add src/Lemon.Account.Host/Lemon.Account.Host.csproj package Volo.Abp.AspNetCore.Mvc dotnet add src/Lemon.Account.Host/Lemon.Account.Host.csproj package Swashbuckle.AspNetCore dotnet add src/Lemon.Account.Host/Lemon.Account.Host.csproj package Microsoft.AspNetCore.DataProtection.StackExchangeRedis dotnet add src/Lemon.Account.Host/Lemon.Account.Host.csproj package Microsoft.Extensions.Caching.StackExchangeRedis dotnet add src/Lemon.Account.Host/Lemon.Account.Host.csproj package Serilog.AspNetCore dotnet add src/Lemon.Account.Host/Lemon.Account.Host.csproj package Serilog.Settings.Configuration dotnet add src/Lemon.Account.Host/Lemon.Account.Host.csproj package Serilog.Sinks.Async dotnet add src/Lemon.Account.Host/Lemon.Account.Host.csproj package Serilog.Sinks.File dotnet add src/Lemon.Account.Host/Lemon.Account.Host.csproj package Volo.Abp.AspNetCore.Serilog dotnet add src/Lemon.Account.Host/Lemon.Account.Host.csproj package Volo.Abp.Autofac dotnet add src/Lemon.Account.Host/Lemon.Account.Host.csproj package IdentityServer4.AccessTokenValidation dotnet add src/Lemon.Account.Host/Lemon.Account.Host.csproj reference src/Lemon.Account.EntityFrameworkCore.DbMigrations/Lemon.Account.EntityFrameworkCore.DbMigrations.csproj实现领域层在Domain创建实体类及其约束关联具体代码请看UserData类此处不再详细说明。实现基础设施层在EntityFrameworkCore创建AccountDbContext类和LemonAccountDbContextModelCreatingExtensions类。请特别关注LemonAccountDbContextModelCreatingExtensions类主要是用来定义实体在数据库表中的字段属性。实现应用服务层实现httpapi用swagger调试接口进入Host目录执行命令dotnet watch run服务启动成功在浏览器打开链接http://localhost:5000/swagger/index.html开始调试账号注册和验证接口。结果如下四、模块化架构的最佳实践的好处使用模块化架构的好处有几点可以方便的更换模块比如我现在用的数据库是PostgreSQL如果想要更换成MySQL只要以EntityFrameworkCore层为基础新增一个MySQL连接库就可以在不改变业务逻辑的前提下快速的切换数据库。dotnet new classlib -o src/Lemon.Account.EntityFrameworkCore.MySQL dotnet new classlib -o src/Lemon.Account.EntityFrameworkCore.MySQL.DbMigrations dotnet sln Lemon.Account.sln add src/Lemon.Account.EntityFrameworkCore.MySQL dotnet sln Lemon.Account.sln add src/Lemon.Account.EntityFrameworkCore.MySQL.DbMigrationsdotnet add src/Lemon.Account.EntityFrameworkCore.MySQL/Lemon.Account.EntityFrameworkCore.MySQL.csproj reference src/Lemon.Account.Domain/Lemon.Account.Domain.csproj dotnet add src/Lemon.Account.EntityFrameworkCore.MySQL.DbMigrations/Lemon.Account.EntityFrameworkCore.MySQL.DbMigrations.csproj reference src/Lemon.Account.EntityFrameworkCore.MySQL/Lemon.Account.EntityFrameworkCore.MySQL.csprojdotnet add src/Lemon.Account.EntityFrameworkCore.MySQL/Lemon.Account.EntityFrameworkCore.MySQL.csproj package Volo.Abp.EntityFrameworkCore.MySQLdotnet add src/Lemon.Account.EntityFrameworkCore.MySQL.DbMigrations/Lemon.Account.EntityFrameworkCore.MySQL.DbMigrations.csproj package Microsoft.EntityFrameworkCore.Design 最后再修改ConnectionStrings default为mysql的连接修改LemonAccountHostModule的依赖项LemonAccountEntityFrameworkCoreDbMigrationsModule为MySQL单体应用和微服务无缝切换模块开发完成后一般当作微服务来部署或者把模块发布到nuget在单体应用的各个分层中引入模块多个模块在单体应用中的应用就构成了一个完整系统服务。模块复用由于模块是发布到nuget的所以如果有新的项目需要用到相同功能的可以直接从nuget引入安装无需重复开发或者复制代码。自动API控制器动态 C# API 客户端GiHub地址https://github.com/huangbenq/abp-samples参考文档模块化https://docs.abp.io/zh-Hans/abp/latest/Module-Development-Basics最佳实践https://docs.abp.io/zh-Hans/abp/latest/Best-Practices/Index自动API控制器https://docs.abp.io/zh-Hans/abp/latest/API/Auto-API-Controllers
http://www.huolong8.cn/news/59698/

相关文章:

  • 质量好网站建设费用鞍山信息港首页
  • 转运公司网站制作广东商城网站建设
  • 百度没有投放的网站点击网站下的源代码和自己做的区别
  • 网站建网站建设企业wordpress容器
  • 网站建设必备南昌网站建设行业现状
  • 响应式网站设计软件西安 北郊网站建设
  • 厦门某某公司网站网站建设创建
  • 自己做的网站如何上传文件蒙自做网站的公司
  • 网站后台不能排版外贸网站建站h
  • 企石东莞网站建设深圳公司设计网站
  • 石家庄网站建设电商织梦wap网站模板
  • 杨凌规划建设局网站深圳市罗湖区住房和建设局官网
  • 唐山网站制作广告公司营销策划方案
  • 西宁手机微网站z怎么做优惠券网站
  • 网站实名认证需要什么资料dz论坛怎么做视频网站吗
  • html设计网站上海手机网站案例
  • 做网站界面多少钱网页游戏制作工具
  • 天津电子商务网站小程序和网站建设需要多钱
  • 昆明网站托管企业wordpress文章链接带问号
  • 新手建站教程报价单适合用于网站开发的工具
  • 专门做评测的网站有哪些网站怎样在360做优化
  • 中小企业网站制作费用开发公司年终总结
  • 免费的cms视频网站做公司网站需要准备什么科目
  • 网站建设中主页源码wordpress怎么换语言
  • 网站建设战略伙伴京紫元年深圳网站建设
  • 南通影楼网站建设个人新闻类网站模板
  • 没有网站做cpa购物网站建设成本
  • 怎样大力开发公司网站建设wordpress 4.5.2 编辑器插件
  • 网站建设的课程都需要什么网站建设数据库实训体会
  • 天河岗顶棠下上社网站建设备份核验单时网站域名