Quantcast
Channel: Planeta Código
Viewing all articles
Browse latest Browse all 2718

IOKode: OpinionatedFramework: Contratos y fachadas

$
0
0

Esta entrada forma parte de una serie:


Los contratos son una serie de interfaces en el core de OpinionatedFramework que pueden ser localizadas desde el propio Service Locator estático de OpinionatedFramework y están pensados para optimizar el desarrollo de aplicaciones.

Generalmente, cuando se inicia el desarrollo de una nueva aplicación, se escriben en capa de dominio una serie de interfaces que casi toda aplicación tiene que serán implementadas en capa de infraestructura con diversas funcionalidades comunes: envíar notificaciones, lanzar tareas en segundo plano, lanzar eventos, escribir logs, etc.

El framework al incluir todos estos contratos, evita la aburrida tarea de tener que crear tus propias interfaces para ello al inicio del desarrollo de una aplicación

La implementación de los mismos es una cuestión de infraestructura y no de dominio.

Fachadas

Las fachadas son un acceso estático para hacer más cómodo el uso de servicios. No están directamente relacionadas con los contratos, ya que cualquier servicio puede ser utilizado desde una fachada, sin embargo el framework proporciona fachadas de todos sus contratos.

Por ejemplo, la interfaz IEmailSender puede ser utilizada desde la fachada estática Email, haciendo que ambos fragmentos de código sean equivalentes (excepto porque la fachada añade una llamada extra el stack trace):

awaitLocator.Resolve<IEmailSender>().SendAsync(newCustomerCreatedEmail());
awaitEmail.SendAsync(newCustomerCreatedEmail());

La fachada internamente simplemente hace esto:

publicstaticclassEmail
{
    publicstaticasyncTaskSendAsync(Emailemail, CancellationTokencancellationToken=default)
    {
        awaitLocator.Resolve<IEmailSender>().SendAsync(email, cancellationToken);
    }
}

Creando fachadas

Reescribir todas las firmas de un método de una interfaz puede ser un trabajo muy aburrido, es por ello que el framework proporciona un souce generator que se encarga de crear la fachada a partir de una interfaz. Simplemente hay que añadir el atributo AddToFacade a la interfaz y la magia del generador se encarga de todo lo demás.

Por volver al ejemplo del contrato anterior, tiene este atributo, por lo que la fachada que se genera se llama Email:

[AddToFacade("Email")]
publicinterfaceIEmailSender
{
    public TaskSendAsync(Emailemail, CancellationTokencancellationToken);
}

Fachadas multiservicio

El generador de fachadas está diseñado para poder generar una misma fachada para varios servicios, siempre y cuendo la interfaces de tengan un método con la misma firma (tipo de retorno + nombre + parametros) exacta.

En el core del framework esto se da con los contratos IJobEnqueuer e IJobScheduler, dos contratos que se añaden a la fachada Job.

En caso de conflicto de firma, un analizador de Roslyn genera un error y el proyecto no compila. ¡Incluso te lo marca con un subrayado rojo en el IDE!


Viewing all articles
Browse latest Browse all 2718

Trending Articles


Girasoles para colorear


mayabang Quotes, Torpe Quotes, tanga Quotes


Tagalog Quotes About Crush – Tagalog Love Quotes


OFW quotes : Pinoy Tagalog Quotes


Long Distance Relationship Tagalog Love Quotes


Tagalog Quotes To Move on and More Love Love Love Quotes


5 Tagalog Relationship Rules


Best Crush Tagalog Quotes And Sayings 2017


Re:Mutton Pies (lleechef)


FORECLOSURE OF REAL ESTATE MORTGAGE


Sapos para colorear


tagalog love Quotes – Tiwala Quotes


Break up Quotes Tagalog Love Quote – Broken Hearted Quotes Tagalog


Patama Quotes : Tagalog Inspirational Quotes


Pamatay na Banat and Mga Patama Love Quotes


Tagalog Long Distance Relationship Love Quotes


BARKADA TAGALOG QUOTES


“BAHAY KUBO HUGOT”


Vimeo 10.7.0 by Vimeo.com, Inc.


Vimeo 10.7.1 by Vimeo.com, Inc.