YoProgramo.NET Blog
Anotaciones de Programador

DDD: Controladores gordos

FatLos controladores son una parte vital de nuestra aplicación, en ellos ocurren procesos importantes del lado del servidor y muchas veces los controladores culminan albergando muchas líneas de código.

Tener controladores gordos no está muy bien que digamos. Particularmente, cuando programo controladores no me gusta llamar a Repositorios, prefiero utilizar instancias de servicios.

Para despejarme estas dudas pregunté esto en la comunidad AltnetHispano y muy gentilmente los muchachos me contestaron.

¿Porque los controladores suben de peso?

  • Al usar directamente Repositorios en nuestros Controladores es probable que terminemos incluyendo Lógica de Negocio en ellos.
  • Hacer reiterativas llamadas a servicios también es malo. En general, si esto es necesario es probable que necesites replantearte donde deberían ir esas líneas de código.

DDD 

Recordemos, que en arquitecturas DDD, los repositorios pertenecen al Dominio pero en realidad son implementados o inyectados en la capa de infraestructura.
En la capa de servicios de aplicación, solo existen interfaces de servicios que luego son inyectados por algún IoC a los servicios con comportamiento.
Un controlador debería poder acceder al dominio para tener acceso a las interfaces de las entidades.

Conclusión:

Usar servicios de aplicación y que estos sean los encargados de acceder a los repositorios es definitivamente una buena idea.
Y recordemos siempre, los controladores deben ser lo más pequeños posibles y fáciles de entender.

Más información: The Fat Controller must die!

December 22, 2009 07:56 by fabianfigueredo
Categorías: C# | Arquitectura | ASP.NET

ASP.NET MVC cache de UserControls

Ayer pude darme cuenta que el método Html.RenderPartial ignora la directiva de OutputCache en los controles de usuario.

Para que el cache funcione hay que insertar el control de usuario de otra manera, como se ve aqui abajo.

<% @ Page Language = "C#" Inherits = "ViewPage<<Joke>IEnumerable>"%> 
<% @ Register Src = "~ /Views/Inicio/Partial.ascx" TagPrefix = "MVC" TagName = "Parcial"%> <MVC: parcial runat = "server" >

Al insertar de este modo si tomara en cuenta la directiva OutputCache en el UserControl.

Fuente: Donut Caching in ASP.NET MVC

October 7, 2009 10:20 by fabianfigueredo
Categorías: ASP.NET | C#