其他分享
首页 > 其他分享> > 仓储三层实践:01项目起航

仓储三层实践:01项目起航

作者:互联网

一、搭建这个项目的原因和目的

  1. 突然感觉我个人太没有韧性了,写博客老是坚持不到两周没了草草结束,而且还爱找各种理由:没时间(虽然时间比较紧,但是就是不肯去挤)。
  2. 心太大,老是想大而全,不脚踏实地,都是空中楼阁,因此想从基础搭建。
  3. 想形成一个工具包,慢慢不断完善,方便自己简单项目的使用。
  4. 温故而知新嘛,写出来有错漏还能给网友鞭笞,个人不怕错,不怕骂,有争议才有进步,但是请别侮辱我,虽然水平有限。

二、这个项目的目标或者说结果

  1. 最起码实现:一个简单带权限控制的webapi(这些通用性强的,做个模板)
  2. 很有肯能实现:后台管理界面(吐槽:完整的后台管理系统烂大街,你还搞这?)
  3. 如果有可能还会实现:搭建一个前台界面
  4. 希望以上都能实现,然后集合成一个项目(这个全网目前都没人这么干,特么前后端分离还搞集合,原因是省时省力)

三、技术栈简介

  1. asp.net core webapi(.net版本直接5.0起步,后期如果升级再回来改)
  2. Microsoft.EntityFrameworkCore 5.x(直接微软的efcore框架,方便切换数据库,模板使用Sqlite数据库)
  3. swagger(api项目必备啊,不想写文档啊,方便接入啊)
  4. autofac(依赖注入框架还是要的)
  5. automapper(类型转换用)
  6. newtonsoft.json(json序列化工具)

前端的话不一定实现,先考虑把,到时候有时间来个react全家桶或者vue全家桶,不立flag,不然老是心太大,不能脚踏实地

四、项目搭建(我这里目录比较深,源码托管直接托管解决方案项目)

备注:我用的是windows10系统,但是我安装了git bash(安装git的时候勾选的linux风格),所以我cmd能用大部分linux命令,很简单就是环境变量Path添加两个值C:\Program Files\Git\mingw64\binC:\Program Files\Git\usr\bin

# 在要创建模板的目录打开cmd,个人不习惯powershell,毕竟直接在目录上输入三个字母和十个字母还是有区别的
# 创建模板列表文件夹,以后不止一个模板,我项目是准备打包成模板的
md temple
# 进入模板列表文件夹
cd temple
# 创建第一个模板文件夹SimpleApiTemple
md SimpleApiTemple
# 进入第一个模板文件夹SimpleApiTemple
cd SimpleApiTemple
# 创建解决方案文件夹content,当然下面几步也可以用visual studio等IDE工具去创建整个项目,我嫌太慢,直接命令
md context
# 进入解决方案文件夹
cd context
# 创建解决方案,请确保安装.net core sdk(visual studio 2019最新版安装web开发就自带了,没安装的也可以去微软官网下载安装)
dotnet new sln -n Nest
# 开始创建仓储三层
# webapi层,我的skd是.net 5(.net core 3.x的下一个版本就是.net 5,哈哈没有core了)
dotnet new webapi -n Nest.WebApi
# 业务访问层,我就不叫BLL了
dotnet new classlib -n Nest.Application
# 创建数据访问层,不对叫基础设施层好点,算了直接核心层
dotnet new classlib -n Nest.Core
# 把项目都加到解决方案里面,linux下记得把反斜杠改为斜杠
dotnet sln add .\Nest.WebApi\Nest.WebApi.csproj
dotnet sln add .\Nest.Application\Nest.Application.csproj
dotnet sln add .\Nest.Core\Nest.Core.csproj

五、添加项目依赖

  1. visual studio(后面全部简称vs)打开Nest.sln解决方案
  2. Nest.WebApi引用Nest.Application,直接双击Nest.WebApi项目名,在Project节点下添加ItemGourp节点,再在添加的ItemGroup节点下添加项目引用节点ProjectReference属性为被引用项目的csproj地址
  3. Nest.Application引用Nest.Core,操作同上
  4. 开始从nuget安装依赖包,菜单栏找到工具->Nuget包管理器->程序包管理控制台当然也可以直接点下面的管理解决方案的nuget程序包去安装,这里直接控制台安装
  5. 注意选择对应的项目
  6. 默认项目选择Nest.Core
Install-Package Microsoft.EntityFrameworkCore.Sqlite
Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson
  1. 默认项目选择Application
Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection
  1. 默认项目选择Nest.WebApi
Install-Package Autofac.Extensions.DependencyInjection
Install-Package Autofac.Extras.DynamicProxy

最终三个项目的csproj后缀的项目文件如下(swagger在新建.net5的webapi已经自带):

  1. Nest.Core
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.6" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.6" />
  </ItemGroup>

</Project>
  1. Application
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.1.1" />
  </ItemGroup>

</Project>
  1. Nest.WebApi
<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="7.1.0" />
    <PackageReference Include="Autofac.Extras.DynamicProxy" Version="6.0.0" />
    <PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.3" />
  </ItemGroup>

</Project>

现在把Nest.WebApi运行测试一下,当然个人比较喜欢kestrel方式启动,我会删了iis的配置,我的Nest.WebApi项目下Properties文件夹的launchSettings.json文件内容如下

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "profiles": {
    "Nest.WebApi": {
      "commandName": "Project",
      "dotnetRunMessages": "true",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

六、加入git版本控制,上传码云(其它的后续再说)

  1. 在码云新建个空仓库,仓库名称SimpleApiTemple,选择开源,直接创建,然后再已有仓库一栏中,复制下面第二行origin后面的地址
  2. vs菜单点击git(新版本vs才有,老版本在团队资源管理器,建议更新)->创建git存储库,选择远程仓库,把上面的地址黏贴到远程仓库后面的RemoteUrl,点击创建推送,仓库地址:https://gitee.com/shuisen/simple-api-temple.git

开篇总算完结,这里解释下为啥不直接git init去创建git版本控制,因为你要自己去写.gitignore忽略文件去忽略比如生成的dll啊什么的,我最不喜欢svn的地方就是得自己管理忽略。

下篇预告:仓储三层实践:02swagger配置

标签:WebApi,01,项目,Nest,起航,仓储,dotnet,git,模板
来源: https://www.cnblogs.com/ShuiSen/p/14855247.html