ABP框架—後臺:應用服務ApplicationServices(9)
應用服務作用是將領域(業務)邏輯暴露給外部(vue前臺等)。外部(vue前臺等)通過傳入DTO(資料傳輸物件)引數來呼叫應用服務,而應用服務通過領域物件來執行相應的業務邏輯並且將DTO返回。因此,外部(vue前臺等)和領域層將被完全隔離開來。在一個理想的層級專案中,外部(vue前臺等)應該從不直接訪問領域物件。
此部分內容未使用DTO,後續文章會繼續講解
此應用服務層在ABP框架中會生成swagger中介面,供外部(vue前臺)呼叫,這樣就可以將專案中前後端分離
一、應用服務呼叫預設倉儲
當ABP框架內預設的倉儲能夠滿足需要時,則直接呼叫即可
示例:https://blog.csdn.net/sinat_16998945/article/details/97374091 檢視內容(一、預設倉儲)
應用服務呼叫預設倉儲時,只需要編寫服務介面實現類就行, 直接繼承應用服務基類PDAppServiceBase、直接實現預設應用服務介面類IApplicationService
using System.Collections.Generic;
using System.Threading.Tasks;
using Abp.Application.Services;
using Abp.Domain.Repositories;
namespace PD.Menu
{
public class MenuAppService : PDAppServiceBase,IApplicationService
{
private readonly IRepository<Sys_Menu> _Sys_MenuRepository;
public MenuAppService(IRepository<Sys_Menu> Sys_MenuRepository)
{
_Sys_MenuRepository = Sys_MenuRepository;
}
public async Task<List<Sys_Menu>> Get()
{
//GetAllListAsync 是自動預設倉儲中方法
return await _Sys_MenuRepository.GetAllListAsync();
}
}
}
二、呼叫自定義倉儲
當ABP框架內預設的倉儲不能夠滿足需要時,則需要在預設倉儲上進行擴充套件方法
示例:https://blog.csdn.net/sinat_16998945/article/details/97374091 檢視內容(二、自定義倉儲)
應用服務呼叫自定義倉儲時,需要編寫服務介面和服務介面實現類,如圖
1.服務介面類需要繼承IApplicationService
using Abp.Application.Services;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace PD.Menu
{
public interface IMenuAppService : IApplicationService
{
Task<List<Sys_Menu>> GetMenu();
}
}
2.服務介面實現類需要繼承PDAppServiceBase、且實現上面的服務介面類
using System.Collections.Generic;
using System.Threading.Tasks;
using PD.Menu.Repository;
namespace PD.Menu
{
public class MenuAppService : PDAppServiceBase, IMenuAppService
{
private readonly IMenuRepository _menuManager;
public MenuAppService(IMenuRepository menuManager)
{
_menuManager = menuManager;
}
public async Task<List<Sys_Menu>> GetMenu()
{
//GetSys_MenuList是自定義倉儲的方法
var query = await _menuManager.GetSys_MenuList();
//TODO 其他相關操作
return query;
}
}
}
三、呼叫多個倉儲
當實際需求中,單個倉儲不滿足,也可以呼叫多個倉儲
using System.Collections.Generic;
using System.Threading.Tasks;
using PD.Menu.Repository;
using PD.Roles;
namespace PD.Menu
{
public class MenuAppService : PDAppServiceBase, IMenuAppService
{
private readonly IMenuRepository _menuManager;
private readonly IRoleAppService _roleAppService;
public MenuAppService(IMenuRepository menuManager,IRoleAppService roleAppService)
{
_menuManager = menuManager;
_roleAppService = roleAppService;
}
public async Task<List<Sys_Menu>> GetMenu()
{
//GetSys_MenuList是自定義倉儲的方法
var query = await _menuManager.GetSys_MenuList();
var query1 = await _roleAppService.GetAllPermissions();
//TODO 其他相關操作
return query;
}
}
}
相關文章
- 控制檯程式使用ABP框架應用層服務框架
- ABP之應用服務(1)
- ABP框架系列之十:(Application-Services-應用服務)框架APP
- 基於 abp vNext 微服務開發的敏捷應用構建平臺 - 框架分析微服務敏捷框架
- Util應用框架核心(一) - 服務配置框架
- 後臺工作者HangFire與ABP框架Abp.Hangfire及擴充套件框架套件
- [Abp vNext 原始碼分析] - 6. DDD 的應用層支援 (應用服務)原始碼
- 初識ABP vNext(11):聚合根、倉儲、領域服務、應用服務、Blob儲存
- abp(net core)+easyui+efcore倉儲系統——建立應用服務(五)UI
- lms框架應用服務介面和服務條目詳解框架
- Util應用框架核心(三) - 服務註冊器框架
- LAMP平臺服務簡介、部署及應用LAMP
- 基於 Nuxt.js 服務渲染框架的後臺管理系統UXJS框架
- DNS服務應用DNS
- 打造跨平臺.NET Core後臺服務
- Mac Redis 服務後臺執行MacRedis
- Dubbo Mesh - 從服務框架到統一服務控制平臺框架
- 用Swift寫服務端 — Perfect框架Swift服務端框架
- Qt服務應用操作QT
- 雲服務應用開發所面臨的9大挑戰
- 如何提高後臺服務應用問題的排查效率?日誌 VS 遠端除錯除錯
- 仿掘金前臺 vue 服務端渲染(ssr)後臺 react (spa) 後臺服務是 koa 的一個專案Vue服務端React
- 網站重構-後臺服務篇網站
- BaaS後端即服務 - 中臺篇後端
- [NODEJS]後臺執行某服務NodeJS
- 領域服務與應用服務的職責
- 領域服務和應用服務的差別?
- 通過silky框架在.net平臺構建微服務應用框架微服務
- Abp太重了?輕量化Abp框架框架
- 分散式服務治理框架Dubbo的前世今生及應用實戰分散式框架
- nginx服務企業應用Nginx
- 構建應用層服務
- [Abp 原始碼分析]十六、後臺作業與後臺工作者原始碼
- 細說TF服務鏈丨服務鏈後臺的路由實現路由
- Tcloud 雲測平臺-多服務框架開源Cloud框架
- Windows 下配置 Logstash 為後臺服務Windows
- centos7後臺服務部署jar包CentOSJAR
- Egg.js搭建後臺服務APIJSAPI