Serviços de aplicação são usados para expor a lógica de domínio para a camada de apresentação.
Essa camada tem como principal objetivo aplicar todas as regras definidas para uma entidade ou para um processo, mantendo o domínio do negocio isolado fazendo a ligação da lógica do negocio com sua infraestrutura de dados.
No TNF a interface de um serviço de aplicação deve implementar IApplicationService. Essa interface já será registrada automaticamente no container de injeção de dependência através das convenções:
public interface ITaskAppService : IApplicationService { void CreateTask(CreateTaskInput input); }
Um serviço de aplicação deveria implementar a interface declarada acima. Toda implementação de um serviço de aplicação deve derivar da classe ApplicationService.
Essa classe expõe funcionalidades pré-definidas dentro da aplicação que facilitam seu uso como logging, localization:
public class TaskAppService : ApplicationService, ITaskAppService { public TaskAppService() { LocalizationSourceName = "SimpleTaskSystem"; } public void CreateTask(CreateTaskInput input) { // Write some logs (Logger is defined in ApplicationService class) Logger.Info("Creating a new task with description: " + input.Description); // Get a localized text (L is a shortcut for LocalizationHelper.GetString(...), defined in ApplicationService class) var text = L("SampleLocalizableTextKey"); // TODO: Add new task to database... } }