Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Índice

Introdução


Neste tópico vamos criar um projeto para nossa camada de aplicação, definir um módulo, interface e implementação de nosso serviço de aplicação.

Criando o projeto

Para começarmos a trabalhar temos que criar um projeto com suporte a .NET Core.

...

Com o projeto criado vamos adicionar os seguintes pacotes via nuget: nuget Tnf , e Tnf.Dto disponível em nosso package source: em https://www.myget.org/F/tnf/api/v3/index.json

Caso você faça referencie outros projetos em sua camada de aplicação como: camada de domínio e de infraestrutura, note que os projetos do .NET Core compartilham referencias referências entre eles não sendo necessário instalainstalá-las em cada assembly.

Definindo um Módulo

Vamos agora criar nosso modulo adicionando referências para nossa camada de aplicação.

Bloco de código
languagec#
firstline1
titleAppModule.cs
linenumberstrue
[DependsOn(
	typeof(TnfAutoMapperModule),
	typeof(DomainModule),
	typeof(CarolModule),
	typeof(EntityFrameworkModule))]
public class AppModule : TnfModule
{
	public override void PreInitialize()
	{
		base.PreInitialize();
	}
	public override void Initialize()
	{
		IocManager.RegisterAssemblyByConvention(typeof(AppModule).GetAssembly());
	}
}

Como mencionado anteriormente no tópico de introdução a camada de aplicação, esse essa camada tem a responsabilidade de ligar nosso assembly de negocio com nossa infraestrutura.

...

  • TnfAutoMapperModule: configura o suporte ao uso do AutoMapper;
  • DomainModule: modulo da camada de domínio;
  • CarolModule: modulo da camada de infraestrutura que utiliza Carol (SAS TOTVS);
  • EntityFrameworkModule: modulo da camada de infraestrutura que utiliza Entity Framework Core;

Criando um Serviço de Aplicação

...

Todo serviço de aplicação deve implementar a interface IApplicationService.

Bloco de código
languagec#
firstline1
titleDefinição da interface do serviço de aplicação
linenumberstrue
public interface ITaskAppService : IApplicationService
{
    void CreateTask(CreateTaskInput input);
}

Criando o serviço

Agora vamos implementar o contrato de nosso serviço definido acima. Toda implementação de serviços de aplicação devem Ao fazer a implementação devemos derivar da classe ApplicationService. 

...

Note que nosso módulo registra as convenções no método InitializeNosso serviço de aplicação já será automaticamente configurado em nosso container de injeção de dependência para o suporte a injeção de dependência.

Em nossa implementação do "TaskAppService" estamos usando a infraestrutura de Logger usada para criação de logs e L que representa o acesso a estrutura de localização do framework.

Essas e outras funcionalidades estão disponíveis através da herança do ApplicationService.