首页 科技正文

环球ug电脑版下载:【asp.net core 系列】6 实战之 一个项目的完整结构

admin 科技 2020-06-07 44 0

0. 前言

在《asp.net core 系列》之前的几篇文章中,我们简朴领会了路由、控制器以及视图的关系以及静态资源的引入,让我们对于asp.net core mvc项目有了基本的熟悉。不外,这些并不是 asp.net core mvc项目的全部内容,剩下的内容我将连系实战项目为人人解说其中的知识。现在,就让我们最先吧。

1. 项目构建

抛开之前的项目,现在随着我重新建立一个项目,第一步依旧是先建立一个解决方案:

dotnet new sln --name Template

我先先容一下这个项目(指整个项目,不是单独的asp.net core 应用),这是一个后台治理的模板应用,提供了常见后台系统(治理员端)的功效,包罗员工治理、部门治理、角色治理等功效。

现在回到项目中,通常一个项目需要一个模子层,一个数据提供层以及web展示层。然后,我们依次建立 Data、Domain、Web 三个项目,其中Data和Domain 是 classlib,Web是mvc项目。

# 确保当前目录与 Template.sln 处于相同的目录
dotnet new classlib --name Data
dotnet new classlib --name Domain
dotnet new mvc --name Web

添加三个项目到解决方案中:

dotnet sln add Data
dotnet sln add Domain
dotnet sln add Web

由于Data 中存放着模子层,以是需要其他项目对它有一个引用:

cd Domain
dotnet add reference ../Data
cd ../Web
dotnet add reference ../Data

固然,现实开发中我们应当另有一个Service层,这一层用来存放营业代码,削减控制器里不必要的营业代码。那么继续:

# 回到项目的根目录
cd ..
dotnet new classlib --name Service
dotnet sln add Service

然后添加Service的引用:

cd Service
dotnet add reference ../Data

将 Service的引用添加到Web里:

cd ../Web
dotnet add reference ../Service

现在一个大型工程基本都是面向接口编程,几个要害层应当都是接口层,我们现实上还缺少Domain的实现层和Service的实现层。

cd ..
dotnet new classlib --name Domain.Implements
dotnet new classlib --name Service.Implements

在对应的实现层中,引入它们实现的接口层,并引入Data:

cd Domain.Implements
dotnet add reference ../Data
dotnet add reference ../Domain
cd ../Service.Implements
dotnet add reference ../Data
dotnet add reference ../Domain
dotnet add reference ../Service

这里在Service的实现层添加Domain接口层的引用,而不是实现层的引用。这是由于面向接口编程,我们需要对Service实现层隐藏Domain的实现,以是对于Service的实现层来说,不需要体贴Domain层的实现逻辑。

在Web中添加新建的两个实现层的引用:

cd ../Web
dotnet add reference ../Domain.Implements
dotnet add reference ../Service.Implements

添加这两个实现层到解决方案中:

cd ..
dotnet sln add Domain.Implements
dotnet sln add Service.Implements

下图是到目前为止的项目结构图:

整体而言,Data是各个层之间的数据流通依据,以是各个项目都依赖于此项目,各个接口层的实现层都只对Web可见,其他各层现实上并不清晰详细实现。

隐藏实现层有什么利益呢?

  • 挪用方不知道实现方的逻辑,制止挪用方对特定实现的依赖
  • 有利于团队协作,有的团队是针对模块划分,有的是针对分层划分,无论哪种,使用接口都是一个好的选择
  • 有利于后期优化,可以很利便的切换实现层,而不用重新编译过多的代码

固然,并不只有这些利益,不外这样有一个坏处,在web层挪用service层时会更繁琐,不外这也不是不能解决的,后续的内容中会为人人先容若何解决这个烦恼。

2. 项目弥补

通常情况下,一个完整的项目还会有一个工具类项目和一个测试项目。以是,继续添加以下项目:

dotnet new classlib --name Utils

Utils 示意工具类,通常一个项目中工具类会比较多,以是就抽成了一个项目,单独列出来。

添加测试项目:

dotnet new nunit --name Test

这里使用的是nunit 3测试框架,固然另有另一个是xunit测试框架。

添加两个项目到解决方案里:

dotnet sln add Utils
dotnet sln add Test

3. 总结

本章内容旨在通过建立项目,让人人领会现实开发中项目的层级计划头脑,这并不代表我的就是最优的,只是这是我总结出来相对利便的层级关系。这里并没有解说若何通过Visual Studio或者Rider建立这样的一个项目,我希望大伙能够自己试试。

好了,希望人人能建立好项目,固然了后期我会给人人提供这个项目的源码的,地址暂时保密哦。

更多内容烦请关注我的博客《高先生小屋》

,

欧博注册网址

www.cx11yx.cn欢迎进入欧博网址(Allbet Gaming),欧博网址开放会员注册、代理开户、电脑客户端下载、苹果安卓下载等业务。

版权声明

本文仅代表作者观点,
不代表本站Sunbet的立场。
本文系作者授权发表,未经许可,不得转载。

评论