科百科
当前位置: 首页 范文大全

asp.netcore启动服务器上的服务(asp.netcore系列)

时间:2023-05-23 作者: 小编 阅读量: 2 栏目名: 范文大全

不过,这些并不是asp.netcoremvc项目的全部内容,剩下的内容我将结合实战项目为大家讲解其中的知识。然后,我们依次创建Data、Domain、Web三个项目,其中Data和Domain是classlib,Web是mvc项目。这是因为面向接口编程,我们需要对Service实现层隐藏Domain的实现,所以对于Service的实现层来说,不需要关心Domain层的实现逻辑。

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 Datadotnet new classlib --name Domaindotnet new mvc --name Web

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

dotnet sln add Datadotnet sln add Domaindotnet sln add Web

因为Data 中存放着模型层,所以需要其他项目对它有一个引用:

cd Domaindotnet add reference ../Datacd ../Webdotnet add reference ../Data

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

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

然后添加Service的引用:

cd Servicedotnet add reference ../Data

将 Service的引用添加到Web里:

cd ../Webdotnet add reference ../Service

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

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

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

cd Domain.Implementsdotnet add reference ../Datadotnet add reference ../Domaincd ../Service.Implementsdotnet add reference ../Datadotnet add reference ../Domaindotnet add reference ../Service

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

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

cd ../Webdotnet add reference ../Domain.Implementsdotnet add reference ../Service.Implements

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

cd ..dotnet sln add Domain.Implementsdotnet 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 Utilsdotnet sln add Test

3. 总结

本章内容旨在通过创建项目,让大家了解实际开发中项目的层级规划思想,这并不代表我的就是最优的,只是这是我总结出来相对方便的层级关系。这里并没有讲解如何通过Visual Studio或者Rider创建这样的一个项目,我希望大伙能够自己试试。

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

求关注,求点赞,求转发~~有啥可以评论哟

,
    推荐阅读
  • 香港女生愿意和内地谈恋爱吗(有一个香港女朋友是怎样一种体验)

    X并非典型的local女生形象,身高172cm,没有大鼻头和厚嘴唇,反而长相神似北方人。各自的成长背景、学生时代,对内地人和香港人的刻板印象,眼下在同一个城市感受到的大相径庭以及对未来的打算等等。X准备的生日惊喜可能很多人对内地男生跟香港女生交往这件事有误解,今天我就要来澄清一下。可是,在香港这样的城市,一睁眼就是账单,谁的生存压力不大?当中经历了我出国,她生病,分分合合,后来又在香港重逢一系列跌宕起伏的故事。

  • 樊笼讲的什么(樊笼主要讲的是什么内容)

    以下内容希望对你有帮助!樊笼讲的什么笼冢三部曲之二《樊笼》。宋毅为她构筑的金屋,苏倾却视为雀之笼冢。男主强取豪夺,心狠手黑,非好人。卿隐笔下的男主对女主是越得不到越想得到,女主总是在尽自己的力量与旧时代抗争,这篇文里面她应该算成功了。男主绝非善类,豪取强夺搞得自己动真心,女主很轴,但想明白之后就好好生活了,有女儿后的日子挺美好的。

  • 马岩松 建筑设计作品(学霸裘嘉毅醉心绿色建筑设计)

    大三时,裘嘉毅作为主力队员和其他6名同学一起参加了一个国际知名建筑协会组织的可持续建筑设计大赛。这次比赛,他们荣获一等奖,这是中国学生首次在此项国际比赛中折桂。英国皇家注册建筑设备工程师协会主席奖是全球两大最权威的屋宇设备标准的制定者之一,被认为是国际公认权威,裘嘉毅也成为首位获得此奖的中国人。

  • 哪些水果不能混合吃(水果相克的食物有哪些)

    哪些水果不能混合吃水果和萝卜不宜同食:可能诱发和导致甲状腺瘤。萝卜具有较高的营养价值和药用价值,水果也含大量维生素,但两者不能同时食用。因为萝卜被摄入人体后,会在体内产生一种叫“硫化氰盐”的物质,并很快代谢成硫氰酸;而柑橘、苹果、葡萄和梨等含大量植物色素的水果中有黄酮类物质,该物质在人体肠道内能被细菌分解转化成羟苯甲酸和阿魏酸,两者可加剧硫氰酸的抑制甲状腺作用,日久,可能诱发和导致甲状腺瘤。

  • 超级幻影猫2完美过关攻略(超级幻影猫2冰雪谷地怎么过4-6三星通关攻略)

    《超级幻影猫2》是一款“超级玛丽”风格的横版过关游戏,融入了许多独特的创新玩法,其中角色能够获得的特殊技能甚为有趣,关卡中无处不在的隐藏点和收集要素简直是要逼疯强迫症一样的存在。到底底部之后利用“白毛象”撞碎左边的冰墙,果断往左走,有一个宝箱。回到刚才冰冻小怪的地方,用冰把“?”爬上平台之后,白毛象上方会有个“?”,利用白毛象能顶掉,会触发金币隐藏点。跳上去之后爬墙,上边有金币隐藏点。

  • 山东临沂市有什么特产(藏在大集里的这些临沂特产)

    临沂,曾因一首《沂蒙山小调》而被广为知晓;如今,作为山东的“南大门”,对接长三角的重要门户,“好品山东产自临沂”的美名广泛传播。平邑金银花、苍山大蒜、蒙阴蜜桃……这些临沂特产不仅好吃又健康,还上榜了第一批“好品山东”品牌名单。9月8日,由中央广播电视总台和山东省人民政府联合举办的“好客山东好品山东”宣传推介活动在北京举行,快和我们一起来了解下这些产自临沂的山东好品吧!

  • 翡翠手镯与合成手镯的区别是什么意思(翡翠手镯与合成手镯分别在哪里)

    下面内容希望能帮助到你,我们来一起看看吧!翡翠手镯与合成手镯的区别是什么意思玉镯,一种理解为:和田玉,它属于软玉,密度,硬度,折射率,均低于翡翠。以和田玉来说,它由结构组成,带有云絮状结构特征。翡翠由晶体组成,在光线下有星星点点的反射光,称为翠性。是两者最明显的区别。

  • 认识的直接来源(π的来源你知道吗)

    圆周率π是数学中最著名的一个数。圆周率是圆周长与直径的比值。无论圆是大是小,它的值都是不会改变的。π的“传奇”,可以追溯到遥远的古代。将圆周率记为符号π确是在大数学家欧拉于1737年首次使用后,才逐渐被大家接受的通用记号。祖冲之在数学上的杰出成就,是关于圆周率的计算。祖冲之究竟用什么方法得出这一结果,现在无从考查。1706年英国的琼斯首先改用π表示圆周率,后来被数学家广泛接受,一直沿用至今。

  • 9款荣耀手机升级至emui8.0(荣耀手机福利来了)

    而升级至EMUI4.0后,可以拿起畅玩5X同时按住电源键或音量上键即可开启录屏功能。EMUI4.0除以上技能,还有指南针,学生模式等功能等你来畅玩!分享荣耀畅玩5X和小伙伴一起领糖吧!

  • 金士顿白色内存卡(金士顿推出全新Class)

    并且值得一题的是,这些出售的MicroSDXC卡提供终生保修。同时也有报道称,MicroSDHC/MicroSDXCClass10UHS-I是目前市场上销售的最小尺寸规格SD卡,为很多平板电脑、智能手机和相机提供丰富的可扩展选项。最重要的是该MicroSDXC卡具备防水、耐温、防震和防X光等特性,能在各种极端环境中使用。不过目前这一款MicroSDXC卡具体的售价与上市时间还没有正式公布,如果感兴趣的小伙伴可以多关注下。