Esempio n. 1
0
        static void Main()
        {
            // Estas líneas las crea Visual Studio por defecto y sirven para configurar
            // el entorno de ejecución
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // Creamos una conexión con la fuente de datos.
            //ICharacterDataSource dataSource = new CharacterDataSourceJson();
            IKernel kernel = new StandardKernel(new CacheMRUModule(2));
            ICharacterDataSource dataSource = kernel.Get<ICharacterDataSource>();

            // Creamos la clase que se encarga de controlar
            MultiWindowRunner runner = new MultiWindowRunner();

            // Creamos tantas ventanas principales como deseemos, pasándole como parámetros las
            // dependencias con la fuente de datos, la clase que se encarga de controlar y
            // el título de la ventana. La aplicación real sólo contendría una ventana principal.
            // Crear varias ventanas sirve para simular el acceso a la fuente de datos desde
            // diversos clientes, caso en el cual cada cliente contendría una ventana principal
            // que se conectaría con una única fuente de datos.
            //
            // Para la primera parte de la práctica, donde se trata de reducir el número de objetos
            // creados por cada petición, se puede trabajar perfectamente con una única ventana
            //
            // Para la segunda parte de la práctica, donde se introduce una caché para intentar
            // reducir el número de accesos a la fuente de datos, se pueden crear varias ventanas
            // para simular la ejecución de varios clientes en paralelo
            createCharacterDescriptionWindow(dataSource, runner, "Descriptor de Personsajes - Izquierdo");
            createCharacterDescriptionWindow(dataSource, runner, "Descriptor de Personsajes - Derecho");

            // Mostramos los formulrios e iniciamos la aplicación
            runner.run();
        }
Esempio n. 2
0
        /// <summary>
        ///     Crea una nueva ventana 'Descripción de Personajes'. 
        ///     Esta ventana representa la interfaz principal de la aplicación.      
        /// </summary>
        /// <param name="dataSource">
        ///     Instancia del objeto que proporciona el acceso a la fuente de datos que contiene
        ///     la descripción de los personajes.
        /// </param>
        /// <param name="runner">
        ///     Instancia del objeto que se encarga de controlar que la aplicación se cierre cuando 
        ///     se cierren los distintos formularios que se hayan creado.
        /// </param>
        /// <param name="title">
        ///     Título de la ventana.
        /// </param>
        /// <returns>
        ///     El objeto ventana 'Descripción de Personajes' creado.
        /// </returns>
        /// <pre>(dataSource != null) && (runner != null)</pre>
        /// <post>(returnValue != null)</post>
        private static MainWindow createCharacterDescriptionWindow(ICharacterDataSource dataSource, 
            MultiWindowRunner runner,
            string title)
        {
            // Creamos un objeto ventana "Descriptor de Personajes",
            // y le inyectamos la dependencia con la fuente de datos
            // y con la clase que se encarga de controlar la ejecución de los formularios
            //
            MainWindow window = new MainWindow(dataSource, runner);
            // Le damos nombre a la ventana
            window.Text = title;

            return window;
        }