在ABP框架中有一个约定,所有的领域服务都应该继承并实现IDomainService接口,在领域层Core创建某一个实体的领域服务类,继承并实现IDomainService接口。在ABP框架中,领域服务类的命名习惯一般时xxxManager。
namespace MyTestProject.ShoppingGoods
{
/// <summary>
/// 领域服务接口
/// </summary>
public interface IGoodsManager:IDomainService
{
//书写接口
}
}
namespace MyTestProject.ShoppingGoods
{
/// <summary>
/// 领域服务
/// </summary>
public class GoodsManager : DomainService, IGoodsManager
{
public GoodsManager()
{
} //实现接口
}
}
在AppService中将IGoodsManager 注入进去
namespace MyTestProject.ShoppingGoods
{
public class GoodssAppService : MyTestProjectAppServiceBase, IApplicationService
{
public readonly IGoodsManager _goodsManager; public GoodssAppService(IGoodsManager goodsManager)
{
_goodsManager = goodsManager;
}
}
}

上面的这种方式为,当在某个情况下,领域服务不仅要给appservice提供服务,也要向外部提供服务时,需要与上面的方式书写。当只是给appservice提供服务,使用下面的方式就OK了

namespace MyTestProject.ShoppingGoods
{
/// <summary>
/// 领域服务
/// </summary>
public class GoodsManager : DomainService
{
private readonly IRepository<Goods, Guid> _goodsRepository; public GoodsManager(IRepository<Goods, Guid> goodsRepository)
{
_goodsRepository = goodsRepository;
} //实现
public async Task<Guid> CreateAsync(Goods goods)
{
return await _goodsRepository.InsertAndGetIdAsync(goods);
}
}
}
在AppService中将GoodsManager 注入进去
namespace MyTestProject.ShoppingGoods
{
public class GoodssAppService : MyTestProjectAppServiceBase, IApplicationService
{
//public readonly IGoodsManager _goodsManager;
public readonly GoodsManager _goodsManager; public GoodssAppService(GoodsManager goodsManager)
{
_goodsManager = goodsManager;
}
}
}

ABP 领域服务层学习记录的更多相关文章

  1. ABP(现代ASP.NET样板开发框架)系列之10、ABP领域层——实体

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之10.ABP领域层——实体 ABP是“ASP.NET Boilerplate Project (ASP.NET样板 ...

  2. AndroidStudio学习记录

    AndroidStudio学习记录 1. 插件的使用. plugins.jetbrains.com插件网站. 2. 目录介绍: 1.Studio中有Project和Module的概念,前面说到Stud ...

  3. ABP领域层——实体

    ABP领域层——实体 基于DDD的现代ASP.NET开发框架--ABP系列之10.ABP领域层——实体 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的 ...

  4. Springboot学习记录1--概念介绍以及环境搭建

    摘要:springboot学习记录,环境搭建: 官方文档地址:https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/ht ...

  5. ABP领域层知识回顾之---实体

    标题:重温ABP领域层 1. 前言  最近一段时间一直在看<ABP的开发指南>(基于DDD的经典分层架构思想).因为之前一段时间刚看完<领域驱动设计:软件核心复杂性应对之道>, ...

  6. java后端学习记录2019

    学习计划 2019年计划 1.学习计算机基础,并加以实践.包括LeetCode刷题.数据库原理(索引和锁.Sql优化等).网络协议(Http.Tcp).操作系统(加深Linux).<Http权威 ...

  7. NodeJS 学习记录

    这里是我学习NodeJs的学习记录 URL:网址解析的好帮手 URL,URI 首先,URI是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源.而URL是u ...

  8. ABP框架踩坑记录

    ABP框架踩坑记录 ASP.NET Boilerplate是一个专用于现代Web应用程序的通用应用程序框架. 它使用了你已经熟悉的工具,并根据它们实现最佳实践. 文章目录 使用MySQL 配置User ...

  9. Elasticsearch学习记录(入门篇)

    Elasticsearch学习记录(入门篇) 1. Elasticsearch的请求与结果 请求结构 curl -X<VERB> '<PROTOCOL>://<HOST& ...

  10. JavaScript学习记录三

    title: JavaScript学习记录三 toc: true date: 2018-09-14 23:51:22 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...

随机推荐

  1. ByteHouse+Apache Airflow:高效简化数据管理流程

    Apache Airflow 与 ByteHouse 相结合,为管理和执行数据流程提供了强大而高效的解决方案.本文突出了使用 Apache Airflow 与 ByteHouse 的主要优势和特点,展 ...

  2. PPT 动画-滚动数字

    插入一个文本框,输入 0~9 调整边框大小,使其竖着排列 页面切换,选择平滑

  3. Interceptor Handle 执行顺序

    preHandle 调用时间:Controller方法处理之前 执行顺序:链式Intercepter情况下,Intercepter按照声明的顺序一个接一个执行 若返回false,则中断执行,注意:不会 ...

  4. ABAP 获取ALV报表中的数据

    当程序中需要获取某张报表展示的ALV数据,又不想重新写一遍查询逻辑,则可以调用该报表,直接将报表的ALV内表的数据获取到,提高开发效率 "-------------------------- ...

  5. 【C++第三方库】Windows下编译和使用 WebSocket++/WebSocketpp

    应用场景: 使用C++开发一个支持websocket协议的服务进程,可与HTML5(浏览器js文件)通信.来实现替换基于firebreath框架的跨浏览器插件开发. 当前,讲述websocketpp开 ...

  6. vivo 调用链 Agent 原理及实践

    一.项目背景 2017年,vivo互联网研发团队认为调用链系统对实际业务具有较大的价值,于是开始了研发工作.3年的时间,调用链系统整体框架不断演进--本文将介绍vivo调用链系统 Agent 技术原理 ...

  7. Serverless 奇点已来,下一个十年将驶向何方?

    本文整理自 QCon 上海站 2022 丁宇(叔同)的演讲内容. 以前构建应用,需要买 ECS 实例,搭建开源软件体系然后维护它,流量大了扩容,流量小了缩容,整个过程非常复杂繁琐. 用了 Server ...

  8. Nginx 代理后,打开新窗口,报404,开发环境下没有问题

    解决办法: router/index.js文件中, 将 router 的 mode 属性设置为 hash,不要使用 history

  9. freeswitch的mod_xml_cdr模块

    概述 freeswitch是一款简单好用的VOIP开源软交换平台. 在语音呼叫的过程中,话单是重要的计价和结算依据,话单的产生需要稳定可靠,可回溯. fs中的mod_xml_cdr模块提供了基本话单功 ...

  10. C#设计模式13——建造者模式的写法

    1. 什么是建造者模式? 建造者模式是一种创建型设计模式,它通过将一个复杂的对象分解为多个简单的对象并按照一定的顺序进行组装而创建出一个复杂的对象.这样可以使得构造过程更加灵活,同时也可以隐藏创建过程 ...