建立旅游网站的目的大连做网站价格

diannao/2026/1/18 3:40:50/文章来源:
建立旅游网站的目的,大连做网站价格,厦门网站建设公司怎么选,网站建设的电话在上一篇文章《手把手教你用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.mzph.cn/diannao/90838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

后台管理系统网站模板手机上做网站

其实,官方文档也说的很清楚了。主要贴一下我遇见的问题。环境:LNMP(LAMP没试过,有兴趣的同学可以试试,然后发出来)PHP5.3以上版本、php-mbstring模块、php-pdo模块、mysql数据库克隆或者下载代码:https://github.com/s…

药品推荐网站模板浉河网站建设

###用sh 用sh如果你希望使用 Shell 脚本来实现同样的功能,你可以编写一个简单的 Shell 脚本来执行。以下是一个示例 Shell 脚本,它可以读取 JSON 文件,并将每个章节保存到单独的文本文件中: #!/bin/bash# JSON 文件路径 json_fi…

建设银行网上银行网站儿童手工制作

【分享成果,随喜正能量】人皆知以食愈饥,莫知以学愈愚,生命中所有的不期而遇都是你努力的惊喜.人越纯粹,就越能感受到美。大江、大河、大海、大山、大自然,这些风景从来都不会受“属于谁”的污染,人人都感受到它们的美…

网站模板建站东莞排名seo网站关键词优化

解题思路 该节点的父节点的父节点是偶数,则sumsum该节点, 这道题的思路可以等价为该节点为偶数,并且子节点的子节点存在, 则sumsum该节点的子节点的子节点。 相关代码 /*** Definition for a binary tree node.* public class …

唐山网站开发兰州市生态建设管理局网站

PyTorch框架学习一——PyTorch的安装(CPU版本)PyTorch简介PyTorch的安装(CPU版)机器学习/深度学习领域的学习都是需要理论和实践相结合的,而它们的实践都需要借助于一个框架来实现,PyTorch在学术界目前处于…

ppt模板网站源码网络设计工资有多少

一、关于CanalSharpCanalSharp 是阿里巴巴开源项目 Canal 的 .NET 客户端。为 .NET 开发者提供一个更友好的使用 Canal 的方式。Canal 是mysql数据库binlog的增量订阅&消费组件。CanalSharp 是 Canal 的 .NET 客户端,它与 Canal 是采用的Socket来进行通信的&…

购物网站首页界面设计软装设计公司加盟

序言CPU 使用率是最直观和最常用的系统性能指标,更是我们在排查性能问题时,通常会关注的第一个指标。节拍率为了维护 CPU 时间,Linux 通过事先定义的节拍率(内核中表示为 HZ),触发时间中断,并使…

网站 cms 免费免费手游平台app

导语: 比特币(Bitcoin),这个充满神秘色彩的数字货币,自诞生以来便成为各界瞩目的焦点。它背后所蕴含的Mining机制、禁令背后的深层逻辑以及市场的风云变幻,都让人欲罢不能。今天,我们将深入挖掘比特币的每一个角落&…

泉州网站建设开发泉州网站建设推广

网络编程场景 自己是客户端站在5栋楼前,自己要找到5栋楼中的一座并进入某一间房间,这时第二座楼上有人在用汉语(tcp/udp)说话,我的ip地址(楼号)是…,我的端口号(房间号)是…

网站登记查询专业的网站建设公哪家专业

自京东和唯品会转了Java,.NET就一直缺乏高并发电商案例,.NET5能做高并发电商吗?必须的,别停留在.NET Framework的旧印象了!这里为大家分享一家上市公司的项目案例,纯.NET5电商平台,轻松承接双11…

网站包括什么网站建设怎么估算费用和报价

来源:AI科技评论作者:Mr Bear编辑:青暮2021 年 10 月 13 日,来自麻省理工学院、加州大学伯克利分校、伊利诺伊大学香槟分校、华盛顿大学、帝国理工学院的六名顶级人工智能科学家、计算机视觉科学家在 ICCV 2021 大会期间进行了题为…

有什么做兼职的好网站什么软件可以做dj视频网站

问题:今天在整理eclipse项目的时候web.xml报错 解决方法:在头文件加入 http://www.springmodules.org/schema/cache/springmodules-cache.xsd 即可解决

祥符网站建设沈阳公司网站

在数字世界中,API就如同城市中的道路,连接着各种服务和数据。然而,传统的API(如RESTful)虽然功不可没,但随着技术复杂性和需求多样性不断攀升,它们显露出的局限性也呼唤着新的可能出现。此时&am…

贵池区城乡与住房建设网站网站认证要钱

IT之家3月1日消息 此前,微软公布了全新的Office图标,微软Office 365在线网页版在2月15日开始已经全面更新新版图标,而桌面版Office 365现在也陆续开始测试新版图标。目前微软Office Dogfood通道上推送的开发者预览版本已经在2月27日开始测试O…

本地电脑做网站宁夏水利建设工程网站

一、形参带默认值的函数 二、inline内联函数 内联函数是一种在编译器处理时,将函数的实际代码插入到调用处的方法。通常,函数调用涉及一定的开销,包括保存和恢复调用现场、跳转到函数的代码位置等。而内联函数通过在调用处直接插入函数的代码…

深圳营销网站极简wordpress

文章目录命令介绍选项参数示例(一)统计当前目录下的所有文件的行数(二)统计当前目录下的文件总数(三)显示某个文件的行数(四)显示某个文件的行数、单词数、字节数(五&…

做电子商务网站的意义深圳龙岗区邮编

数据异常值的过滤在数据分析中,经常需要检测数据结构中的异常值。我们还是举个例子,先来创建一个包含三列的DataFrame对象,每一列都包含1000个随机数。可以用describe( )函数查看每一列的描述性统计量。例如,你可以会将比标准差大…

如何做一个手机网页seo长沙

2019独角兽企业重金招聘Python工程师标准>>> Xamarin XAML语言教程通过ProgressTo方法对进度条设置 在ProgressBar中定义了一个ProgressTo方法,此方法也可以用来对进度条当前的进行进行设置,ProgressTo与Progress属性的不同之处在于ProgressT…

网站解析密码wordpress修改自适应

目录 前言 1.局域网协议标准 介质访问控制方法 以太网 2.MAC 寻址 3.以太网帧分析 以太网帧格式 4.局域网技术 5.PPP 协议 背景 PPP的基本组成 PPP帧格式 PPP的工作流程 PPP的特点 总结 前言 在 TCP/IP 协议栈中,网络接口层(或数据链路层&…

wordpress响应式网站模板wordpress 前后台都进不去

写在问题前面 下面的一系列问题,是为了要实现问题中所提到的内容而提出的。如果有感兴趣的朋友,让我们一起学习进步。同时,以下代码、架构和实现都是我计划想要完成的,如果有任何一方面有基础又愿意一起实现它们的请留言或私信一…