MVVM: Mejoras en el Rendimiento – Capítulo 1

Capítulo 1: Inicialización Diferida

Con el presente artículo inicio una serie de entregas que iré publicando orientadas a tratar los diferentes aspectos para mejorar el rendimiento de nuestras aplicaciones WPF/MVVM. En este primer capítulo hablaré de cómo aplicar el concepto de inicialización diferida.

Durante el desarrollo de aplicaciones WPF/MVVM solemos utilizar frecuentemente la construcción de tipos que requieren mucho tiempo de procesamiento y/o memoria.  Es posible retardar la construcción de dichos tipos hasta que realmente los necesitemos y esto se puede lograr gracias a una característica introducida en la versión 4.0 de .NET Framework, denominada inicialización diferida (http://bit.ly/2qQpsNb).  Al utilizar esta función el rendimiento de nuestras aplicaciones WPF/MVVM mejorará notablemente, retrasando la instanciación de tipos.

Echemos un vistazo a la ventana que forma parte de una supuesta aplicación de gestión comercial (http://bit.ly/2qd6IZn).  Se trata de una aplicación WPF .NET Framework 4.6.1 que utiliza la librería Prism y donde los clientes son cargados y seleccionados para que su información se pueda ver y editar, tal y como se muestra en la siguiente captura de pantalla:

Si empezamos a cargar todo en una sola operación, se necesitaría mucho tiempo para que la ventana aparezca a medida que se obtienen los datos del almacén de persistencia.

Los datos de un cliente pueden provenir de diferentes fuentes.  Podemos cargar estos datos en la clase Customer, como se muestra en el siguiente código.  Aquí, vamos a simular el retardo utilizando Thread.Sleep().

Si seleccionamos a 10 clientes, esto causaría un retraso de 30 segundos como mínimo. Podemos mejorar el rendimiento y la capacidad de respuesta de la aplicación utilizando la inicialización diferida, es decir, podemos retrasar la instancia de nuestras instancias de cliente hasta que el usuario intente modificar un campo.

En el código anterior, _model.Value instanciará una instancia de cliente, si no se ha creado anteriormente.

Espero que mejoréis vuestros aplicativos WPF/MVVM.  Nos vemos muy pronto, salu2.

Óscar Fernández

. NET Senior Arquitect | Soluciones Microsoft | SOGETI ESPAÑA

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s