zoukankan      html  css  js  c++  java
  • 仓储三层实践: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 FilesGitmingw64inC:Program FilesGitusrin

    # 在要创建模板的目录打开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.WebApiNest.WebApi.csproj
    dotnet sln add .Nest.ApplicationNest.Application.csproj
    dotnet sln add .Nest.CoreNest.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>
    
      <ItemGroup>
        <ProjectReference Include="..Nest.CoreNest.Core.csproj" />
      </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>
    
      <ItemGroup>
        <ProjectReference Include="..Nest.ApplicationNest.Application.csproj" />
      </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配置注释文件

  • 相关阅读:
    a链接获取方法
    调用百度地图API搜索地名和关键词
    页面定时跳转
    amazeui 上传文件
    数组删除多个元素的方法
    synology git 服务器问题处理
    公司和家里代码文件同步方案: (git和dropbox实现)
    前端项目, 每次运行都需要输入 sudo 的解决方法
    git revert 让提交不再害怕
    建立自己的键盘栈(shortcutkeyStack)
  • 原文地址:https://www.cnblogs.com/ShuiSen/p/14855247.html
Copyright © 2011-2022 走看看