今天的目标
- 1 学会使用Service
- 2 了解Service的层次架构
- 3 初探注入
1 添加服务接口, 请注意是在 Acme.BookStore.Application.Contracts
, 因为我理解 Contracts是合约的意思, 是用来约束一些行为的, 比如约束服务.
在Acme.BookStore.Application.Contracts
项目中定义一个名为IBookAppService
的接口:
using System;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace Acme.BookStore
{
public interface IBookAppService :
ICrudAppService< //定义了CRUD方法
BookDto, //用来展示书籍
Guid, //Book实体的主键
PagedAndSortedResultRequestDto, //获取书籍的时候用于分页和排序
CreateUpdateBookDto, //用于创建书籍
CreateUpdateBookDto> //用于更新书籍
{
}
}
2 添加服务 Acme.BookStore.Application
中已经自动引用了 Acme.BookStore.Application.Contract
, 所以可以直接继承接口 IBookAppService
, 这也是约束
在Acme.BookStore.Application项目中实现名为BookAppService的IBookAppService:
using System;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;
namespace Acme.BookStore
{
public class BookAppService :
CrudAppService<Book, BookDto, Guid, PagedAndSortedResultRequestDto,
CreateUpdateBookDto, CreateUpdateBookDto>,
IBookAppService
{
public BookAppService(IRepository<Book, Guid> repository)
: base(repository)
{
}
}
}
Swagger UI, 选择web项目,启动, 然后在浏览后面输入/swagger, 可以看到api已经提供了. ABP会自动将我们的服务暴露出来以提供给第三方或者我们的前端使用