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

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

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

不过,这些并不是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创建这样的一个项目,我希望大伙能够自己试试。

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

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

,
    推荐阅读
  • 华为狼性故事(华为的狼性文化)

    至此,狼性文化成了对华为全体员工的行为要求。对组织来说,责任结果一般指经济成果;对个人而言,责任结果既可能是经济成果,也可能是履责承诺。某企业计划召开中层以上管理者参加的业务研讨会,为期一天。前置管理意味着要对未来可能出现的情形做出预判,提出问题,提前组织资源、制定预案。领导部分的关键是Owner意识。控制的目的是及时发现和纠正偏差,让事情保持在正常轨道,掌握主动,避免被动,防患于未然。

  • 最强板块最新消息(上海3年来成交量最为坚挺的)

    赵巷将从以奥特莱斯、米格天地、吉盛伟邦三大百万规模商场为代表的长三角购物目的地全面转型为虹桥科创中心。新规划罗店城镇圈将大力改善交通、生态状况,并加速人口向罗店镇聚集。购物方面也是群雄争霸,包括上海陆家嘴中心LMALL、正大广场、国金中心商场等大型品牌商业体满足中高端人群的需求。三林身为中环外板块,3站换乘范围拥有5大轨交的配置,已在浦东问鼎。

  • 罗大佑最好听的十首歌现场版(罗大佑的这首歌火了34年)

    罗大佑最好听的十首歌现场版?韩寒上传了一张手写的四句歌词,并一直置顶。隽永的歌词,来自一首经典的歌曲《明天会更好》。很多人大概是被用强行记忆的方式,“有感情”地学会了这首经久不衰的《明天会更好》吧。学校空地上穿着整齐划一服装的小朋友,搬着小板凳坐在事前就指定好的位置上。大部分同学脸上写着了今天下午不用上课的兴奋,以及一会儿不要出错的紧张。

  • 就业创业证有什么用(了解一下)

    就业创业证有什么用?除了政策优惠,《就业创业证》还是领取失业待遇的主要凭证之一。《就业创业证》记载的信息在全国范围内有效,实行免费发放。单位就业人员凭《就业创业证》登记的就业信息,作为其与用人单位劳动关系的有效凭证。当发生劳动纠纷时,《就业创业证》就成为您维护劳动权益的有力证据。

  • 梦见猛兽(梦见猛兽的意思)

    梦见猛兽从事灯光照明,影视传媒等相关行业者,火克金为财,乃是财运丰厚之人,事业可得,他人相助。求学者得此梦,金水两旺,乃是聪明伶俐之人,多有过人之处。学业可得提升,从事理科成绩者,更胜一筹,可名列前茅。梦见猛兽,得此梦,五行主金,乃庚金之象征。主事业中多有他人从中作祟,财运难以求得之征兆,因金钱之事与他人间互相纠缠,则彼此事业皆有不利之意,秋天梦之吉利,春天梦之不吉利。

  • 变叶榕介绍(变叶榕的简介)

    接下来我们就一起去研究一下吧!变叶榕介绍变叶榕是桑科榕属的植物。分布在越南、老挝以及中国大陆的浙江、贵州、云南、湖南、广东、江西、广西、福建等地,生长于海拔200米至1,800米的地区,多生在溪边林下潮湿处,已由人工引种栽培。形态特征:灌木或小乔木,光滑,高3-10米,树皮灰褐色;小枝节间短。瘦果表面有瘤体。花期12月至翌年6月。

  • 洗衣凝珠的膜是否溶于水?(洗衣凝珠的膜能不能溶于水?)

    接下来我们就一起去研究一下吧!洗衣凝珠的膜是一种PVA水溶性塑料薄膜,是一种多羟基聚合物,其主要成分是聚乙烯醇,PVA材料在常温无水环境下不溶解、不渗漏,在干燥环境下也不破裂,而遇水后可以短时间内溶解。洗衣凝珠专为机洗设计,操作简单,方便不脏手,小小一颗洗衣凝珠能洗一筒衣服,气味芬芳,且性质温和不伤衣物,凝珠遇水即溶无残留。

  • 拼多多平台介入对商家有什么影响 拼多多申请平台介入对店铺有影响吗

    拼多多平台介入对商家的影响有:如果商家店铺的近30天的介入订单数和介入率在一段时间内持续偏高的话,那么商家店铺就会被平台系统限制,比如移除资源位、禁止上资源位、移除广告、禁止上新等。