Curso de Desarrollo Web ASP.NET MVC & JavaScript Domingos Mañanas
A los interesados les comunico el inicio del último Curso de ASP.NET MVC & JavaScript los días Domingos en las Mañanas y será exclusivamente para alumnos nuevos.
En el curso se verá mi Arquitectura Desconectada Sin Capas orientada a Performance y sobre todo se hará muchas aplicaciones en Tiempo Real usando Web Sockets todo en forma nativa solo con C# en el servidor y JavaScript puro en el cliente.
Beneficios de mi Arquitectura Web Desconectada Sin Capas y con Actualización en Tiempo Real
1. Desarrollo en menos tiempo al no usar Capas.
2. En Producción es la mas veloz por no usar Frameworks ni Librerías y pocos archivos.
3. El mantenimiento es muy simple ya que solo basta cambiar el Store Procedure, no el código C# ni JavaScript que son genéricos.
Contenido del Curso
1. Arquitecturas de Desarrollo Web en ASP.NET
1.1. Arquitectura con Capas: N Conexiones, N Comandos, N Cursores
1.2. Arquitectura con Capas: 1 Conexion, N Comandos, N Cursores
1.3. Arquitectura con Capas: 1 Conexion, 1 Comando, N Cursores
1.4. Arquitectura sin Capas: 1 Conexion, 1 Comando, 1 Cadena (Mi creación)
2. Llamadas Asíncronas del Cliente al Servidor Web
2.1. Usando jQuery y JSON
2.2. Usando Angular.js y JSON (Nuevo)
2.3. Usando Vue.js y JSON (Nuevo)
2.4. Usando XHR y Cadenas (Mi creación)
3. Listando y Consultando Registros
3.1. Listando registros de una sola tabla
3.2. Listando registros de varias tablas
3.3. Consultando registros en forma conectada
3.4. Consultando registros en forma desconectada
4. Filtrando en forma desconectada
4.1. Filtros usando Textos
4.2. Filtros usando Listas
4.3. Filtros usando las Cabeceras de una Tabla o Grilla
5. Paginando y Ordenando en forma desconectada
5.1. Paginación simple de registros
5.2. Paginación de registros por Bloques
5.3. Paginación de Imágenes (Carrusel)
5.3. Ordenación de registros ascendente y descendente
6. Exportando datos en el Cliente y en Servidor
6.1. Creando un Archivo de Texto en el Cliente
6.2. Creando un Archivo CSV en el Cliente
6.3. Creando un Archivo XLS/HTML en el Cliente
6.4. Creando un Archivo XLSX en el Servidor
6.5. Creando un Archivo DOCX en el Servidor
6.6. Creando un Archivo PDF en el Servidor
7. Mantenimiento, Popups, Cabecera Detalle e Impresión
7.1. Mantenimiento de registros especifico
7.2. Creando Popups usando Divs
7.3. Trabajando con Cabecera Detalle
7.4. Imprimiendo datos de la página
7.5. Mantenimiento de registros genérico (Nuevo)
8. Presentación Personalizada y Reportes con JavaScript
8.1. Vista Tablas
8.2. Vista Jerárquica Horizontal
8.3. Vista Jerárquica Vertical
8.4. Vista Tabla Cruzada
9. Gráficos con HTML5 y JavaScript
9.1. Creando Gráficos de Datos con Canvas
9.2. Creando Gráficos de Datos con SVG
9.3. Creando Gráficos Interactivos
10. Trabajando con Servicios WCF
10.1. Creando un Servicio WCF alojado en IIS
10.2. Creando un Servicio WCF alojado en su propio Servidor
10.3. Creando un Cliente WCF usando Proxys
10.4. Creando un Cliente WCF usando ChannelFactory
11. Trabajando con Servicios Web API (Servicios HTTP o REST)
11.1. Creando un Servicio Web API
11.2. Creando un Cliente desde .NET
11.3. Creando un Cliente JavaScript
11.4. Creando un Cliente WinForms (Nuevo)
11.5. Creando un Cliente Android (Nuevo)
12. Creando Web Sockets en el Servidor para Actualizar en Tiempo Real
12.1. Creando un Servidor WebSocket usando Fleck
12.2. Actualizando en Tiempo Real una App Web usando WebSockets
12.3. Actualizando en Tiempo Real una App Windows usando WebSockets (Nuevo)
12.4. Actualizando en Tiempo Real una App Android usando WebSockets (Nuevo)
13. Creando Web Sockets en el Cliente para Controlar Dispositivos de la Red Local
13.1. Usando Web Sockets para Explorar Archivos y Directorios
13.2. Usando Web Sockets para Impresión de Documentos
14. Trabajando con Mapas
14.1. Usando Google Maps
14.2. Usando Open Layer
14.3. Usando Mapas en Aplicaciones Windows Forms (Nuevo)
14.4. Actualizando Mapas en Tiempo Real
15. Trabajando con Archivos Gigantes en la Aplicación Web
15.1. Subir Archivos Gigantes desde la App Web al Sistema de Archivos
15.2. Bajar Archivos Gigantes desde el Sistema de Archivos al Cliente
16. Manejando Miles de Registros en la Aplicación Web
16.1. Mostrar Miles de Registros desde el Servidor de Datos al Cliente
16.2. Grabar Miles de Registros desde la App Web al Servidor de Datos
Observaciones sobre el Contenido
- No Uso Frameworks ni Librerías de Terceros Ni en el Servidor Ni en el Cliente
- 10 % del código está en el servidor en C#
- 90% del código está en el cliente en JavaScript (APIs nativas multi navegador)
- Todo los ejemplos son reales del día a día del programador.
- En todos los ejemplos el código esta basado en alto rendimiento (performance)
- A partir de la mitad del curso se resuelven los problemas mas comunes que presenta el Desarrollo Web debido al ancho de banda.
Horario
- Domingos de 9:00 pm a 2:00 pm
Fecha de Inicio
- Domingo 18 de Agosto del 2019
Duración del Curso
Total: 96 horas
Tiempo: 4 meses
Frecuencia: 6 horas semanales (24 horas mensuales)
Inversión
- Mensual: 250 nuevos soles
- Total 4 meses: 1000 nuevos soles
Forma de Pago
- En efectivo, al inicio de cada mes (250 soles)
Contacto
Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:
Asunto: Curso ASP.NET MVC & JavaScript Domingos Mañanas
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
Registro
Solo se considerará a los 25 primeros que envíen su correo ya que la capacidad del lugar es limitada.
Lugar del Curso
Será en la Zona Norte de Lima, se le enviará la dirección exacta a todos los registrados una semana antes de iniciar el curso.
Blog de Luis Dueñas dedicado a la difusión del Desarrollo en Microsoft .NET, Visual Studio, WinForms, WebForms, MVC, ASP .NET, jQuery, AJAX, HTML5, JavaScript, Móviles, etc. Encontrarás Libros, Demos, Artículos Técnicos, Entrenamiento.
Mostrando las entradas con la etiqueta Gráficos. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Gráficos. Mostrar todas las entradas
miércoles, 7 de agosto de 2019
Entrenamiento - Ultimo Curso Presencial de ASP.NET MVC & JavaScript
Etiquetas:
ASP.NET,
CSS3,
Curso MVC,
Entrenamiento,
Exportar,
Gráficos,
HTML5,
Importar,
Javascript,
Lduenas,
Librerías,
Mantenimiento,
MVC,
Performance,
Serializadores,
Taller Domingos,
WCF,
Web API,
Web Sockets,
WebForms
viernes, 22 de marzo de 2019
Entrenamiento - Curso de ASP.NET MVC & JavaScript Domingos Mañanas
Curso de Desarrollo Web ASP.NET MVC & JavaScript Domingos Mañanas
A los interesados les comunico el inicio del último Curso de ASP.NET MVC & JavaScript los días Domingos en las Mañanas y será exclusivamente para alumnos nuevos.
En el curso se verá mi Arquitectura Desconectada Sin Capas orientada a Performance y sobre todo se hará muchas aplicaciones en Tiempo Real usando Web Sockets todo en forma nativa solo con C# en el servidor y JavaScript puro en el cliente.
Beneficios de mi Arquitectura Web Desconectada Sin Capas y con Actualización en Tiempo Real
1. Desarrollo en menos tiempo al no usar Capas.
2. En Producción es la mas veloz por no usar Frameworks ni Librerías y pocos archivos.
3. El mantenimiento es muy simple ya que solo basta cambiar el Store Procedure, no el código C# ni JavaScript que son genéricos.
Contenido del Curso
1. Arquitecturas de Desarrollo Web en ASP.NET
1.1. Arquitectura con Capas: N Conexiones, N Comandos, N Cursores
1.2. Arquitectura con Capas: 1 Conexion, N Comandos, N Cursores
1.3. Arquitectura con Capas: 1 Conexion, 1 Comando, N Cursores
1.4. Arquitectura sin Capas: 1 Conexion, 1 Comando, 1 Cadena (Mi creación)
2. Llamadas Asíncronas del Cliente al Servidor Web
2.1. Usando jQuery y JSON
2.2. Usando Angular.js y JSON (Nuevo)
2.3. Usando Vue.js y JSON (Nuevo)
2.4. Usando XHR y Cadenas (Mi creación)
3. Listando y Consultando Registros
3.1. Listando registros de una sola tabla
3.2. Listando registros de varias tablas
3.3. Consultando registros en forma conectada
3.4. Consultando registros en forma desconectada
4. Filtrando en forma desconectada
4.1. Filtros usando Textos
4.2. Filtros usando Listas
4.3. Filtros usando las Cabeceras de una Tabla o Grilla
5. Paginando y Ordenando en forma desconectada
5.1. Paginación simple de registros
5.2. Paginación de registros por Bloques
5.3. Paginación de Imágenes (Carrusel)
5.3. Ordenación de registros ascendente y descendente
6. Exportando datos en el Cliente y en Servidor
6.1. Creando un Archivo de Texto en el Cliente
6.2. Creando un Archivo CSV en el Cliente
6.3. Creando un Archivo XLS/HTML en el Cliente
6.4. Creando un Archivo XLSX en el Servidor
6.5. Creando un Archivo DOCX en el Servidor
6.6. Creando un Archivo PDF en el Servidor
7. Mantenimiento, Popups, Cabecera Detalle e Impresión
7.1. Mantenimiento de registros especifico
7.2. Creando Popups usando Divs
7.3. Trabajando con Cabecera Detalle
7.4. Imprimiendo datos de la página
7.5. Mantenimiento de registros genérico (Nuevo)
8. Presentación Personalizada y Reportes con JavaScript
8.1. Vista Tablas
8.2. Vista Jerárquica Horizontal
8.3. Vista Jerárquica Vertical
8.4. Vista Tabla Cruzada
9. Gráficos con HTML5 y JavaScript
9.1. Creando Gráficos de Datos con Canvas
9.2. Creando Gráficos de Datos con SVG
9.3. Creando Gráficos Interactivos
10. Trabajando con Servicios WCF
10.1. Creando un Servicio WCF alojado en IIS
10.2. Creando un Servicio WCF alojado en su propio Servidor
10.3. Creando un Cliente WCF usando Proxys
10.4. Creando un Cliente WCF usando ChannelFactory
11. Trabajando con Servicios Web API (Servicios HTTP o REST)
11.1. Creando un Servicio Web API
11.2. Creando un Cliente desde .NET
11.3. Creando un Cliente JavaScript
11.4. Creando un Cliente WinForms (Nuevo)
11.5. Creando un Cliente Android (Nuevo)
12. Creando Web Sockets en el Servidor para Actualizar en Tiempo Real
12.1. Creando un Servidor WebSocket usando Fleck
12.2. Actualizando en Tiempo Real una App Web usando WebSockets
12.3. Actualizando en Tiempo Real una App Windows usando WebSockets (Nuevo)
12.4. Actualizando en Tiempo Real una App Android usando WebSockets (Nuevo)
13. Creando Web Sockets en el Cliente para Controlar Dispositivos de la Red Local
13.1. Usando Web Sockets para Explorar Archivos y Directorios
13.2. Usando Web Sockets para Impresión de Documentos
14. Trabajando con Mapas
14.1. Usando Google Maps
14.2. Usando Open Layer
14.3. Usando Mapas en Aplicaciones Windows Forms (Nuevo)
14.4. Actualizando Mapas en Tiempo Real
15. Trabajando con Archivos Gigantes en la Aplicación Web
15.1. Subir Archivos Gigantes desde la App Web al Sistema de Archivos
15.2. Bajar Archivos Gigantes desde el Sistema de Archivos al Cliente
16. Manejando Miles de Registros en la Aplicación Web
16.1. Mostrar Miles de Registros desde el Servidor de Datos al Cliente
16.2. Grabar Miles de Registros desde la App Web al Servidor de Datos
Observaciones sobre el Contenido
- No Uso Frameworks ni Librerías de Terceros Ni en el Servidor Ni en el Cliente
- 10 % del código está en el servidor en C#
- 90% del código está en el cliente en JavaScript (APIs nativas multi navegador)
- Todo los ejemplos son reales del día a día del programador.
- En todos los ejemplos el código esta basado en alto rendimiento (performance)
- A partir de la mitad del curso se resuelven los problemas mas comunes que presenta el Desarrollo Web debido al ancho de banda.
Horario
- Domingos de 9:00 pm a 2:00 pm
Fecha de Inicio
- Domingo 31 de Marzo del 2019
Duración del Curso
Total: 144 horas
Tiempo: 6 meses
Frecuencia: 6 horas semanales (24 horas mensuales)
Inversión
- Mensual: 250 nuevos soles
- Total 6 meses: 1500 nuevos soles
Forma de Pago
- En efectivo, al inicio de cada mes (250 soles)
Contacto
Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:
Asunto: Curso ASP.NET MVC & JavaScript Domingos Mañanas
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
Registro
Solo se considerará a los 25 primeros que envíen su correo ya que la capacidad del lugar es limitada.
Lugar del Curso
Será en la Zona Norte de Lima, se le enviará la dirección exacta a todos los registrados una semana antes de iniciar el curso.
A los interesados les comunico el inicio del último Curso de ASP.NET MVC & JavaScript los días Domingos en las Mañanas y será exclusivamente para alumnos nuevos.
En el curso se verá mi Arquitectura Desconectada Sin Capas orientada a Performance y sobre todo se hará muchas aplicaciones en Tiempo Real usando Web Sockets todo en forma nativa solo con C# en el servidor y JavaScript puro en el cliente.
Beneficios de mi Arquitectura Web Desconectada Sin Capas y con Actualización en Tiempo Real
1. Desarrollo en menos tiempo al no usar Capas.
2. En Producción es la mas veloz por no usar Frameworks ni Librerías y pocos archivos.
3. El mantenimiento es muy simple ya que solo basta cambiar el Store Procedure, no el código C# ni JavaScript que son genéricos.
Contenido del Curso
1. Arquitecturas de Desarrollo Web en ASP.NET
1.1. Arquitectura con Capas: N Conexiones, N Comandos, N Cursores
1.2. Arquitectura con Capas: 1 Conexion, N Comandos, N Cursores
1.3. Arquitectura con Capas: 1 Conexion, 1 Comando, N Cursores
1.4. Arquitectura sin Capas: 1 Conexion, 1 Comando, 1 Cadena (Mi creación)
2. Llamadas Asíncronas del Cliente al Servidor Web
2.1. Usando jQuery y JSON
2.2. Usando Angular.js y JSON (Nuevo)
2.3. Usando Vue.js y JSON (Nuevo)
2.4. Usando XHR y Cadenas (Mi creación)
3. Listando y Consultando Registros
3.1. Listando registros de una sola tabla
3.2. Listando registros de varias tablas
3.3. Consultando registros en forma conectada
3.4. Consultando registros en forma desconectada
4. Filtrando en forma desconectada
4.1. Filtros usando Textos
4.2. Filtros usando Listas
4.3. Filtros usando las Cabeceras de una Tabla o Grilla
5. Paginando y Ordenando en forma desconectada
5.1. Paginación simple de registros
5.2. Paginación de registros por Bloques
5.3. Paginación de Imágenes (Carrusel)
5.3. Ordenación de registros ascendente y descendente
6. Exportando datos en el Cliente y en Servidor
6.1. Creando un Archivo de Texto en el Cliente
6.2. Creando un Archivo CSV en el Cliente
6.3. Creando un Archivo XLS/HTML en el Cliente
6.4. Creando un Archivo XLSX en el Servidor
6.5. Creando un Archivo DOCX en el Servidor
6.6. Creando un Archivo PDF en el Servidor
7. Mantenimiento, Popups, Cabecera Detalle e Impresión
7.1. Mantenimiento de registros especifico
7.2. Creando Popups usando Divs
7.3. Trabajando con Cabecera Detalle
7.4. Imprimiendo datos de la página
7.5. Mantenimiento de registros genérico (Nuevo)
8. Presentación Personalizada y Reportes con JavaScript
8.1. Vista Tablas
8.2. Vista Jerárquica Horizontal
8.3. Vista Jerárquica Vertical
8.4. Vista Tabla Cruzada
9. Gráficos con HTML5 y JavaScript
9.1. Creando Gráficos de Datos con Canvas
9.2. Creando Gráficos de Datos con SVG
9.3. Creando Gráficos Interactivos
10. Trabajando con Servicios WCF
10.1. Creando un Servicio WCF alojado en IIS
10.2. Creando un Servicio WCF alojado en su propio Servidor
10.3. Creando un Cliente WCF usando Proxys
10.4. Creando un Cliente WCF usando ChannelFactory
11. Trabajando con Servicios Web API (Servicios HTTP o REST)
11.1. Creando un Servicio Web API
11.2. Creando un Cliente desde .NET
11.3. Creando un Cliente JavaScript
11.4. Creando un Cliente WinForms (Nuevo)
11.5. Creando un Cliente Android (Nuevo)
12. Creando Web Sockets en el Servidor para Actualizar en Tiempo Real
12.1. Creando un Servidor WebSocket usando Fleck
12.2. Actualizando en Tiempo Real una App Web usando WebSockets
12.3. Actualizando en Tiempo Real una App Windows usando WebSockets (Nuevo)
12.4. Actualizando en Tiempo Real una App Android usando WebSockets (Nuevo)
13. Creando Web Sockets en el Cliente para Controlar Dispositivos de la Red Local
13.1. Usando Web Sockets para Explorar Archivos y Directorios
13.2. Usando Web Sockets para Impresión de Documentos
14. Trabajando con Mapas
14.1. Usando Google Maps
14.2. Usando Open Layer
14.3. Usando Mapas en Aplicaciones Windows Forms (Nuevo)
14.4. Actualizando Mapas en Tiempo Real
15. Trabajando con Archivos Gigantes en la Aplicación Web
15.1. Subir Archivos Gigantes desde la App Web al Sistema de Archivos
15.2. Bajar Archivos Gigantes desde el Sistema de Archivos al Cliente
16. Manejando Miles de Registros en la Aplicación Web
16.1. Mostrar Miles de Registros desde el Servidor de Datos al Cliente
16.2. Grabar Miles de Registros desde la App Web al Servidor de Datos
Observaciones sobre el Contenido
- No Uso Frameworks ni Librerías de Terceros Ni en el Servidor Ni en el Cliente
- 10 % del código está en el servidor en C#
- 90% del código está en el cliente en JavaScript (APIs nativas multi navegador)
- Todo los ejemplos son reales del día a día del programador.
- En todos los ejemplos el código esta basado en alto rendimiento (performance)
- A partir de la mitad del curso se resuelven los problemas mas comunes que presenta el Desarrollo Web debido al ancho de banda.
Horario
- Domingos de 9:00 pm a 2:00 pm
Fecha de Inicio
- Domingo 31 de Marzo del 2019
Duración del Curso
Total: 144 horas
Tiempo: 6 meses
Frecuencia: 6 horas semanales (24 horas mensuales)
Inversión
- Mensual: 250 nuevos soles
- Total 6 meses: 1500 nuevos soles
Forma de Pago
- En efectivo, al inicio de cada mes (250 soles)
Contacto
Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:
Asunto: Curso ASP.NET MVC & JavaScript Domingos Mañanas
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
Registro
Solo se considerará a los 25 primeros que envíen su correo ya que la capacidad del lugar es limitada.
Lugar del Curso
Será en la Zona Norte de Lima, se le enviará la dirección exacta a todos los registrados una semana antes de iniciar el curso.
Etiquetas:
ASP.NET,
CSS3,
Curso MVC,
Entrenamiento,
Exportar,
Gráficos,
HTML5,
Importar,
Javascript,
Lduenas,
Librerías,
Mantenimiento,
MVC,
Performance,
Serializadores,
Taller Domingos,
WCF,
Web API,
Web Sockets,
WebForms
viernes, 14 de diciembre de 2018
Entrenamiento - Curso de ASP.NET MVC & JavaScript Sábados Tardes
Curso de Desarrollo Web ASP.NET MVC & JavaScript Sábados Tardes
A los interesados les comunico el inicio del Curso de ASP.NET MVC & JavaScript los días Sábados en las Tardes y será exclusivamente para alumnos nuevos.
En el curso se verá mi Arquitectura Desconectada Sin Capas orientada a Performance y sobre todo se hará muchas aplicaciones en Tiempo Real usando Web Sockets todo en forma nativa solo con C# en el servidor y JavaScript puro en el cliente.
Beneficios de mi Arquitectura Web Desconectada Sin Capas y con Actualización en Tiempo Real
1. Desarrollo en menos tiempo al no usar Capas.
2. En Producción es la mas veloz por no usar Frameworks ni Librerías y pocos archivos.
3. El mantenimiento es muy simple ya que solo basta cambiar el Store Procedure, no el código C# ni JavaScript que son genéricos.
Contenido del Curso
1. Arquitecturas de Desarrollo Web en ASP.NET
1.1. Arquitectura con Capas: N Conexiones, N Comandos, N Cursores
1.2. Arquitectura con Capas: 1 Conexion, N Comandos, N Cursores
1.3. Arquitectura con Capas: 1 Conexion, 1 Comando, N Cursores
1.4. Arquitectura sin Capas: 1 Conexion, 1 Comando, 1 Cadena (Mi creación)
2. Llamadas Asíncronas del Cliente al Servidor Web
2.1. Usando jQuery y JSON
2.2. Usando Angular.js y JSON (Nuevo)
2.3. Usando Vue.js y JSON (Nuevo)
2.4. Usando XHR y Cadenas (Mi creación)
3. Listando y Consultando Registros
3.1. Listando registros de una sola tabla
3.2. Listando registros de varias tablas
3.3. Consultando registros en forma conectada
3.4. Consultando registros en forma desconectada
4. Filtrando en forma desconectada
4.1. Filtros usando Textos
4.2. Filtros usando Listas
4.3. Filtros usando las Cabeceras de una Tabla o Grilla
5. Paginando y Ordenando en forma desconectada
5.1. Paginación simple de registros
5.2. Paginación de registros por Bloques
5.3. Paginación de Imágenes (Carrusel)
5.3. Ordenación de registros ascendente y descendente
6. Exportando datos en el Cliente y en Servidor
6.1. Creando un Archivo de Texto en el Cliente
6.2. Creando un Archivo CSV en el Cliente
6.3. Creando un Archivo XLS/HTML en el Cliente
6.4. Creando un Archivo XLSX en el Servidor
6.5. Creando un Archivo DOCX en el Servidor
6.6. Creando un Archivo PDF en el Servidor
7. Mantenimiento, Popups, Cabecera Detalle e Impresión
7.1. Mantenimiento de registros especifico
7.2. Creando Popups usando Divs
7.3. Trabajando con Cabecera Detalle
7.4. Imprimiendo datos de la página
7.5. Mantenimiento de registros genérico (Nuevo)
8. Presentación Personalizada y Reportes con JavaScript
8.1. Vista Tablas
8.2. Vista Jerárquica Horizontal
8.3. Vista Jerárquica Vertical
8.4. Vista Tabla Cruzada
9. Gráficos con HTML5 y JavaScript
9.1. Creando Gráficos de Datos con Canvas
9.2. Creando Gráficos de Datos con SVG
9.3. Creando Gráficos Interactivos
10. Trabajando con Servicios WCF
10.1. Creando un Servicio WCF alojado en IIS
10.2. Creando un Servicio WCF alojado en su propio Servidor
10.3. Creando un Cliente WCF usando Proxys
10.4. Creando un Cliente WCF usando ChannelFactory
11. Trabajando con Servicios Web API (Servicios HTTP o REST)
11.1. Creando un Servicio Web API
11.2. Creando un Cliente desde .NET
11.3. Creando un Cliente JavaScript
11.4. Creando un Cliente WinForms (Nuevo)
11.5. Creando un Cliente Android (Nuevo)
12. Creando Web Sockets en el Servidor para Actualizar en Tiempo Real
12.1. Creando un Servidor WebSocket usando Fleck
12.2. Actualizando en Tiempo Real una App Web usando WebSockets
12.3. Actualizando en Tiempo Real una App Windows usando WebSockets (Nuevo)
12.4. Actualizando en Tiempo Real una App Android usando WebSockets (Nuevo)
13. Creando Web Sockets en el Cliente para Controlar Dispositivos de la Red Local
13.1. Usando Web Sockets para Explorar Archivos y Directorios
13.2. Usando Web Sockets para Impresión de Documentos
14. Trabajando con Mapas
14.1. Usando Google Maps
14.2. Usando Open Layer
14.3. Usando Mapas en Aplicaciones Windows Forms (Nuevo)
14.4. Actualizando Mapas en Tiempo Real
15. Trabajando con Archivos Gigantes en la Aplicación Web
15.1. Subir Archivos Gigantes desde la App Web al Sistema de Archivos
15.2. Bajar Archivos Gigantes desde el Sistema de Archivos al Cliente
16. Manejando Miles de Registros en la Aplicación Web
16.1. Mostrar Miles de Registros desde el Servidor de Datos al Cliente
16.2. Grabar Miles de Registros desde la App Web al Servidor de Datos
Observaciones sobre el Contenido
- No Uso Frameworks ni Librerías de Terceros Ni en el Servidor Ni en el Cliente
- 10 % del código está en el servidor en C#
- 90% del código está en el cliente en JavaScript (APIs nativas multi navegador)
- Todo los ejemplos son reales del día a día del programador.
- En todos los ejemplos el código esta basado en alto rendimiento (performance)
- A partir de la mitad del curso se resuelven los problemas mas comunes que presenta el Desarrollo Web debido al ancho de banda.
Horario
- Sábados de 3:00 pm a 9:00 pm
Fecha de Inicio
- Sábado 12 de Enero del 2019
Duración del Curso
Total: 144 horas
Tiempo: 6 meses
Frecuencia: 6 horas semanales (24 horas mensuales)
Inversión
- Mensual: 250 nuevos soles
- Total 6 meses: 1500 nuevos soles
Forma de Pago
- En efectivo, al inicio de cada mes (250 soles)
Contacto
Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:
Asunto: Curso ASP.NET MVC & JavaScript Sabados Tarde
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
Registro
Solo se considerará a los 25 primeros que envíen su correo ya que la capacidad del lugar es limitada.
Lugar del Curso
Será en la Zona Norte de Lima, se le enviará la dirección exacta a todos los registrados una semana antes de iniciar el curso.
A los interesados les comunico el inicio del Curso de ASP.NET MVC & JavaScript los días Sábados en las Tardes y será exclusivamente para alumnos nuevos.
En el curso se verá mi Arquitectura Desconectada Sin Capas orientada a Performance y sobre todo se hará muchas aplicaciones en Tiempo Real usando Web Sockets todo en forma nativa solo con C# en el servidor y JavaScript puro en el cliente.
Beneficios de mi Arquitectura Web Desconectada Sin Capas y con Actualización en Tiempo Real
1. Desarrollo en menos tiempo al no usar Capas.
2. En Producción es la mas veloz por no usar Frameworks ni Librerías y pocos archivos.
3. El mantenimiento es muy simple ya que solo basta cambiar el Store Procedure, no el código C# ni JavaScript que son genéricos.
Contenido del Curso
1. Arquitecturas de Desarrollo Web en ASP.NET
1.1. Arquitectura con Capas: N Conexiones, N Comandos, N Cursores
1.2. Arquitectura con Capas: 1 Conexion, N Comandos, N Cursores
1.3. Arquitectura con Capas: 1 Conexion, 1 Comando, N Cursores
1.4. Arquitectura sin Capas: 1 Conexion, 1 Comando, 1 Cadena (Mi creación)
2. Llamadas Asíncronas del Cliente al Servidor Web
2.1. Usando jQuery y JSON
2.2. Usando Angular.js y JSON (Nuevo)
2.3. Usando Vue.js y JSON (Nuevo)
2.4. Usando XHR y Cadenas (Mi creación)
3. Listando y Consultando Registros
3.1. Listando registros de una sola tabla
3.2. Listando registros de varias tablas
3.3. Consultando registros en forma conectada
3.4. Consultando registros en forma desconectada
4. Filtrando en forma desconectada
4.1. Filtros usando Textos
4.2. Filtros usando Listas
4.3. Filtros usando las Cabeceras de una Tabla o Grilla
5. Paginando y Ordenando en forma desconectada
5.1. Paginación simple de registros
5.2. Paginación de registros por Bloques
5.3. Paginación de Imágenes (Carrusel)
5.3. Ordenación de registros ascendente y descendente
6. Exportando datos en el Cliente y en Servidor
6.1. Creando un Archivo de Texto en el Cliente
6.2. Creando un Archivo CSV en el Cliente
6.3. Creando un Archivo XLS/HTML en el Cliente
6.4. Creando un Archivo XLSX en el Servidor
6.5. Creando un Archivo DOCX en el Servidor
6.6. Creando un Archivo PDF en el Servidor
7. Mantenimiento, Popups, Cabecera Detalle e Impresión
7.1. Mantenimiento de registros especifico
7.2. Creando Popups usando Divs
7.3. Trabajando con Cabecera Detalle
7.4. Imprimiendo datos de la página
7.5. Mantenimiento de registros genérico (Nuevo)
8. Presentación Personalizada y Reportes con JavaScript
8.1. Vista Tablas
8.2. Vista Jerárquica Horizontal
8.3. Vista Jerárquica Vertical
8.4. Vista Tabla Cruzada
9. Gráficos con HTML5 y JavaScript
9.1. Creando Gráficos de Datos con Canvas
9.2. Creando Gráficos de Datos con SVG
9.3. Creando Gráficos Interactivos
10. Trabajando con Servicios WCF
10.1. Creando un Servicio WCF alojado en IIS
10.2. Creando un Servicio WCF alojado en su propio Servidor
10.3. Creando un Cliente WCF usando Proxys
10.4. Creando un Cliente WCF usando ChannelFactory
11. Trabajando con Servicios Web API (Servicios HTTP o REST)
11.1. Creando un Servicio Web API
11.2. Creando un Cliente desde .NET
11.3. Creando un Cliente JavaScript
11.4. Creando un Cliente WinForms (Nuevo)
11.5. Creando un Cliente Android (Nuevo)
12. Creando Web Sockets en el Servidor para Actualizar en Tiempo Real
12.1. Creando un Servidor WebSocket usando Fleck
12.2. Actualizando en Tiempo Real una App Web usando WebSockets
12.3. Actualizando en Tiempo Real una App Windows usando WebSockets (Nuevo)
12.4. Actualizando en Tiempo Real una App Android usando WebSockets (Nuevo)
13. Creando Web Sockets en el Cliente para Controlar Dispositivos de la Red Local
13.1. Usando Web Sockets para Explorar Archivos y Directorios
13.2. Usando Web Sockets para Impresión de Documentos
14. Trabajando con Mapas
14.1. Usando Google Maps
14.2. Usando Open Layer
14.3. Usando Mapas en Aplicaciones Windows Forms (Nuevo)
14.4. Actualizando Mapas en Tiempo Real
15. Trabajando con Archivos Gigantes en la Aplicación Web
15.1. Subir Archivos Gigantes desde la App Web al Sistema de Archivos
15.2. Bajar Archivos Gigantes desde el Sistema de Archivos al Cliente
16. Manejando Miles de Registros en la Aplicación Web
16.1. Mostrar Miles de Registros desde el Servidor de Datos al Cliente
16.2. Grabar Miles de Registros desde la App Web al Servidor de Datos
Observaciones sobre el Contenido
- No Uso Frameworks ni Librerías de Terceros Ni en el Servidor Ni en el Cliente
- 10 % del código está en el servidor en C#
- 90% del código está en el cliente en JavaScript (APIs nativas multi navegador)
- Todo los ejemplos son reales del día a día del programador.
- En todos los ejemplos el código esta basado en alto rendimiento (performance)
- A partir de la mitad del curso se resuelven los problemas mas comunes que presenta el Desarrollo Web debido al ancho de banda.
Horario
- Sábados de 3:00 pm a 9:00 pm
Fecha de Inicio
- Sábado 12 de Enero del 2019
Duración del Curso
Total: 144 horas
Tiempo: 6 meses
Frecuencia: 6 horas semanales (24 horas mensuales)
Inversión
- Mensual: 250 nuevos soles
- Total 6 meses: 1500 nuevos soles
Forma de Pago
- En efectivo, al inicio de cada mes (250 soles)
Contacto
Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:
Asunto: Curso ASP.NET MVC & JavaScript Sabados Tarde
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
Registro
Solo se considerará a los 25 primeros que envíen su correo ya que la capacidad del lugar es limitada.
Lugar del Curso
Será en la Zona Norte de Lima, se le enviará la dirección exacta a todos los registrados una semana antes de iniciar el curso.
Etiquetas:
ASP.NET,
CSS3,
Curso MVC,
Entrenamiento,
Exportar,
Gráficos,
HTML5,
Importar,
Javascript,
Lduenas,
Librerías,
Mantenimiento,
MVC,
Performance,
Serializadores,
Taller Sabados,
WCF,
Web API,
Web Sockets,
WebForms
miércoles, 18 de julio de 2018
Conferencia CEPS UNI - Aplicaciones Web en Tiempo Real con WebSockets
Conferencia sobre Aplicaciones Web en Tiempo Real con WebSockets
Comparto con ustedes la conferencia que di el Martes 17 de Julio del 2018 en el CEPS UNI por su 50 Aniversario. Gracias a Cesar Oceda por la invitación y a mis alumnos que asistieron.
En esta conferencia muestro algunos de mis utilitarios desarrollados en .NET como Generadores de Código, Compresores de Imágenes, Manejadores de Archivos de Office: xlsx, docx, pdf, etc.
También muestro la aplicación de búsqueda de RUCs de la SUNAT con Archivos de texto y ejemplos de WebSockets como Chats, Paint, Sheets, Mantenimientos de Tablas y Gráficos en Tiempo Real.
Al final se ve un ejemplo con Google Maps y una Carga Masiva de archivos CSV en Base de Datos de SQL Server (genérico).
Comparto con ustedes la conferencia que di el Martes 17 de Julio del 2018 en el CEPS UNI por su 50 Aniversario. Gracias a Cesar Oceda por la invitación y a mis alumnos que asistieron.
En esta conferencia muestro algunos de mis utilitarios desarrollados en .NET como Generadores de Código, Compresores de Imágenes, Manejadores de Archivos de Office: xlsx, docx, pdf, etc.
También muestro la aplicación de búsqueda de RUCs de la SUNAT con Archivos de texto y ejemplos de WebSockets como Chats, Paint, Sheets, Mantenimientos de Tablas y Gráficos en Tiempo Real.
Al final se ve un ejemplo con Google Maps y una Carga Masiva de archivos CSV en Base de Datos de SQL Server (genérico).
Etiquetas:
.NET,
ASP.NET,
Carga Masiva,
CEPS,
Chat,
CSV,
DOCS,
Google Maps,
Gráficos,
Lduenas,
Mantenimiento,
Office,
Paint,
PDF,
Sheets,
SUNAT,
Tiempo Real,
UNI,
WebSockets,
xlsx
lunes, 11 de junio de 2018
Entrenamiento - Curso de ASP.NET MVC & JavaScript Domingos Mañanas
Curso de Desarrollo Web ASP.NET MVC & JavaScript Domingos Mañanas
A los interesados les comunico el inicio del último Curso de ASP.NET MVC & JavaScript los días Domingos en las Mañanas que durará hasta fin de año.
Para el próximo año dictaré otros Cursos como Desarrollo Web Móvil, Desarrollo Web IoT y Desarrollo con Inteligencia Artificial (IA) pero solo podrán asistir los que han llevado constantemente los Talleres (requisito indispensable).
En el curso se verá mi Arquitectura Desconectada Sin Capas orientada a Performance y sobre todo se hará muchas aplicaciones en Tiempo Real usando Web Sockets todo en forma nativa solo con C# en el servidor y JavaScript puro en el cliente.
Beneficios de mi Arquitectura Web Desconectada Sin Capas y con Actualización en Tiempo Real
1. Desarrollo en menos tiempo al no usar Capas.
2. En Producción es la mas veloz por no usar Frameworks ni Librerías y pocos archivos.
3. El mantenimiento es muy simple ya que solo basta cambiar el Store Procedure, no el código C# ni JavaScript que son genéricos.
Contenido del Curso
1. Arquitecturas de Desarrollo Web en ASP.NET
1.1. Arquitectura con Capas: N Conexiones, N Comandos, N Cursores
1.2. Arquitectura con Capas: 1 Conexion, N Comandos, N Cursores
1.3. Arquitectura con Capas: 1 Conexion, 1 Comando, N Cursores
1.4. Arquitectura con Capas: 1 Conexion, 1 Comando, 1 Cadena
2. Listando y Consultando Registros
2.1. Listando registros de una sola tabla
2.2. Listando registros de varias tablas
2.3. Consultando registros en forma conectada
2.4. Consultando registros en forma desconectada
3. Filtrando en forma desconectada
3.1. Filtros usando Textos
3.2. Filtros usando Listas
3.3. Filtros usando las Cabeceras de una Tabla o Grilla
4. Paginando y Ordenando en forma desconectada
4.1. Paginación simple de registros
4.2. Paginación de registros por Bloques
4.3. Paginación de Imágenes (Carrusel)
4.3. Ordenación de registros ascendente y descendente
5. Exportando datos en el Cliente y en Servidor
5.1. Creando un Archivo de Texto en el Cliente
5.2. Creando un Archivo CSV en el Cliente
5.3. Creando un Archivo XLS/HTML en el Cliente
5.4. Creando un Archivo XLSX en el Servidor
5.5. Creando un Archivo DOCX en el Servidor
5.6. Creando un Archivo PDF en el Servidor
6. Mantenimiento, Popups, Cabecera Detalle e Impresión
6.1. Mantenimiento de registros
6.2. Creando Popups usando Divs
6.3. Trabajando con Cabecera Detalle
6.4. Imprimiendo datos de la página
7. Presentación Personalizada y Reportes con JavaScript
7.1. Vista Tablas
7.2. Vista Jerárquica Horizontal
7.3. Vista Jerárquica Vertical
7.4. Vista Tabla Cruzada
8. Gráficos con HTML5 y JavaScript
8.1. Creando Gráficos de Datos con Canvas
8.2. Creando Gráficos de Datos con SVG
8.3. Creando Gráficos Interactivos
9. Trabajando con Servicios WCF
9.1. Creando un Servicio WCF alojado en IIS
9.2. Creando un Servicio WCF alojado en su propio Servidor
9.3. Creando un Cliente WCF usando Proxys
9.4. Creando un Cliente WCF usando ChannelFactory
10. Trabajando con Servicios Web API (Servicios HTTP o REST)
10.1. Creando un Servicio Web API
10.2. Creando un Cliente desde .NET
10.3. Creando un Cliente JavaScript
11. Creando Web Sockets en el Servidor para Actualizar en Tiempo Real
11.1. Creando un Servidor WebSocket usando Fleck
11.2. Actualizando en Tiempo Real una App Web usando WebSockets
11.3. Actualizando en Tiempo Real una App Windows usando WebSockets
12. Creando Web Sockets en el Cliente para Controlar Dispositivos de la Red Local
12.1. Usando Web Sockets para Explorar Archivos y Directorios
12.2. Usando Web Sockets para Impresión de Documentos
13. Trabajando con Mapas
13.1. Usando Google Maps
13.2. Usando Open Layer
13.3. Actualizando Mapas en Tiempo Real
14. Trabajando con Archivos Gigantes en la Aplicación Web
14.1. Subir Archivos Gigantes desde la App Web al Sistema de Archivos
14.2. Bajar Archivos Gigantes desde el Sistema de Archivos al Cliente
15. Manejando Miles de Registros en la Aplicación Web
15.1. Mostrar Miles de Registros desde el Servidor de Datos al Cliente
15.2. Grabar Miles de Registros desde la App Web al Servidor de Datos
Observaciones sobre el Contenido
- No Uso Frameworks ni Librerías de Terceros Ni en el Servidor Ni en el Cliente
- 10 % del código está en el servidor en C#
- 90% del código está en el cliente en JavaScript (APIs nativas multi navegador)
- Todo los ejemplos son reales del día a día del programador.
- En todos los ejemplos el código esta basado en alto rendimiento (performance)
- A partir de la mitad del curso se resuelven los problemas mas comunes que presenta el Desarrollo Web debido al ancho de banda.
Horario
- Domingos de 9:00 am a 2:00 pm
Fecha de Inicio
- Domingo 1 de Julio
Duración del Curso
Total: 120 horas
Tiempo: 6 meses
Frecuencia: 5 horas semanales (20 horas mensuales)
Inversión
- Mensual: 300 nuevos soles
- Total 6 meses: 1800 nuevos soles
Forma de Pago
- En efectivo, al inicio de cada mes (300 soles)
Contacto
Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:
Asunto: Curso ASP.NET MVC & JavaScript Domingos Mañanas
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
- Ha sido Ex-Alumno (especificar PECI .NET, Web Developer, Talleres, Seminarios)
Registro
Solo se considerará a los 25 primeros que envíen su correo ya que la capacidad del lugar es limitada.
Lugar del Curso
Será en la Zona Norte de Lima, se le enviará la dirección exacta a todos los registrados una semana antes de iniciar el curso.
Comentario Final
Ya son varios años enseñando a un grupo de programadores sobre "Desarrollo Web" enfocado en Performance, para lo cual cambié mi forma de programar y cree una nueva Arquitectura Ligera sin Librerías Ni Frameworks, usando Cadenas y trabajando casi todo desconectado en JavaScript.
Quizá no tuve la dicha de que la mayoría la usara, pero cuando casi todos tengan problemas de velocidad de las paginas, problemas en el mantenimiento de la aplicación y se pasen largamente los tiempos de desarrollo usando bastantes personas y gastando mucho dinero, quizás alguno recuerde que yo luche contra los estándares actuales para ser el desarrollo mas simple.
Es la última oportunidad para los que nunca han llevado cursos conmigo, aprendan la verdadera programación, enfocada a escribir poco código, consumir poca memoria y CPU y sobre todo a resolver problemas y no a crearlos (como hacen la mayoría al desarrollar aplicaciones: automatizar problemas).
Recuerden que el mejor es el que "lo Complejo lo hace Simple" (Nativo, Poco Código) y no el que "lo Simple lo hace Complejo" (Frameworks, Librerías, etc).
A los interesados les comunico el inicio del último Curso de ASP.NET MVC & JavaScript los días Domingos en las Mañanas que durará hasta fin de año.
Para el próximo año dictaré otros Cursos como Desarrollo Web Móvil, Desarrollo Web IoT y Desarrollo con Inteligencia Artificial (IA) pero solo podrán asistir los que han llevado constantemente los Talleres (requisito indispensable).
En el curso se verá mi Arquitectura Desconectada Sin Capas orientada a Performance y sobre todo se hará muchas aplicaciones en Tiempo Real usando Web Sockets todo en forma nativa solo con C# en el servidor y JavaScript puro en el cliente.
Beneficios de mi Arquitectura Web Desconectada Sin Capas y con Actualización en Tiempo Real
1. Desarrollo en menos tiempo al no usar Capas.
2. En Producción es la mas veloz por no usar Frameworks ni Librerías y pocos archivos.
3. El mantenimiento es muy simple ya que solo basta cambiar el Store Procedure, no el código C# ni JavaScript que son genéricos.
Contenido del Curso
1. Arquitecturas de Desarrollo Web en ASP.NET
1.1. Arquitectura con Capas: N Conexiones, N Comandos, N Cursores
1.2. Arquitectura con Capas: 1 Conexion, N Comandos, N Cursores
1.3. Arquitectura con Capas: 1 Conexion, 1 Comando, N Cursores
1.4. Arquitectura con Capas: 1 Conexion, 1 Comando, 1 Cadena
2. Listando y Consultando Registros
2.1. Listando registros de una sola tabla
2.2. Listando registros de varias tablas
2.3. Consultando registros en forma conectada
2.4. Consultando registros en forma desconectada
3. Filtrando en forma desconectada
3.1. Filtros usando Textos
3.2. Filtros usando Listas
3.3. Filtros usando las Cabeceras de una Tabla o Grilla
4. Paginando y Ordenando en forma desconectada
4.1. Paginación simple de registros
4.2. Paginación de registros por Bloques
4.3. Paginación de Imágenes (Carrusel)
4.3. Ordenación de registros ascendente y descendente
5. Exportando datos en el Cliente y en Servidor
5.1. Creando un Archivo de Texto en el Cliente
5.2. Creando un Archivo CSV en el Cliente
5.3. Creando un Archivo XLS/HTML en el Cliente
5.4. Creando un Archivo XLSX en el Servidor
5.5. Creando un Archivo DOCX en el Servidor
5.6. Creando un Archivo PDF en el Servidor
6. Mantenimiento, Popups, Cabecera Detalle e Impresión
6.1. Mantenimiento de registros
6.2. Creando Popups usando Divs
6.3. Trabajando con Cabecera Detalle
6.4. Imprimiendo datos de la página
7. Presentación Personalizada y Reportes con JavaScript
7.1. Vista Tablas
7.2. Vista Jerárquica Horizontal
7.3. Vista Jerárquica Vertical
7.4. Vista Tabla Cruzada
8. Gráficos con HTML5 y JavaScript
8.1. Creando Gráficos de Datos con Canvas
8.2. Creando Gráficos de Datos con SVG
8.3. Creando Gráficos Interactivos
9. Trabajando con Servicios WCF
9.1. Creando un Servicio WCF alojado en IIS
9.2. Creando un Servicio WCF alojado en su propio Servidor
9.3. Creando un Cliente WCF usando Proxys
9.4. Creando un Cliente WCF usando ChannelFactory
10. Trabajando con Servicios Web API (Servicios HTTP o REST)
10.1. Creando un Servicio Web API
10.2. Creando un Cliente desde .NET
10.3. Creando un Cliente JavaScript
11. Creando Web Sockets en el Servidor para Actualizar en Tiempo Real
11.1. Creando un Servidor WebSocket usando Fleck
11.2. Actualizando en Tiempo Real una App Web usando WebSockets
11.3. Actualizando en Tiempo Real una App Windows usando WebSockets
12. Creando Web Sockets en el Cliente para Controlar Dispositivos de la Red Local
12.1. Usando Web Sockets para Explorar Archivos y Directorios
12.2. Usando Web Sockets para Impresión de Documentos
13. Trabajando con Mapas
13.1. Usando Google Maps
13.2. Usando Open Layer
13.3. Actualizando Mapas en Tiempo Real
14. Trabajando con Archivos Gigantes en la Aplicación Web
14.1. Subir Archivos Gigantes desde la App Web al Sistema de Archivos
14.2. Bajar Archivos Gigantes desde el Sistema de Archivos al Cliente
15. Manejando Miles de Registros en la Aplicación Web
15.1. Mostrar Miles de Registros desde el Servidor de Datos al Cliente
15.2. Grabar Miles de Registros desde la App Web al Servidor de Datos
Observaciones sobre el Contenido
- No Uso Frameworks ni Librerías de Terceros Ni en el Servidor Ni en el Cliente
- 10 % del código está en el servidor en C#
- 90% del código está en el cliente en JavaScript (APIs nativas multi navegador)
- Todo los ejemplos son reales del día a día del programador.
- En todos los ejemplos el código esta basado en alto rendimiento (performance)
- A partir de la mitad del curso se resuelven los problemas mas comunes que presenta el Desarrollo Web debido al ancho de banda.
Horario
- Domingos de 9:00 am a 2:00 pm
Fecha de Inicio
- Domingo 1 de Julio
Duración del Curso
Total: 120 horas
Tiempo: 6 meses
Frecuencia: 5 horas semanales (20 horas mensuales)
Inversión
- Mensual: 300 nuevos soles
- Total 6 meses: 1800 nuevos soles
Forma de Pago
- En efectivo, al inicio de cada mes (300 soles)
Contacto
Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:
Asunto: Curso ASP.NET MVC & JavaScript Domingos Mañanas
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
- Ha sido Ex-Alumno (especificar PECI .NET, Web Developer, Talleres, Seminarios)
Registro
Solo se considerará a los 25 primeros que envíen su correo ya que la capacidad del lugar es limitada.
Lugar del Curso
Será en la Zona Norte de Lima, se le enviará la dirección exacta a todos los registrados una semana antes de iniciar el curso.
Comentario Final
Ya son varios años enseñando a un grupo de programadores sobre "Desarrollo Web" enfocado en Performance, para lo cual cambié mi forma de programar y cree una nueva Arquitectura Ligera sin Librerías Ni Frameworks, usando Cadenas y trabajando casi todo desconectado en JavaScript.
Quizá no tuve la dicha de que la mayoría la usara, pero cuando casi todos tengan problemas de velocidad de las paginas, problemas en el mantenimiento de la aplicación y se pasen largamente los tiempos de desarrollo usando bastantes personas y gastando mucho dinero, quizás alguno recuerde que yo luche contra los estándares actuales para ser el desarrollo mas simple.
Es la última oportunidad para los que nunca han llevado cursos conmigo, aprendan la verdadera programación, enfocada a escribir poco código, consumir poca memoria y CPU y sobre todo a resolver problemas y no a crearlos (como hacen la mayoría al desarrollar aplicaciones: automatizar problemas).
Recuerden que el mejor es el que "lo Complejo lo hace Simple" (Nativo, Poco Código) y no el que "lo Simple lo hace Complejo" (Frameworks, Librerías, etc).
Etiquetas:
ASP.NET,
CSS3,
Curso MVC,
Entrenamiento,
Exportar,
Gráficos,
HTML5,
Importar,
Javascript,
Lduenas,
Librerías,
Mantenimiento,
MVC,
Performance,
Serializadores,
Taller Sabados,
WCF,
Web API,
Web Sockets,
WebForms
martes, 13 de febrero de 2018
Entrenamiento - Curso de ASP.NET MVC & JavaScript Sábados Mañanas
Curso de Desarrollo Web ASP.NET MVC & JavaScript Sábados Mañanas
A los interesados les comunico la apertura de un nuevo grupo del Curso de ASP.NET MVC & JavaScript los días Sábados en las Mañanas.
En el curso se verá mi nueva Arquitectura Desconectada Sin Capas orientada a Performance y sobre todo se hará muchas aplicaciones en Tiempo Real usando Web Sockets todo en forma nativa solo con C# en el servidor y JavaScript puro en el cliente.
Beneficios de mi Arquitectura Web Desconectada Sin Capas y con Actualización en Tiempo Real
1. Desarrollo en menos tiempo al no usar Capas.
2. En Producción es la mas veloz por no usar Frameworks ni Librerías y pocos archivos.
3. El mantenimiento es muy simple ya que solo basta cambiar el Store Procedure, no el código C# ni JavaScript que son genéricos.
Contenido del Curso
1. Entendiendo el Desarrollo Web en ASP .NET
1.1. Arquitectura de una Aplicación Web ASP.NET
1.2. Aplicaciones Web Forms y Aplicaciones MVC
1.3. El problema de la Performance en Sitios Web
1.4. Arquitectura de Alto Rendimiento de una Aplicación Web
2. Creando Aplicaciones Web Distribuidas
2.1. Creando Librerías de Entidades del Negocio
2.2. Creando Librerías de Acceso a Datos
2.3. Creando Librerías de Reglas del Negocio
2.4. Creando una Aplicación Web MVC
3. Listando Registros
3.1. Usando el control WebGrid con Listas de Objetos
3.2. Usando JQuery y JSON
3.3. Usando XHR y Strings
4. Trabajando Desconectado con JavaScript
4.1. Filtrando registros
4.2. Paginando registros
4.3. Ordenando registros
4.4. Exportando a Texto y Excel
5. Mantenimiento, Popups, Cabecera Detalle e Impresión
5.1. Mantenimiento de registros
5.2. Creando Popups usando Divs
5.3. Trabajando con Cabecera Detalle
5.4. Imprimiendo datos de la página
6. Presentación Personalizada y Reportes con JavaScript
6.1. Vista Tablas
6.2. Vista Jerárquica Horizontal
6.3. Vista Jerárquica Vertical
6.4. Vista Tabla Cruzada
7. Gráficos con HTML5 y JavaScript
7.1. Creando Gráficos de Datos con Canvas
7.2. Creando Gráficos de Datos con SVG
7.3. Creando Gráficos Interactivos
8. Trabajando con Servicios (WCF y Web API)
8.1. Creando y Consumiendo un Servicio WCF alojado en IIS
8.2. Creando y Consumiendo un Servicio WCF alojado en su propio Servidor
8.3. Creando un Servicio Web API y Consumiendo desde .NET
8.4. Creando un Servicio Web API y Consumiendo desde JavaScript
9. Programación En Tiempo Real en ASP.NET
9.1. Creando un Servidor WebSocket usando Fleck
9.2. Actualizando en Tiempo Real una App Web usando WebSockets
9.3. Actualizando en Tiempo Real una App Windows usando WebSockets
9.4. Usando Web Sockets como Sistema Manejador de Archivos (CMS)
9.5. Usando Web Sockets para Controlar Dispositivos en el Cliente (Lectoras Impresoras, etc)
10. Manejando Gran Cantidad de Datos desde la App Web
10.1. Subir Archivos Gigantes desde la App Web al Sistema de Archivos
10.2. Bajar Archivos Gigantes desde el Sistema de Archivos al Cliente
10.3. Grabar Miles de Registros desde la App Web al Servidor de Datos
10.4. Mostrar Miles de Registros desde el Servidor de Datos al Cliente
Observaciones sobre el Contenido
- No Uso Frameworks ni Librerías de Terceros Ni en el Servidor Ni en el Cliente
- 10 % del código está en el servidor en C#
- 90% del código está en el cliente en JavaScript (APIs nativas multi navegador)
- Todo los ejemplos son reales del día a día del programador.
- En todos los ejemplos el código esta basado en alto rendimiento (performance)
- A partir de la mitad del curso se resuelven los problemas mas comunes que presenta el Desarrollo Web debido al ancho de banda.
Horario
- Sábados de 9:00 am a 2:00 pm
Fecha de Inicio
- Sábado 3 de Marzo
Duración del Curso
Total: 120 horas
Tiempo: 6 meses
Frecuencia: 5 horas semanales (20 horas mensuales)
Inversión
- Mensual: 300 nuevos soles
- Total 6 meses: 1800 nuevos soles
Forma de Pago
- En efectivo, al inicio de cada mes (300 soles)
Contacto
Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:
Asunto: Curso ASP.NET MVC & JavaScript Sábados Mañanas
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
- Ha sido Ex-Alumno (especificar PECI .NET, Web Developer, Talleres, Seminarios)
Registro
Solo se considerará a los 25 primeros que envíen su correo ya que la capacidad del lugar es limitada.
Lugar del Curso
Será en la Zona Norte de Lima, se le enviará la dirección exacta a todos los registrados una semana antes de iniciar el curso.
A los interesados les comunico la apertura de un nuevo grupo del Curso de ASP.NET MVC & JavaScript los días Sábados en las Mañanas.
En el curso se verá mi nueva Arquitectura Desconectada Sin Capas orientada a Performance y sobre todo se hará muchas aplicaciones en Tiempo Real usando Web Sockets todo en forma nativa solo con C# en el servidor y JavaScript puro en el cliente.
Beneficios de mi Arquitectura Web Desconectada Sin Capas y con Actualización en Tiempo Real
1. Desarrollo en menos tiempo al no usar Capas.
2. En Producción es la mas veloz por no usar Frameworks ni Librerías y pocos archivos.
3. El mantenimiento es muy simple ya que solo basta cambiar el Store Procedure, no el código C# ni JavaScript que son genéricos.
Contenido del Curso
1. Entendiendo el Desarrollo Web en ASP .NET
1.1. Arquitectura de una Aplicación Web ASP.NET
1.2. Aplicaciones Web Forms y Aplicaciones MVC
1.3. El problema de la Performance en Sitios Web
1.4. Arquitectura de Alto Rendimiento de una Aplicación Web
2. Creando Aplicaciones Web Distribuidas
2.1. Creando Librerías de Entidades del Negocio
2.2. Creando Librerías de Acceso a Datos
2.3. Creando Librerías de Reglas del Negocio
2.4. Creando una Aplicación Web MVC
3. Listando Registros
3.1. Usando el control WebGrid con Listas de Objetos
3.2. Usando JQuery y JSON
3.3. Usando XHR y Strings
4. Trabajando Desconectado con JavaScript
4.1. Filtrando registros
4.2. Paginando registros
4.3. Ordenando registros
4.4. Exportando a Texto y Excel
5. Mantenimiento, Popups, Cabecera Detalle e Impresión
5.1. Mantenimiento de registros
5.2. Creando Popups usando Divs
5.3. Trabajando con Cabecera Detalle
5.4. Imprimiendo datos de la página
6. Presentación Personalizada y Reportes con JavaScript
6.1. Vista Tablas
6.2. Vista Jerárquica Horizontal
6.3. Vista Jerárquica Vertical
6.4. Vista Tabla Cruzada
7. Gráficos con HTML5 y JavaScript
7.1. Creando Gráficos de Datos con Canvas
7.2. Creando Gráficos de Datos con SVG
7.3. Creando Gráficos Interactivos
8. Trabajando con Servicios (WCF y Web API)
8.1. Creando y Consumiendo un Servicio WCF alojado en IIS
8.2. Creando y Consumiendo un Servicio WCF alojado en su propio Servidor
8.3. Creando un Servicio Web API y Consumiendo desde .NET
8.4. Creando un Servicio Web API y Consumiendo desde JavaScript
9. Programación En Tiempo Real en ASP.NET
9.1. Creando un Servidor WebSocket usando Fleck
9.2. Actualizando en Tiempo Real una App Web usando WebSockets
9.3. Actualizando en Tiempo Real una App Windows usando WebSockets
9.4. Usando Web Sockets como Sistema Manejador de Archivos (CMS)
9.5. Usando Web Sockets para Controlar Dispositivos en el Cliente (Lectoras Impresoras, etc)
10. Manejando Gran Cantidad de Datos desde la App Web
10.1. Subir Archivos Gigantes desde la App Web al Sistema de Archivos
10.2. Bajar Archivos Gigantes desde el Sistema de Archivos al Cliente
10.3. Grabar Miles de Registros desde la App Web al Servidor de Datos
10.4. Mostrar Miles de Registros desde el Servidor de Datos al Cliente
Observaciones sobre el Contenido
- No Uso Frameworks ni Librerías de Terceros Ni en el Servidor Ni en el Cliente
- 10 % del código está en el servidor en C#
- 90% del código está en el cliente en JavaScript (APIs nativas multi navegador)
- Todo los ejemplos son reales del día a día del programador.
- En todos los ejemplos el código esta basado en alto rendimiento (performance)
- A partir de la mitad del curso se resuelven los problemas mas comunes que presenta el Desarrollo Web debido al ancho de banda.
Horario
- Sábados de 9:00 am a 2:00 pm
Fecha de Inicio
- Sábado 3 de Marzo
Duración del Curso
Total: 120 horas
Tiempo: 6 meses
Frecuencia: 5 horas semanales (20 horas mensuales)
Inversión
- Mensual: 300 nuevos soles
- Total 6 meses: 1800 nuevos soles
Forma de Pago
- En efectivo, al inicio de cada mes (300 soles)
Contacto
Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:
Asunto: Curso ASP.NET MVC & JavaScript Sábados Mañanas
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
- Ha sido Ex-Alumno (especificar PECI .NET, Web Developer, Talleres, Seminarios)
Registro
Solo se considerará a los 25 primeros que envíen su correo ya que la capacidad del lugar es limitada.
Lugar del Curso
Será en la Zona Norte de Lima, se le enviará la dirección exacta a todos los registrados una semana antes de iniciar el curso.
Etiquetas:
ASP.NET,
CSS3,
Curso MVC,
Entrenamiento,
Exportar,
Gráficos,
HTML5,
Importar,
Javascript,
Lduenas,
Librerías,
Mantenimiento,
MVC,
Performance,
Serializadores,
Taller Sabados,
WCF,
Web API,
Web Sockets,
WebForms
viernes, 1 de diciembre de 2017
El Manual del Día: Windows Presentation Foundation Parte 2
MSDN - Manual de Windows Presentation Foundation Parte 2
Titulo: Manual de Windows Presentation Foundation Parte 2
Fuente Original: Microsoft Developer Network (MSDN)
Compilado Por: Luis Dueñas Huaroto (Lduenas)
Año de Compilación: 2008
Número de Páginas: 473
Indice del Manual de Windows Presentation Foundation (Parte 2)
4. Controles
4.1. Información General sobre Controles
4.2. Tutorial: Crear un Botón Animado mediante el uso de XAML
4.3. Personalización de Controles
4.3.1. Información General sobre la Creación de Controles
4.3.2. Instrucciones para el Diseño de Controles con Estilos
4.3.3. Adornos
4.3.3.1. Información General sobre Adornos
4.3.3.2. Temas Cómo de Adornos
4.3.3.2.1. Cómo: Implementar un Adorno
4.3.3.2.2 Cómo: Enlazar un Adorno a un Elemento
4.3.3.2.3. Cómo: Incluir Adornos en los Elementos Secundarios de un Panel
4.3.3.2.4. Cómo: Quitar un Adorno de un Elemento
4.3.3.2.5. Cómo: Quitar Todos los Adornos de un Elemento
4.3.4. Ejemplos de ControlTemplate
4.3.4.1. Ejemplo de ControlTemplate de Button
4.3.4.2. Ejemplo de ControlTemplate de CheckBox
4.3.4.3. Ejemplo de ControlTemplate de ComboBox
4.3.4.4. Ejemplo de ControlTemplate de ComboBoxItem
4.3.4.5. Ejemplo de ControlTemplate de ContextMenu
4.3.4.6. Ejemplo de ControlTemplate para DocumentViewer
4.3.4.8. Ejemplo de ControlTemplate de Frame
4.3.4.9. Ejemplo de ControlTemplate de GroupBox
4.3.4.10. Ejemplo de ControlTemplate de Label
4.3.4.11. Ejemplo de ControlTemplate de ListBox
4.3.4.12. Ejemplo de ControlTemplate de ListBoxItem
4.3.4.13. Ejemplo de ControlTemplate de ListView
4.3.4.14. Ejemplo de ControlTemplate de ListViewItem
4.3.4.15. Ejemplo de ControlTemplate de Menu
4.3.4.16. Ejemplo de ControlTemplate para MenuItem
4.3.4.17. Ejemplo de ControlTemplate de NavigationWindow
4.3.4.18. Ejemplo de ControlTemplate para ProgressBar
4.3.4.19. Ejemplo de ControlTemplate de RadioButton
4.3.4.20. Ejemplo de ControlTemplate de ScrollBar
4.3.4.21. Ejemplo de ControlTemplate de ScrollViewer
4.3.4.22. Ejemplo de ControlTemplate de Slider
4.3.4.23. Ejemplo de ControlTemplate de StatusBar
4.3.4.24. Ejemplo de ControlTemplate de TabControl
4.3.4.25. Ejemplo de ControlTemplate de TabItem
4.3.4.26. Ejemplo de ControlTemplate de TextBox
4.3.4.27. Ejemplo de ControlTemplate de ToolBar
4.3.4.28. Ejemplo de ControlTemplate de ToolTip
4.3.4.29. Ejemplo de ControlTemplate de TreeView
4.3.4.30. Ejemplo de ControlTemplate para TreeViewItem
4.3.4.31. Ejemplo de ControlTemplate de Window
4.3.5. Automatización de la Interfaz de Usuario de un Control Personalizado de WPF
4.4. Agrupar Controles por Categoría
4.5. Modelos de Contenido
4.5.1. Modelo de Contenido de WPF
4.5.2. Información General sobre el Modelo de Contenido de Controles
4.5.3. Información General sobre el Modelo de Contenido de Decorador
4.5.4. Información General sobre el Modelo de Contenido de Paneles
4.5.5. Información General sobre el Modelo de Contenido de TextBlock
4.5.6. Información General sobre el Modelo de Contenido de TextBox
5. Datos
5.1. Enlace de Datos
5.1.1. Información General sobre el Enlace de Datos
5.1.2. Información General sobre Orígenes de Enlaces
5.1.3. Información General sobre Plantillas de Datos
5.1.4. Información General sobre Declaraciones de Enlaces
5.1.5. Temas Cómo sobre Enlace de Datos
5.1.5.1. Cómo: Crear un Enlace Sencillo
5.1.5.2. Cómo: Especificar el Origen de Enlace
5.1.5.3. Cómo: Hacer que los Datos estén Disponibles para el Enlace XAML
5.1.5.4. Cómo: Controlar Cuándo el Texto de TextBox Actualiza el Origen
5.1.5.5. Cómo: Especificar la Dirección del Enlace
5.1.5.6. Cómo: Enlazar a una Colección y Mostrar Información Basada en la Selección
5.1.5.7. Cómo: Enlazar a una Enumeración
5.1.5.8. Cómo: Enlazar las Propiedades de dos Controles
5.1.5.9. Cómo: Implementar la Validación de Enlaces
5.1.5.10. Cómo: Implementar Lógica de Validación en Objetos Personalizados
5.1.5.11. Cómo: Obtener el Objeto de Enlace a Partir de una Propiedad de Destino Enlazada
5.1.5.12. Cómo: Implementar una CompositeCollection
5.1.5.13. Cómo: Convertir Datos Enlazados
5.1.5.14. Cómo: Crear un Enlace en Código
5.1.5.15. Cómo: Obtener la Vista Predeterminada de Recolección de Datos
5.1.5.16. Cómo: Navegar por los Objetos de una Colección de Datos mediante CollectionView
5.1.5.17. Cómo: Filtrar Datos en una Vista
5.1.5.18. Cómo: Ordenar Datos en una Vista
5.1.5.19. Cómo: Ordenar y Agrupar Datos mediante una Vista en XAML
5.1.5.20. Cómo: Usar el Patrón Principal Detalle con datos Jerárquicos
5.1.5.21. Cómo: Usar el Patrón Principal Detalle con Datos XML Jerárquicos
5.1.5.22. Cómo: Generar un Valor Basado en una Lista de Elementos Enlazados
5.1.5.23. Cómo: Implementar la Notificación de Cambio de Propiedad
5.1.5.24. Cómo: Crear y Enlazar a una Colección ObservableCollection
5.1.5.25. Cómo: Implementar PriorityBinding
5.1.5.26. Cómo: Enlazar a Datos XML mediante XMLDataProvider y Consultas XPath
5.1.5.27. Cómo: Enlazar a los Resultados de una Consulta LINQ para XML, XDocument o XElement
5.1.5.28. Cómo: Usar Espacios de Nombres XML en el Enlace de Datos
5.1.5.29. Cómo: Enlazar a un Origen de Datos ADO .NET
5.1.5.30. Cómo: Enlazar a un Método
5.1.5.31. Cómo: Configurar la Notificación de Actualizaciones de Enlaces
5.1.5.32. Cómo: Borrar Enlaces
5.1.5.33. Cómo: Buscar Elementos Generados por un Objeto DataTemplate
5.1.5.34. Cómo: Enlazar a un Servicio Web
5.1.5.35. Cómo: Enlazar a los Resultados de una Consulta LINQ
5.2. Arrastrar y Colocar
5.2.1. Información General sobre la Función de Arrastrar y Colocar
5.2.2. Temas Cómo de Arrastrar y Colocar
5.2.2.1. Cómo: Usar un Control Thumb para Habilitar la Acción de Arrastrar
5.2.2.2. Cómo: Crear un Objeto de Datos
5.2.2.3. Cómo: Determinar si un Formato de Datos está Presente en un Objeto de Datos
5.2.2.4. Cómo: Mostrar los Formatos de Datos en un Objeto de Datos
5.2.2.5. Cómo: Recuperar Datos en un Formato Concreto
5.2.2.6. Cómo: Almacenar Varios Formatos de Datos en un Objeto de Datos
6. Documentos
6.1. Documentos en Windows Presentation Foundation
6.2. Almacenamiento y Serialización de Documentos
6.3. Anotaciones
6.3.1. Información General sobre Anotaciones
6.3.2. Esquema en Anotaciones
6.4. Contenido Dinámico
6.4.1. Información General sobre Documentos Dinámicos
6.4.2. Información General sobre el Modelo de Contenido de TextElement
6.4.3. Información General sobre Tablas
6.4.4. Temas "Cómo..." de Elementos de Contenido Dinámico
6.4.4.1. Cómo: Ajustar el Espaciado entre Párrafos
6.4.4.2. Cómo: Generar una Tabla mediante Programación
6.4.4.3. Cómo: Cambiar la Propiedad FlowDirection de Contenido mediante Programación
6.4.4.4. Cómo: Cambiar la Propiedad TextWrapping mediante Programación
6.4.4.5. Cómo: Definir una Tabla con XAML
6.4.4.6. Cómo: Modificar la Tipografía de Texto
6.4.4.7. Cómo: Habilitar el Recorte de Texto
6.4.4.8. Cómo: Insertar un Elemento en Texto mediante Programación
6.4.4.9. Cómo: Manipular Elementos de Contenido Dinámico mediante la Propiedad Blocks
6.4.4.10. Cómo: Manipular Elementos de Contenido Dinámico mediante la Propiedad Inlines
6.4.4.11. Cómo: Manipular un Objeto FlowDocument mediante la Propiedad Blocks
6.4.4.12. Cómo: Manipular las Columnas de una Tabla mediante la Propiedad Columns
6.4.4.13. Cómo: Manipular Grupos de Filas de una Tabla mediante la Propiedad RowGroups
6.4.4.14. Cómo: Usar Elementos de Contenido Dinámico
6.4.4.15. Cómo: Usar Atributos de Separación de Columnas FlowDocument
6.5. Tipografía
6.5.1. Tipografía en Windows Presentation Foundation
6.5.2. Información General sobre ClearType
6.5.3. Configuración del Registro de ClearType
6.5.4. Dibujar Texto con Formato
6.5.5. Formato de Texto Avanzado
6.5.6. Fuentes en WPF
6.5.6.1. Características de las Fuentes OpenType
6.5.6.2. Empaquetar Fuentes con Aplicaciones
6.5.6.3. Paquete de Fuentes OpenType de Ejemplo
6.5.6.4. Temas Cómo sobre Fuentes
6.5.6.4.1. Cómo: Enumerar Fuentes del Sistema
6.5.6.4.2. Cómo: Utilizar la Clase FontSizeConverter
6.5.7. Glifos
6.5.7.1. Introducción al Objeto GlyphRun y al Elemento Glyphs
6.5.7.2. Dibujar Texto mediante Grifos
6.5.8. Temas Cómo sobre Tipografía
6.5.8.1. Cómo: Crear una Decoración de Texto
6.5.8.2. Cómo: Usar una Decoración de Texto con un Hipervínculo
6.5.8.3. Cómo: Aplicar Transformaciones a Texto
6.5.8.4. Cómo: Aplicar Animaciones a Texto
6.5.8.5. Cómo: Crear un Efecto de Texto
6.5.8.6. Cómo: Crear Texto con Sombreado
6.5.8.7. Cómo: Crear Texto con Contorno
6.5.8.8. Cómo: Crear una Animación de PathGeometry para Texto
6.5.8.9. Cómo: Dibujar Texto en el Fondo de un Control
6.5.8.10. Cómo: Dibujar Texto en un Elemento Visual
6.5.8.11. Cómo: Establecer Propiedades Tipográficas
6.5.8.12. Cómo: Usar Caracteres Especiales en XAML
6.6. Imprimir y Administración de Sistemas de Impresión
6.6.1. Información General sobre Impresión
6.6.2. Temas Cómo de Impresión
6.6.2.1. Cómo: Invocar un Cuadro de Diálogo de Impresión
6.6.2.2. Cómo: Clonar una Impresora
6.6.2.3. Cómo: Diagnosticar Trabajos de Impresión Problemáticos
6.6.2.4. Cómo: Detectar si un Trabajo de Impresión se puede Imprimir en esta Hora del Día
6.6.2.5. Cómo: Enumerar un Subconjunto de Colas de Impresión
6.6.2.6. Cómo: Ampliar el Esquema de Impresión y Crear Nuevas Clases del Sistema de Impresión
6.6.2.7. Cómo: Obtener Propiedades de un Objeto de Sistema de Impresión sin Reflexión
6.6.2.8. Cómo: Imprimir mediante Programación Archivos XPS
6.6.2.9. Cómo: Supervisar de forma Remota el Estado de las Impresoras
6.6.2.10. Cómo: Validar y Combinar Elementos PrintTicket
7. Gráficos y Multimedia
7.1. Información General sobre Características de Gráficos, Animación y Multimedia en WPF
7.2. Información General sobre la Representación de Gráficos en WP
7.3. Gráficos
7.3.1. Efectos de Mapa de Bits
7.3.1.1. Información General sobre Efectos de Mapa de Bits
7.3.1.2. Temas Cómo de Efectos de Mapa de Bits
7.3.1.2.1. Cómo: Crear un Efecto de Resplandor en el Margen Externo de un Objeto
7.3.1.2.2. Cómo: Animar un Efecto de Resplandor
7.3.1.2.3. Cómo: Animar Efectos de Mapa de Bits
7.3.1.2.4. Cómo: Aplicar un Efecto de Desenfoque a un Objeto Visual
7.3.1.2.5. Cómo: Animar un Efecto Visual de Desenfoque
7.3.1.2.6. Cómo: Crear un Efecto Visual de Sombra Paralela
7.3.1.2.7. Cómo: Animar un Efecto Visual de Sombra Paralela
7.3.1.2.8. Cómo: Crear un Efecto Visual con Bisel
7.3.1.2.9. Cómo: Animar un Efecto Visual con Bisel
7.3.1.2.10. Cómo: Crear un Efecto Visual con Relieves
7.3.1.2.11. Cómo: Animar un Efecto Visual con Relieves
7.3.1.2.12. Cómo: Crear Varios Efectos Visuales
7.3.1.2.13. Cómo: Animar Varios Efectos Visuales
7.3.1.2.14. Cómo: Usar un Efecto Visual Personalizado
7.3.1.2.15. Cómo: Aplicar un Efecto a Parte de una Imagen
7.3.1.2.16. Cómo: Animar un Efecto dentro de un BitmapEffectGroup
7.3.2. Pinceles
7.3.2.1. Información General sobre Pinceles de WPF
7.3.2.2. Información General sobre la Transformación de Pinceles
7.3.2.3. Información General sobre las Máscaras de Opacidad
7.3.2.4. Información General sobre el Dibujo con Colores Sólidos y Degradados
7.3.2.5. Pintar con Imágenes, Dibujos y Elementos Visuales
7.3.2.6. Información General sobre Objetos TileBrush
7.3.2.7. Temas Cómo de Pinceles
7.3.2.7.1. Cómo: Animar el Color o la Opacidad de un Objeto SolidColorBrush
7.3.2.7.2. Cómo: Animar la Posición o Color de un Punto de Degradado
7.3.2.7.3. Cómo: Crear una Reflexión
7.3.2.7.4. Cómo: Crear Patrones de Mosaico diferentes con un Objeto TileBrush
7.3.2.7.5. Cómo: Definir un Lápiz
7.3.2.7.6. Cómo: Pintar un Area con un Dibujo
7.3.2.7.7. Cómo: Pintar un Area con una Imagen
7.3.2.7.8. Cómo: Pintar un Area con un Degradado Lineal
7.3.2.7.9. Cómo: Pintar un Area con un Degradado Radial
7.3.2.7.10. Cómo: Pintar un Area con un Color Sólido
7.3.2.7.11. Cómo: Pintar un Area con un Pincel del Sistema
7.3.2.7.12. Cómo: Pintar un Area con un Vídeo
7.3.2.7.13. Cómo: Pintar un Area con un Objeto Visual
7.3.2.7.14. Cómo: Conservar la Relación de Aspecto de una Imagen utilizada como Fondo
7.3.2.7.15. Cómo: Establecer la Alineación Horizontal y Vertical de TileBrush
7.3.2.7.16. Cómo: Establecer el Tamaño del Mosaico de un TileBrush
7.3.2.7.17. Cómo: Transformar un Pincel
7.3.2.7.18. Cómo: Usar Colores del Sistema en un Degradado
7.3.3. Dibujos
7.3.3.1. Información General sobre Objetos Drawing
7.3.3.2. Temas Cómo de Dibujo
7.3.3.2.1. Cómo: Aplicar un Objeto BitmapEffect a un Dibujo
7.3.3.2.2. Cómo: Aplicar un Objeto GuidelineSet a un Dibujo
7.3.3.2.3. Cómo: Aplicar una Máscara de Opacidad a un Dibujo
7.3.3.2.4. Cómo: Aplicar una Transformación a un Dibujo
7.3.3.2.5. Cómo: Recortar un Dibujo
7.3.3.2.6. Cómo: Controlar la Opacidad de un Dibujo
7.3.3.2.7. Cómo: Crear un Dibujo Compuesto
7.3.3.2.8. Cómo: Crear un Objeto GeometryDrawing
7.3.3.2.9. Cómo: Dibujar una Imagen usando Objeto ImageDrawing
7.3.3.2.10. Cómo: Reproducir Elementos Multimedia con un Objeto VideoDrawing
7.3.3.2.11. Cómo: Usar un Dibujo como el Origen de una Imagen
7.3.4. Geometrías
7.3.4.1. Sintaxis de Marcado de Trazados
7.3.4.2. Información General sobre Geometría
7.3.4.3. Temas Cómo de Objetos de Geometría
7.3.4.3.1. Cómo: Animar una Región de Recorte
7.3.4.3.2. Cómo: Animar un EllipseGeometry
7.3.4.3.3. Cómo: Animar el Tamaño de un Objeto ArcSegment
7.3.4.3.4. Cómo: Controlar el Relleno de una Forma Compuesta
7.3.4.3.5. Cómo: Crear una Región de Recorte
7.3.4.3.6. Cómo: Crear una Geometría Combinada
7.3.4.3.7. Cómo: Crear una Forma Compuesta
7.3.4.3.8. Cómo: Crear una Curva Bézier Cúbica
7.3.4.3.9. Cómo: Crear una Línea mediante la Clase LineGeometry
7.3.4.3.10. Cómo: Crear un Segmento de Línea en una Clase PathGeometry
7.3.4.3.11. Cómo: Crear una Forma mediante una Clase PathGeometry
7.3.4.3.12. Cómo: Crear una Forma utilizando StreamGeometry
7.3.4.3.13. Cómo: Crear una curva Bézier Cuadrática
7.3.4.3.14. Cómo: Crear un Arco Elíptico
7.3.4.3.15. Cómo: Crear Varios Subtrazados en un PathGeometry
7.3.4.3.16. Cómo: Definir un Rectángulo usando una Clase RectangleGeometry
7.3.4.3.17. Cómo: Redondear las Esquinas de un RectangleGeometry
Titulo: Manual de Windows Presentation Foundation Parte 2
Fuente Original: Microsoft Developer Network (MSDN)
Compilado Por: Luis Dueñas Huaroto (Lduenas)
Año de Compilación: 2008
Número de Páginas: 473
Indice del Manual de Windows Presentation Foundation (Parte 2)
4. Controles
4.1. Información General sobre Controles
4.2. Tutorial: Crear un Botón Animado mediante el uso de XAML
4.3. Personalización de Controles
4.3.1. Información General sobre la Creación de Controles
4.3.2. Instrucciones para el Diseño de Controles con Estilos
4.3.3. Adornos
4.3.3.1. Información General sobre Adornos
4.3.3.2. Temas Cómo de Adornos
4.3.3.2.1. Cómo: Implementar un Adorno
4.3.3.2.2 Cómo: Enlazar un Adorno a un Elemento
4.3.3.2.3. Cómo: Incluir Adornos en los Elementos Secundarios de un Panel
4.3.3.2.4. Cómo: Quitar un Adorno de un Elemento
4.3.3.2.5. Cómo: Quitar Todos los Adornos de un Elemento
4.3.4. Ejemplos de ControlTemplate
4.3.4.1. Ejemplo de ControlTemplate de Button
4.3.4.2. Ejemplo de ControlTemplate de CheckBox
4.3.4.3. Ejemplo de ControlTemplate de ComboBox
4.3.4.4. Ejemplo de ControlTemplate de ComboBoxItem
4.3.4.5. Ejemplo de ControlTemplate de ContextMenu
4.3.4.6. Ejemplo de ControlTemplate para DocumentViewer
4.3.4.8. Ejemplo de ControlTemplate de Frame
4.3.4.9. Ejemplo de ControlTemplate de GroupBox
4.3.4.10. Ejemplo de ControlTemplate de Label
4.3.4.11. Ejemplo de ControlTemplate de ListBox
4.3.4.12. Ejemplo de ControlTemplate de ListBoxItem
4.3.4.13. Ejemplo de ControlTemplate de ListView
4.3.4.14. Ejemplo de ControlTemplate de ListViewItem
4.3.4.15. Ejemplo de ControlTemplate de Menu
4.3.4.16. Ejemplo de ControlTemplate para MenuItem
4.3.4.17. Ejemplo de ControlTemplate de NavigationWindow
4.3.4.18. Ejemplo de ControlTemplate para ProgressBar
4.3.4.19. Ejemplo de ControlTemplate de RadioButton
4.3.4.20. Ejemplo de ControlTemplate de ScrollBar
4.3.4.21. Ejemplo de ControlTemplate de ScrollViewer
4.3.4.22. Ejemplo de ControlTemplate de Slider
4.3.4.23. Ejemplo de ControlTemplate de StatusBar
4.3.4.24. Ejemplo de ControlTemplate de TabControl
4.3.4.25. Ejemplo de ControlTemplate de TabItem
4.3.4.26. Ejemplo de ControlTemplate de TextBox
4.3.4.27. Ejemplo de ControlTemplate de ToolBar
4.3.4.28. Ejemplo de ControlTemplate de ToolTip
4.3.4.29. Ejemplo de ControlTemplate de TreeView
4.3.4.30. Ejemplo de ControlTemplate para TreeViewItem
4.3.4.31. Ejemplo de ControlTemplate de Window
4.3.5. Automatización de la Interfaz de Usuario de un Control Personalizado de WPF
4.4. Agrupar Controles por Categoría
4.5. Modelos de Contenido
4.5.1. Modelo de Contenido de WPF
4.5.2. Información General sobre el Modelo de Contenido de Controles
4.5.3. Información General sobre el Modelo de Contenido de Decorador
4.5.4. Información General sobre el Modelo de Contenido de Paneles
4.5.5. Información General sobre el Modelo de Contenido de TextBlock
4.5.6. Información General sobre el Modelo de Contenido de TextBox
5. Datos
5.1. Enlace de Datos
5.1.1. Información General sobre el Enlace de Datos
5.1.2. Información General sobre Orígenes de Enlaces
5.1.3. Información General sobre Plantillas de Datos
5.1.4. Información General sobre Declaraciones de Enlaces
5.1.5. Temas Cómo sobre Enlace de Datos
5.1.5.1. Cómo: Crear un Enlace Sencillo
5.1.5.2. Cómo: Especificar el Origen de Enlace
5.1.5.3. Cómo: Hacer que los Datos estén Disponibles para el Enlace XAML
5.1.5.4. Cómo: Controlar Cuándo el Texto de TextBox Actualiza el Origen
5.1.5.5. Cómo: Especificar la Dirección del Enlace
5.1.5.6. Cómo: Enlazar a una Colección y Mostrar Información Basada en la Selección
5.1.5.7. Cómo: Enlazar a una Enumeración
5.1.5.8. Cómo: Enlazar las Propiedades de dos Controles
5.1.5.9. Cómo: Implementar la Validación de Enlaces
5.1.5.10. Cómo: Implementar Lógica de Validación en Objetos Personalizados
5.1.5.11. Cómo: Obtener el Objeto de Enlace a Partir de una Propiedad de Destino Enlazada
5.1.5.12. Cómo: Implementar una CompositeCollection
5.1.5.13. Cómo: Convertir Datos Enlazados
5.1.5.14. Cómo: Crear un Enlace en Código
5.1.5.15. Cómo: Obtener la Vista Predeterminada de Recolección de Datos
5.1.5.16. Cómo: Navegar por los Objetos de una Colección de Datos mediante CollectionView
5.1.5.17. Cómo: Filtrar Datos en una Vista
5.1.5.18. Cómo: Ordenar Datos en una Vista
5.1.5.19. Cómo: Ordenar y Agrupar Datos mediante una Vista en XAML
5.1.5.20. Cómo: Usar el Patrón Principal Detalle con datos Jerárquicos
5.1.5.21. Cómo: Usar el Patrón Principal Detalle con Datos XML Jerárquicos
5.1.5.22. Cómo: Generar un Valor Basado en una Lista de Elementos Enlazados
5.1.5.23. Cómo: Implementar la Notificación de Cambio de Propiedad
5.1.5.24. Cómo: Crear y Enlazar a una Colección ObservableCollection
5.1.5.25. Cómo: Implementar PriorityBinding
5.1.5.26. Cómo: Enlazar a Datos XML mediante XMLDataProvider y Consultas XPath
5.1.5.27. Cómo: Enlazar a los Resultados de una Consulta LINQ para XML, XDocument o XElement
5.1.5.28. Cómo: Usar Espacios de Nombres XML en el Enlace de Datos
5.1.5.29. Cómo: Enlazar a un Origen de Datos ADO .NET
5.1.5.30. Cómo: Enlazar a un Método
5.1.5.31. Cómo: Configurar la Notificación de Actualizaciones de Enlaces
5.1.5.32. Cómo: Borrar Enlaces
5.1.5.33. Cómo: Buscar Elementos Generados por un Objeto DataTemplate
5.1.5.34. Cómo: Enlazar a un Servicio Web
5.1.5.35. Cómo: Enlazar a los Resultados de una Consulta LINQ
5.2. Arrastrar y Colocar
5.2.1. Información General sobre la Función de Arrastrar y Colocar
5.2.2. Temas Cómo de Arrastrar y Colocar
5.2.2.1. Cómo: Usar un Control Thumb para Habilitar la Acción de Arrastrar
5.2.2.2. Cómo: Crear un Objeto de Datos
5.2.2.3. Cómo: Determinar si un Formato de Datos está Presente en un Objeto de Datos
5.2.2.4. Cómo: Mostrar los Formatos de Datos en un Objeto de Datos
5.2.2.5. Cómo: Recuperar Datos en un Formato Concreto
5.2.2.6. Cómo: Almacenar Varios Formatos de Datos en un Objeto de Datos
6. Documentos
6.1. Documentos en Windows Presentation Foundation
6.2. Almacenamiento y Serialización de Documentos
6.3. Anotaciones
6.3.1. Información General sobre Anotaciones
6.3.2. Esquema en Anotaciones
6.4. Contenido Dinámico
6.4.1. Información General sobre Documentos Dinámicos
6.4.2. Información General sobre el Modelo de Contenido de TextElement
6.4.3. Información General sobre Tablas
6.4.4. Temas "Cómo..." de Elementos de Contenido Dinámico
6.4.4.1. Cómo: Ajustar el Espaciado entre Párrafos
6.4.4.2. Cómo: Generar una Tabla mediante Programación
6.4.4.3. Cómo: Cambiar la Propiedad FlowDirection de Contenido mediante Programación
6.4.4.4. Cómo: Cambiar la Propiedad TextWrapping mediante Programación
6.4.4.5. Cómo: Definir una Tabla con XAML
6.4.4.6. Cómo: Modificar la Tipografía de Texto
6.4.4.7. Cómo: Habilitar el Recorte de Texto
6.4.4.8. Cómo: Insertar un Elemento en Texto mediante Programación
6.4.4.9. Cómo: Manipular Elementos de Contenido Dinámico mediante la Propiedad Blocks
6.4.4.10. Cómo: Manipular Elementos de Contenido Dinámico mediante la Propiedad Inlines
6.4.4.11. Cómo: Manipular un Objeto FlowDocument mediante la Propiedad Blocks
6.4.4.12. Cómo: Manipular las Columnas de una Tabla mediante la Propiedad Columns
6.4.4.13. Cómo: Manipular Grupos de Filas de una Tabla mediante la Propiedad RowGroups
6.4.4.14. Cómo: Usar Elementos de Contenido Dinámico
6.4.4.15. Cómo: Usar Atributos de Separación de Columnas FlowDocument
6.5. Tipografía
6.5.1. Tipografía en Windows Presentation Foundation
6.5.2. Información General sobre ClearType
6.5.3. Configuración del Registro de ClearType
6.5.4. Dibujar Texto con Formato
6.5.5. Formato de Texto Avanzado
6.5.6. Fuentes en WPF
6.5.6.1. Características de las Fuentes OpenType
6.5.6.2. Empaquetar Fuentes con Aplicaciones
6.5.6.3. Paquete de Fuentes OpenType de Ejemplo
6.5.6.4. Temas Cómo sobre Fuentes
6.5.6.4.1. Cómo: Enumerar Fuentes del Sistema
6.5.6.4.2. Cómo: Utilizar la Clase FontSizeConverter
6.5.7. Glifos
6.5.7.1. Introducción al Objeto GlyphRun y al Elemento Glyphs
6.5.7.2. Dibujar Texto mediante Grifos
6.5.8. Temas Cómo sobre Tipografía
6.5.8.1. Cómo: Crear una Decoración de Texto
6.5.8.2. Cómo: Usar una Decoración de Texto con un Hipervínculo
6.5.8.3. Cómo: Aplicar Transformaciones a Texto
6.5.8.4. Cómo: Aplicar Animaciones a Texto
6.5.8.5. Cómo: Crear un Efecto de Texto
6.5.8.6. Cómo: Crear Texto con Sombreado
6.5.8.7. Cómo: Crear Texto con Contorno
6.5.8.8. Cómo: Crear una Animación de PathGeometry para Texto
6.5.8.9. Cómo: Dibujar Texto en el Fondo de un Control
6.5.8.10. Cómo: Dibujar Texto en un Elemento Visual
6.5.8.11. Cómo: Establecer Propiedades Tipográficas
6.5.8.12. Cómo: Usar Caracteres Especiales en XAML
6.6. Imprimir y Administración de Sistemas de Impresión
6.6.1. Información General sobre Impresión
6.6.2. Temas Cómo de Impresión
6.6.2.1. Cómo: Invocar un Cuadro de Diálogo de Impresión
6.6.2.2. Cómo: Clonar una Impresora
6.6.2.3. Cómo: Diagnosticar Trabajos de Impresión Problemáticos
6.6.2.4. Cómo: Detectar si un Trabajo de Impresión se puede Imprimir en esta Hora del Día
6.6.2.5. Cómo: Enumerar un Subconjunto de Colas de Impresión
6.6.2.6. Cómo: Ampliar el Esquema de Impresión y Crear Nuevas Clases del Sistema de Impresión
6.6.2.7. Cómo: Obtener Propiedades de un Objeto de Sistema de Impresión sin Reflexión
6.6.2.8. Cómo: Imprimir mediante Programación Archivos XPS
6.6.2.9. Cómo: Supervisar de forma Remota el Estado de las Impresoras
6.6.2.10. Cómo: Validar y Combinar Elementos PrintTicket
7. Gráficos y Multimedia
7.1. Información General sobre Características de Gráficos, Animación y Multimedia en WPF
7.2. Información General sobre la Representación de Gráficos en WP
7.3. Gráficos
7.3.1. Efectos de Mapa de Bits
7.3.1.1. Información General sobre Efectos de Mapa de Bits
7.3.1.2. Temas Cómo de Efectos de Mapa de Bits
7.3.1.2.1. Cómo: Crear un Efecto de Resplandor en el Margen Externo de un Objeto
7.3.1.2.2. Cómo: Animar un Efecto de Resplandor
7.3.1.2.3. Cómo: Animar Efectos de Mapa de Bits
7.3.1.2.4. Cómo: Aplicar un Efecto de Desenfoque a un Objeto Visual
7.3.1.2.5. Cómo: Animar un Efecto Visual de Desenfoque
7.3.1.2.6. Cómo: Crear un Efecto Visual de Sombra Paralela
7.3.1.2.7. Cómo: Animar un Efecto Visual de Sombra Paralela
7.3.1.2.8. Cómo: Crear un Efecto Visual con Bisel
7.3.1.2.9. Cómo: Animar un Efecto Visual con Bisel
7.3.1.2.10. Cómo: Crear un Efecto Visual con Relieves
7.3.1.2.11. Cómo: Animar un Efecto Visual con Relieves
7.3.1.2.12. Cómo: Crear Varios Efectos Visuales
7.3.1.2.13. Cómo: Animar Varios Efectos Visuales
7.3.1.2.14. Cómo: Usar un Efecto Visual Personalizado
7.3.1.2.15. Cómo: Aplicar un Efecto a Parte de una Imagen
7.3.1.2.16. Cómo: Animar un Efecto dentro de un BitmapEffectGroup
7.3.2. Pinceles
7.3.2.1. Información General sobre Pinceles de WPF
7.3.2.2. Información General sobre la Transformación de Pinceles
7.3.2.3. Información General sobre las Máscaras de Opacidad
7.3.2.4. Información General sobre el Dibujo con Colores Sólidos y Degradados
7.3.2.5. Pintar con Imágenes, Dibujos y Elementos Visuales
7.3.2.6. Información General sobre Objetos TileBrush
7.3.2.7. Temas Cómo de Pinceles
7.3.2.7.1. Cómo: Animar el Color o la Opacidad de un Objeto SolidColorBrush
7.3.2.7.2. Cómo: Animar la Posición o Color de un Punto de Degradado
7.3.2.7.3. Cómo: Crear una Reflexión
7.3.2.7.4. Cómo: Crear Patrones de Mosaico diferentes con un Objeto TileBrush
7.3.2.7.5. Cómo: Definir un Lápiz
7.3.2.7.6. Cómo: Pintar un Area con un Dibujo
7.3.2.7.7. Cómo: Pintar un Area con una Imagen
7.3.2.7.8. Cómo: Pintar un Area con un Degradado Lineal
7.3.2.7.9. Cómo: Pintar un Area con un Degradado Radial
7.3.2.7.10. Cómo: Pintar un Area con un Color Sólido
7.3.2.7.11. Cómo: Pintar un Area con un Pincel del Sistema
7.3.2.7.12. Cómo: Pintar un Area con un Vídeo
7.3.2.7.13. Cómo: Pintar un Area con un Objeto Visual
7.3.2.7.14. Cómo: Conservar la Relación de Aspecto de una Imagen utilizada como Fondo
7.3.2.7.15. Cómo: Establecer la Alineación Horizontal y Vertical de TileBrush
7.3.2.7.16. Cómo: Establecer el Tamaño del Mosaico de un TileBrush
7.3.2.7.17. Cómo: Transformar un Pincel
7.3.2.7.18. Cómo: Usar Colores del Sistema en un Degradado
7.3.3. Dibujos
7.3.3.1. Información General sobre Objetos Drawing
7.3.3.2. Temas Cómo de Dibujo
7.3.3.2.1. Cómo: Aplicar un Objeto BitmapEffect a un Dibujo
7.3.3.2.2. Cómo: Aplicar un Objeto GuidelineSet a un Dibujo
7.3.3.2.3. Cómo: Aplicar una Máscara de Opacidad a un Dibujo
7.3.3.2.4. Cómo: Aplicar una Transformación a un Dibujo
7.3.3.2.5. Cómo: Recortar un Dibujo
7.3.3.2.6. Cómo: Controlar la Opacidad de un Dibujo
7.3.3.2.7. Cómo: Crear un Dibujo Compuesto
7.3.3.2.8. Cómo: Crear un Objeto GeometryDrawing
7.3.3.2.9. Cómo: Dibujar una Imagen usando Objeto ImageDrawing
7.3.3.2.10. Cómo: Reproducir Elementos Multimedia con un Objeto VideoDrawing
7.3.3.2.11. Cómo: Usar un Dibujo como el Origen de una Imagen
7.3.4. Geometrías
7.3.4.1. Sintaxis de Marcado de Trazados
7.3.4.2. Información General sobre Geometría
7.3.4.3. Temas Cómo de Objetos de Geometría
7.3.4.3.1. Cómo: Animar una Región de Recorte
7.3.4.3.2. Cómo: Animar un EllipseGeometry
7.3.4.3.3. Cómo: Animar el Tamaño de un Objeto ArcSegment
7.3.4.3.4. Cómo: Controlar el Relleno de una Forma Compuesta
7.3.4.3.5. Cómo: Crear una Región de Recorte
7.3.4.3.6. Cómo: Crear una Geometría Combinada
7.3.4.3.7. Cómo: Crear una Forma Compuesta
7.3.4.3.8. Cómo: Crear una Curva Bézier Cúbica
7.3.4.3.9. Cómo: Crear una Línea mediante la Clase LineGeometry
7.3.4.3.10. Cómo: Crear un Segmento de Línea en una Clase PathGeometry
7.3.4.3.11. Cómo: Crear una Forma mediante una Clase PathGeometry
7.3.4.3.12. Cómo: Crear una Forma utilizando StreamGeometry
7.3.4.3.13. Cómo: Crear una curva Bézier Cuadrática
7.3.4.3.14. Cómo: Crear un Arco Elíptico
7.3.4.3.15. Cómo: Crear Varios Subtrazados en un PathGeometry
7.3.4.3.16. Cómo: Definir un Rectángulo usando una Clase RectangleGeometry
7.3.4.3.17. Cómo: Redondear las Esquinas de un RectangleGeometry
Descarga
Etiquetas:
Adornos,
Anotaciones,
ControlTemplate,
Dibujos,
Documentos,
FlowDocument,
Fuentes,
Glifos,
Gráficos,
Imprimir,
Lduenas,
LINQ,
Manual,
MSDN,
Multimedia,
Pinceles,
Tipografía,
WPF,
XML,
XPS
miércoles, 29 de noviembre de 2017
El Manual del Día: Windows Presentation Foundation Parte 1
MSDN - Manual de Windows Presentation Foundation Parte 1
Titulo: Manual de Windows Presentation Foundation Parte 1
Fuente Original: Microsoft Developer Network (MSDN)
Compilado Por: Luis Dueñas Huaroto (Lduenas)
Año de Compilación: 2008
Número de Páginas: 445
Indice del Manual de Windows Presentation Foundation (Parte 1)
1. Introducción a WPF
1.1. Introducción a Windows Presentation Foundation
1.2. Información General sobre Windows Presentation Foundation
1.3. Lo Nuevo en Windows Presentation Foundation Versión 3.5
2. Desarrollo de Aplicaciones
2.1. Información General sobre el Desarrollo de Aplicaciones
2.2. Administración de Aplicaciones
2.2.1. Información General sobre la Administración de Aplicaciones
2.2.2. Archivos c Windows Presentation Foundation
2.2.3. URIs de Paquete en Windows Presentation Foundation
2.2.4. Temas Cómo del Modelo de Aplicaciones
2.2.4.1. Cómo: Obtener y Establecer Propiedades en el Ambito de Aplicación
2.2.4.2. Cómo: Obtener y Establecer Recursos en el Ambito de Aplicación
2.2.4.3. Cómo: Obtener y Establecer el Código de Salida de Aplicaciones
2.2.4.4. Cómo: Obtener los Argumentos de Línea de Comandos
2.2.4.5. Cómo: Obtener el Objeto de Aplicación Actual
2.2.4.6. Cómo: Conservar y Restaurar Propiedades en el Ambito de Aplicación a través de Sesiones de Aplicación
2.2.4.7. Cómo: Cerrar una Aplicación
2.2.4.8. Cómo: Iniciar una Aplicación
2.2.4.9. Cómo: Usar un Diccionario de Recursos en el Ambito de Aplicación
2.3. Ventanas en Aplicaciones de Windows Presentation Foundation
2.3.1. Información General sobre Ventanas de WPF
2.3.2. Información General sobre Cuadros de Diálogo
2.3.3. Temas Cómo de la Administración de Ventanas
2.3.3.1. Cómo: Cambiar Automáticamente el Tamaño de una Ventana para que se Ajuste a su Contenido
2.3.3.2. Cómo: Obtener Todas las Ventanas de una Aplicación
2.3.3.3. Cómo: Obtener y Establecer la Ventana Principal de una Aplicación
2.3.3.4. Cómo: Abrir un Cuadro de Diálogo
2.3.3.5. Cómo: Abrir un Cuadro de Mensaje
2.3.3.6. Cómo: Abrir una Ventana
2.3.3.7. Cómo: Devolver el Resultado de un Cuadro de Diálogo
2.4. Navegación en Aplicaciones de Windows Presentation Foundation
2.4.1. Información General sobre Navegación
2.4.2. Información General sobre la Navegación Estructurada
2.4.3. Información General sobre Topologías de Navegación
2.4.4. Temas Cómo de Navegación
2.4.4.1. Cómo: Llamar a una Función de Página
2.4.4.2. Cómo: Determinar si una Página está Hospedada en un Explorador
2.4.4.3. Cómo: Obtener el Valor Devuelto por una Función de Página
2.4.4.4. Cómo: Navegar hacia Delante por el Historial de Navegación
2.4.4.5. Cómo: Navegar hacia Atrás por el Historial de Navegación
2.4.4.6. Cómo: Navegar hasta una Página
2.4.4.7. Cómo: Actualizar una Página
2.4.4.8. Cómo: Devolver Resultados de una Función de Página
2.4.4.9. Cómo: Establecer el Alto de una Ventana desde una Página
2.4.4.10. Cómo: Establecer el Ancho de una Ventana desde una Página
2.4.4.11. Cómo: Establecer el Título de una Ventana desde una Página
2.4.4.12. Cómo: Detener la Carga de una Página
2.4.4.13. Cómo: Usar Mailto: para Enviar Correo desde una Página
2.5. Extensibilidad de Aplicaciones
2.5.1. Información General sobre Complementos de WPF
2.5.2. Temas Cómo de Complementos de WPF
2.5.2.1. Cómo: Crear un Complemento que Devuelva una Interfaz de Usuario
2.5.2.2. Cómo: Crear un Complemento que sea una Interfaz de Usuario
2.6. Hospedar Aplicaciones de Windows Presentation Foundation
2.6.1. Información General sobre Aplicaciones de Explorador XAML de WPF
2.6.2. Información General sobre Aplicaciones Hospedadas en Windows Media Center para WPF
2.6.3. Host de Windows Presentation Foundation (PresentationHost.exe)
2.6.4. API No Administrada de WpfHostSupport
2.6.4.1. IEnumRAWINPUTDEVICE
2.6.4.2. IWpfHostSupport
2.7. Generar e Implementar Aplicaciones de WPF
2.7.1. Generar una Aplicación de WPF
2.7.2. Implementar una Aplicación de WPF
2.7.3. Temas Cómo de Generar e Implementar
2.7.3.1. Cómo: Crear un Archivo de Proyecto de Ejemplo para una Aplicación Independiente de WPF
2.7.3.2. Cómo: Crear un Archivo de Proyecto de Ejemplo para una Aplicación de Navegación Independiente de WPF
2.7.3.3. Cómo: Crear un Archivo de Proyecto de Ejemplo para una Aplicación de Explorador XAML de WPF
2.7.3.4. Cómo: Crear un Archivo de Proyecto de Ejemplo para una Biblioteca de Controles Personalizados de WPF
2.7.3.5. Cómo: Crear un Archivo de Proyecto de Ejemplo para una Aplicación Independiente de WPF que sólo contiene Código
2.7.3.6. Cómo: Configurar IIS 5.0 e IIS 6.0 para Implementar Aplicaciones de WPF
2.7.3.7. Configurar Visual Studio 2005 para Depurar una Aplicación de Explorador XAML
2.7.3.8. Configurar Visual Studio para Depurar una Aplicación de Explorador XAML y Llamar a un Servicio Web
2.7.3.9. Cómo: Determinar la Versión Instalada de Windows Presentation Foundation
2.7.3.10. Cómo: Detectar si .NET Framework 3.0 está Instalado
2.7.3.11. Cómo: Detectar si .NET Framework 3.5 está Instalado
2.7.3.12. Cómo: Detectar si está Instalado el Complemento XBAP para Firefox
2.8. Rendimiento
2.8.1. Niveles de Representación de Gráficos
2.8.2. Optimizar WPF: Rendimiento de Aplicaciones
2.8.2.1. Planear para Mejorar el Rendimiento de Aplicaciones
2.8.2.2. Aprovechar el Hardware
2.8.2.3. Presentación y Diseño
2.8.2.4. Imágenes y Gráficos 2D
2.8.2.5. Comportamiento de Objetos
2.8.2.6. Recursos de Aplicación
2.8.2.7. Texto
2.8.2.8. Enlace de Datos
2.8.2.9. Otras Recomendaciones
2.8.2.10. Herramientas y Recursos de Rendimiento de WPF
3. Elementos Fundamentales de WPF
3.1. Arquitectura de WPF
3.2. XAML
3.2.1. Información General sobre XAML
3.2.2. Terminología de la Sintaxis de XAML
3.2.3. Código Subyacente y XAML
3.2.4. XAML y Clases Personalizadas
3.2.5. Extensiones de Marcado y XAML
3.2.6. Espacios de Nombres y Asignación de Espacios de Nombres de XAML
3.2.7. Ambitos de Nombres de WPF
3.2.8. Estilos y Plantillas Insertados
3.2.9. Procesamiento de Espacios en Blanco en XAML
3.2.10. Clases TypeConverter y XAML
3.2.11. Entidades de Caracteres XML y XAML
3.2.12. Características de lenguaje (x:) de espacios de nombres XAML
3.2.12.1. Extensión de Marcado x:Array
3.2.12.2. Atributo x:Class
3.2.12.3. Atributo x:ClassModifier
3.2.12.4. Elemento de Directiva x:Code de XAML
3.2.12.5. Atributo x:FieldModifier
3.2.12.6. Atributo x:Key
3.2.12.7. Atributo x:Name
3.2.12.8. Extensión de Marcado x:Null
3.2.12.9. Atributo x:Shared
3.2.12.10. Extensiones de Marcado x:Static
3.2.12.11. Atributo x:Subclase
3.2.12.12. Extensión de Marcado x:Type
3.2.12.13. Atributo x:TypeArguments
3.2.12.14. Atributo x:Uid
3.2.12.15. Elemento de Directiva x:XData de XAML
3.2.12.16. Gramática de XamlName
3.2.12.17. Secuencia de Escape / Extensión de Marcado {}
3.2.12.18. Control de xml:lang en XAML
3.2.12.19. Control de xml:space en XAML
3.2.13. Extensiones de XAML de Espacio de Nombres de WPF
3.2.13.1. Enlazar Extensión de Marcado
3.2.13.2. Extensión de Marcado ColorConvertedBitmap
3.2.13.3. Extensión de Marcado ComponentResourceKey
3.2.13.4. Extensión de Marcado DynamicResource
3.2.13.5. Extensión de Marcado RelativeSource
3.2.13.6. Extensión de Marcado StaticResource
3.2.13.7. Extensión de Marcado TemplateBinding
3.2.13.8. Extensión de Marcado ThemeDictionary
3.2.13.9. Sintaxis de PropertyPath de XAML
3.2.13.10. Atributo PresentationOptions:Freeze
3.2.14. Características del Lenguaje de Compatibilidad de Marcado (mc:)
3.2.14.1. Atributo mc:Ignorable
3.2.14.2. Atributo mc:ProcessContent
3.3. Elementos Base
3.3.1. Información General sobre Elementos Base
3.3.2. Información General sobre Objetos Freezable
3.3.3. Información General sobre Alineación, Márgenes y Relleno
3.3.4. Temas Cómo sobre Elementos Base
3.3.4.1. Cómo: Hacer que un Elemento UIElement sea Transparente o Semitransparente
3.3.4.2. Cómo: Animar el Tamaño de un Elemento FrameworkElement
3.3.4.3. Cómo: Determinar si un Elemento Freezable está Inmovilizado
3.3.4.4. Cómo: Controlar un Evento Cargado
3.3.4.5. Cómo: Definir Márgenes de Elementos y Controles
3.3.4.6. Cómo: Hacer que un Elemento Freezable sea de Sólo Lectura
3.3.4.7. Cómo: Obtener una Copia Modificable de un Elemento Freezable de Sólo Lectura
3.3.4.8. Cómo: Voltear un Control UIElement Horizontal o Verticalmente
3.3.4.9. Cómo: Utilizar un Objeto ThicknessConverter
3.3.4.10. Cómo: Usar un Objeto LengthConverter
3.3.4.11. Cómo: Controlar el Evento ContextMenuOpening
3.4. Arbol de Elementos y Serialización
3.4.1. Arboles en WPF
3.4.2. Limitaciones en la Serialización de XamlWriter.Save
3.4.3. Inicialización de Elementos de Objeto No Incluidos en un Arbol de Elementos
3.4.4. Temas Cómo sobre el Arbol de Elementos y la Serialización
3.4.4.1. Cómo: Buscar un Elemento por su Nombre
3.4.4.2. Cómo: Invalidar el Arbol Lógico
3.5. Propiedades
3.5.1. Información General sobre las Propiedades de Dependencia
3.5.2. Información General sobre Propiedades Asociadas
3.5.3. Devoluciones de Llamada y Validación de las Propiedades de Dependencia
3.5.4. Propiedades de Dependencia Personalizadas
3.5.5. Metadatos de las Propiedades de Dependencia
3.5.6. Metadatos de las Propiedades de Marco de Trabajo
3.5.7. Prioridad de los Valores de Propiedades de Dependencia
3.5.8. Propiedades de Dependencia de Sólo Lectura
3.5.9. Herencia de Valores de Propiedad
3.5.10. Seguridad de las Propiedades de Dependencia
3.5.11. Modelos de Constructores Seguros para Objetos DependencyObject
3.5.12. Propiedades de Dependencia de Tipo de Colección
3.5.13. Carga de XAML y Propiedades de Dependencia
3.5.14. Temas Cómo sobre Propiedades
3.5.14.1. Cómo: Implementar una Propiedad de Dependencia
3.5.14.2. Cómo: Restaurar el Valor Predeterminado de una Propiedad de Dependencia
3.5.14.3. Cómo: Agregar un Tipo de Propietario para una Propiedad de Dependencia
3.5.14.4. Cómo: Registrar una Propiedad Asociada
3.5.14.5. Cómo: Invalidar Metadatos en una Propiedad de Dependencia
3.6. Eventos
3.6.1. Información General sobre Eventos Enrutados
3.6.2. Información General sobre Eventos Asociados
3.6.3. Eventos de Duración de Objetos
3.6.4. Marcar Eventos Enrutados como Controlados y Control de Clases
3.6.5. Eventos de Vista Previa
3.6.6. Eventos de Cambio de Propiedades
3.6.7. Control de Eventos en Visual Basic y WPF
3.6.8. Modelos WeakEvent
3.6.9. Temas Cómo sobre Eventos
3.6.9.1. Cómo: Agregar un Controlador de Eventos mediante Código
3.6.9.2. Cómo: Controlar un Evento Enrutado
3.6.9.3. Cómo: Crear un Evento Enrutado Personalizado
3.6.9.4. Cómo: Buscar el Elemento de Origen en un Controlador de Eventos
3.6.9.5. Cómo: Agregar Control de Clases a un Evento Enrutado
3.7. Acciones del Usuario y Comandos
3.7.1. Información General sobre Acciones del Usuario
3.7.2. Información General sobre Comandos
3.7.3. Información General sobre el Foco
3.7.4. Aplicar Estilo a los Controles al Recibir el Foco y FocusVisualStyle
3.7.5. Temas Cómo sobre Acciones del Usuario y Comandos
3.7.5.1. Cómo: Habilitar un Comando
3.7.5.2. Cómo: Cambiar el Tipo de Cursor
3.7.5.3. Cómo: Detectar el Estado de un Botón del Mouse
3.7.5.4. Cómo: Cambiar el Color de un Elemento mediante Eventos de Foco
3.7.5.5. Cómo: Aplicar FocusVisualStyle a un Control
3.7.5.6. Cómo: Detectar cuando se Presiona la Tecla Enter
3.7.5.7. Cómo: Crear un Efecto de Activación mediante Eventos
3.7.5.8. Cómo: Crear un Objeto que Siga el Puntero del Mouse
3.7.5.9. Cómo: Agregar un Comando a un Elemento de Menú
3.7.5.10. Cómo: Crear un Comando RoutedCommand
3.7.5.11. Cómo: Implementar ICommandSource
3.7.5.12. Cómo: Enlazar un Comando a un Control sin la Compatibilidad de Comandos
3.7.5.13. Cómo: Enlazar un Comando a un Control con la Compatibilidad de Comandos
3.8. Recursos WPF
3.8.1. Información General sobre Recursos
3.8.2. Recursos y Código
3.8.3. Diccionarios de Recursos Combinados
3.8.4. Temas Cómo de Recursos
3.8.4.1. Cómo: Definir y Hacer Referencia a un Recurso
3.8.4.2. Cómo: Usar Recursos de Aplicaciones
3.8.4.3. Cómo: Utilizar SystemFonts
3.8.4.4. Cómo: Usar Claves de Fuentes del Sistema
3.8.4.5. Cómo: Utilizar SystemParameters
3.8.4.6. Cómo: Utilizar Claves de Parámetros del Sistema
3.9. Estilos y Plantillas: Conceptual
3.9.1. Aplicar Estilos y Plantillas
3.9.2. Cómo: Buscar Elementos Generados por un Objeto ControlTemplate
3.10. Sistema de Diseño
3.11. Ajuste de Píxeles en Aplicaciones de WPF
3.12. Modelo de Subprocesos
Descarga
Manual_Windows_Presentation_Foundation_Parte1
Titulo: Manual de Windows Presentation Foundation Parte 1
Fuente Original: Microsoft Developer Network (MSDN)
Compilado Por: Luis Dueñas Huaroto (Lduenas)
Año de Compilación: 2008
Número de Páginas: 445
Indice del Manual de Windows Presentation Foundation (Parte 1)
1. Introducción a WPF
1.1. Introducción a Windows Presentation Foundation
1.2. Información General sobre Windows Presentation Foundation
1.3. Lo Nuevo en Windows Presentation Foundation Versión 3.5
2. Desarrollo de Aplicaciones
2.1. Información General sobre el Desarrollo de Aplicaciones
2.2. Administración de Aplicaciones
2.2.1. Información General sobre la Administración de Aplicaciones
2.2.2. Archivos c Windows Presentation Foundation
2.2.3. URIs de Paquete en Windows Presentation Foundation
2.2.4. Temas Cómo del Modelo de Aplicaciones
2.2.4.1. Cómo: Obtener y Establecer Propiedades en el Ambito de Aplicación
2.2.4.2. Cómo: Obtener y Establecer Recursos en el Ambito de Aplicación
2.2.4.3. Cómo: Obtener y Establecer el Código de Salida de Aplicaciones
2.2.4.4. Cómo: Obtener los Argumentos de Línea de Comandos
2.2.4.5. Cómo: Obtener el Objeto de Aplicación Actual
2.2.4.6. Cómo: Conservar y Restaurar Propiedades en el Ambito de Aplicación a través de Sesiones de Aplicación
2.2.4.7. Cómo: Cerrar una Aplicación
2.2.4.8. Cómo: Iniciar una Aplicación
2.2.4.9. Cómo: Usar un Diccionario de Recursos en el Ambito de Aplicación
2.3. Ventanas en Aplicaciones de Windows Presentation Foundation
2.3.1. Información General sobre Ventanas de WPF
2.3.2. Información General sobre Cuadros de Diálogo
2.3.3. Temas Cómo de la Administración de Ventanas
2.3.3.1. Cómo: Cambiar Automáticamente el Tamaño de una Ventana para que se Ajuste a su Contenido
2.3.3.2. Cómo: Obtener Todas las Ventanas de una Aplicación
2.3.3.3. Cómo: Obtener y Establecer la Ventana Principal de una Aplicación
2.3.3.4. Cómo: Abrir un Cuadro de Diálogo
2.3.3.5. Cómo: Abrir un Cuadro de Mensaje
2.3.3.6. Cómo: Abrir una Ventana
2.3.3.7. Cómo: Devolver el Resultado de un Cuadro de Diálogo
2.4. Navegación en Aplicaciones de Windows Presentation Foundation
2.4.1. Información General sobre Navegación
2.4.2. Información General sobre la Navegación Estructurada
2.4.3. Información General sobre Topologías de Navegación
2.4.4. Temas Cómo de Navegación
2.4.4.1. Cómo: Llamar a una Función de Página
2.4.4.2. Cómo: Determinar si una Página está Hospedada en un Explorador
2.4.4.3. Cómo: Obtener el Valor Devuelto por una Función de Página
2.4.4.4. Cómo: Navegar hacia Delante por el Historial de Navegación
2.4.4.5. Cómo: Navegar hacia Atrás por el Historial de Navegación
2.4.4.6. Cómo: Navegar hasta una Página
2.4.4.7. Cómo: Actualizar una Página
2.4.4.8. Cómo: Devolver Resultados de una Función de Página
2.4.4.9. Cómo: Establecer el Alto de una Ventana desde una Página
2.4.4.10. Cómo: Establecer el Ancho de una Ventana desde una Página
2.4.4.11. Cómo: Establecer el Título de una Ventana desde una Página
2.4.4.12. Cómo: Detener la Carga de una Página
2.4.4.13. Cómo: Usar Mailto: para Enviar Correo desde una Página
2.5. Extensibilidad de Aplicaciones
2.5.1. Información General sobre Complementos de WPF
2.5.2. Temas Cómo de Complementos de WPF
2.5.2.1. Cómo: Crear un Complemento que Devuelva una Interfaz de Usuario
2.5.2.2. Cómo: Crear un Complemento que sea una Interfaz de Usuario
2.6. Hospedar Aplicaciones de Windows Presentation Foundation
2.6.1. Información General sobre Aplicaciones de Explorador XAML de WPF
2.6.2. Información General sobre Aplicaciones Hospedadas en Windows Media Center para WPF
2.6.3. Host de Windows Presentation Foundation (PresentationHost.exe)
2.6.4. API No Administrada de WpfHostSupport
2.6.4.1. IEnumRAWINPUTDEVICE
2.6.4.2. IWpfHostSupport
2.7. Generar e Implementar Aplicaciones de WPF
2.7.1. Generar una Aplicación de WPF
2.7.2. Implementar una Aplicación de WPF
2.7.3. Temas Cómo de Generar e Implementar
2.7.3.1. Cómo: Crear un Archivo de Proyecto de Ejemplo para una Aplicación Independiente de WPF
2.7.3.2. Cómo: Crear un Archivo de Proyecto de Ejemplo para una Aplicación de Navegación Independiente de WPF
2.7.3.3. Cómo: Crear un Archivo de Proyecto de Ejemplo para una Aplicación de Explorador XAML de WPF
2.7.3.4. Cómo: Crear un Archivo de Proyecto de Ejemplo para una Biblioteca de Controles Personalizados de WPF
2.7.3.5. Cómo: Crear un Archivo de Proyecto de Ejemplo para una Aplicación Independiente de WPF que sólo contiene Código
2.7.3.6. Cómo: Configurar IIS 5.0 e IIS 6.0 para Implementar Aplicaciones de WPF
2.7.3.7. Configurar Visual Studio 2005 para Depurar una Aplicación de Explorador XAML
2.7.3.8. Configurar Visual Studio para Depurar una Aplicación de Explorador XAML y Llamar a un Servicio Web
2.7.3.9. Cómo: Determinar la Versión Instalada de Windows Presentation Foundation
2.7.3.10. Cómo: Detectar si .NET Framework 3.0 está Instalado
2.7.3.11. Cómo: Detectar si .NET Framework 3.5 está Instalado
2.7.3.12. Cómo: Detectar si está Instalado el Complemento XBAP para Firefox
2.8. Rendimiento
2.8.1. Niveles de Representación de Gráficos
2.8.2. Optimizar WPF: Rendimiento de Aplicaciones
2.8.2.1. Planear para Mejorar el Rendimiento de Aplicaciones
2.8.2.2. Aprovechar el Hardware
2.8.2.3. Presentación y Diseño
2.8.2.4. Imágenes y Gráficos 2D
2.8.2.5. Comportamiento de Objetos
2.8.2.6. Recursos de Aplicación
2.8.2.7. Texto
2.8.2.8. Enlace de Datos
2.8.2.9. Otras Recomendaciones
2.8.2.10. Herramientas y Recursos de Rendimiento de WPF
3. Elementos Fundamentales de WPF
3.1. Arquitectura de WPF
3.2. XAML
3.2.1. Información General sobre XAML
3.2.2. Terminología de la Sintaxis de XAML
3.2.3. Código Subyacente y XAML
3.2.4. XAML y Clases Personalizadas
3.2.5. Extensiones de Marcado y XAML
3.2.6. Espacios de Nombres y Asignación de Espacios de Nombres de XAML
3.2.7. Ambitos de Nombres de WPF
3.2.8. Estilos y Plantillas Insertados
3.2.9. Procesamiento de Espacios en Blanco en XAML
3.2.10. Clases TypeConverter y XAML
3.2.11. Entidades de Caracteres XML y XAML
3.2.12. Características de lenguaje (x:) de espacios de nombres XAML
3.2.12.1. Extensión de Marcado x:Array
3.2.12.2. Atributo x:Class
3.2.12.3. Atributo x:ClassModifier
3.2.12.4. Elemento de Directiva x:Code de XAML
3.2.12.5. Atributo x:FieldModifier
3.2.12.6. Atributo x:Key
3.2.12.7. Atributo x:Name
3.2.12.8. Extensión de Marcado x:Null
3.2.12.9. Atributo x:Shared
3.2.12.10. Extensiones de Marcado x:Static
3.2.12.11. Atributo x:Subclase
3.2.12.12. Extensión de Marcado x:Type
3.2.12.13. Atributo x:TypeArguments
3.2.12.14. Atributo x:Uid
3.2.12.15. Elemento de Directiva x:XData de XAML
3.2.12.16. Gramática de XamlName
3.2.12.17. Secuencia de Escape / Extensión de Marcado {}
3.2.12.18. Control de xml:lang en XAML
3.2.12.19. Control de xml:space en XAML
3.2.13. Extensiones de XAML de Espacio de Nombres de WPF
3.2.13.1. Enlazar Extensión de Marcado
3.2.13.2. Extensión de Marcado ColorConvertedBitmap
3.2.13.3. Extensión de Marcado ComponentResourceKey
3.2.13.4. Extensión de Marcado DynamicResource
3.2.13.5. Extensión de Marcado RelativeSource
3.2.13.6. Extensión de Marcado StaticResource
3.2.13.7. Extensión de Marcado TemplateBinding
3.2.13.8. Extensión de Marcado ThemeDictionary
3.2.13.9. Sintaxis de PropertyPath de XAML
3.2.13.10. Atributo PresentationOptions:Freeze
3.2.14. Características del Lenguaje de Compatibilidad de Marcado (mc:)
3.2.14.1. Atributo mc:Ignorable
3.2.14.2. Atributo mc:ProcessContent
3.3. Elementos Base
3.3.1. Información General sobre Elementos Base
3.3.2. Información General sobre Objetos Freezable
3.3.3. Información General sobre Alineación, Márgenes y Relleno
3.3.4. Temas Cómo sobre Elementos Base
3.3.4.1. Cómo: Hacer que un Elemento UIElement sea Transparente o Semitransparente
3.3.4.2. Cómo: Animar el Tamaño de un Elemento FrameworkElement
3.3.4.3. Cómo: Determinar si un Elemento Freezable está Inmovilizado
3.3.4.4. Cómo: Controlar un Evento Cargado
3.3.4.5. Cómo: Definir Márgenes de Elementos y Controles
3.3.4.6. Cómo: Hacer que un Elemento Freezable sea de Sólo Lectura
3.3.4.7. Cómo: Obtener una Copia Modificable de un Elemento Freezable de Sólo Lectura
3.3.4.8. Cómo: Voltear un Control UIElement Horizontal o Verticalmente
3.3.4.9. Cómo: Utilizar un Objeto ThicknessConverter
3.3.4.10. Cómo: Usar un Objeto LengthConverter
3.3.4.11. Cómo: Controlar el Evento ContextMenuOpening
3.4. Arbol de Elementos y Serialización
3.4.1. Arboles en WPF
3.4.2. Limitaciones en la Serialización de XamlWriter.Save
3.4.3. Inicialización de Elementos de Objeto No Incluidos en un Arbol de Elementos
3.4.4. Temas Cómo sobre el Arbol de Elementos y la Serialización
3.4.4.1. Cómo: Buscar un Elemento por su Nombre
3.4.4.2. Cómo: Invalidar el Arbol Lógico
3.5. Propiedades
3.5.1. Información General sobre las Propiedades de Dependencia
3.5.2. Información General sobre Propiedades Asociadas
3.5.3. Devoluciones de Llamada y Validación de las Propiedades de Dependencia
3.5.4. Propiedades de Dependencia Personalizadas
3.5.5. Metadatos de las Propiedades de Dependencia
3.5.6. Metadatos de las Propiedades de Marco de Trabajo
3.5.7. Prioridad de los Valores de Propiedades de Dependencia
3.5.8. Propiedades de Dependencia de Sólo Lectura
3.5.9. Herencia de Valores de Propiedad
3.5.10. Seguridad de las Propiedades de Dependencia
3.5.11. Modelos de Constructores Seguros para Objetos DependencyObject
3.5.12. Propiedades de Dependencia de Tipo de Colección
3.5.13. Carga de XAML y Propiedades de Dependencia
3.5.14. Temas Cómo sobre Propiedades
3.5.14.1. Cómo: Implementar una Propiedad de Dependencia
3.5.14.2. Cómo: Restaurar el Valor Predeterminado de una Propiedad de Dependencia
3.5.14.3. Cómo: Agregar un Tipo de Propietario para una Propiedad de Dependencia
3.5.14.4. Cómo: Registrar una Propiedad Asociada
3.5.14.5. Cómo: Invalidar Metadatos en una Propiedad de Dependencia
3.6. Eventos
3.6.1. Información General sobre Eventos Enrutados
3.6.2. Información General sobre Eventos Asociados
3.6.3. Eventos de Duración de Objetos
3.6.4. Marcar Eventos Enrutados como Controlados y Control de Clases
3.6.5. Eventos de Vista Previa
3.6.6. Eventos de Cambio de Propiedades
3.6.7. Control de Eventos en Visual Basic y WPF
3.6.8. Modelos WeakEvent
3.6.9. Temas Cómo sobre Eventos
3.6.9.1. Cómo: Agregar un Controlador de Eventos mediante Código
3.6.9.2. Cómo: Controlar un Evento Enrutado
3.6.9.3. Cómo: Crear un Evento Enrutado Personalizado
3.6.9.4. Cómo: Buscar el Elemento de Origen en un Controlador de Eventos
3.6.9.5. Cómo: Agregar Control de Clases a un Evento Enrutado
3.7. Acciones del Usuario y Comandos
3.7.1. Información General sobre Acciones del Usuario
3.7.2. Información General sobre Comandos
3.7.3. Información General sobre el Foco
3.7.4. Aplicar Estilo a los Controles al Recibir el Foco y FocusVisualStyle
3.7.5. Temas Cómo sobre Acciones del Usuario y Comandos
3.7.5.1. Cómo: Habilitar un Comando
3.7.5.2. Cómo: Cambiar el Tipo de Cursor
3.7.5.3. Cómo: Detectar el Estado de un Botón del Mouse
3.7.5.4. Cómo: Cambiar el Color de un Elemento mediante Eventos de Foco
3.7.5.5. Cómo: Aplicar FocusVisualStyle a un Control
3.7.5.6. Cómo: Detectar cuando se Presiona la Tecla Enter
3.7.5.7. Cómo: Crear un Efecto de Activación mediante Eventos
3.7.5.8. Cómo: Crear un Objeto que Siga el Puntero del Mouse
3.7.5.9. Cómo: Agregar un Comando a un Elemento de Menú
3.7.5.10. Cómo: Crear un Comando RoutedCommand
3.7.5.11. Cómo: Implementar ICommandSource
3.7.5.12. Cómo: Enlazar un Comando a un Control sin la Compatibilidad de Comandos
3.7.5.13. Cómo: Enlazar un Comando a un Control con la Compatibilidad de Comandos
3.8. Recursos WPF
3.8.1. Información General sobre Recursos
3.8.2. Recursos y Código
3.8.3. Diccionarios de Recursos Combinados
3.8.4. Temas Cómo de Recursos
3.8.4.1. Cómo: Definir y Hacer Referencia a un Recurso
3.8.4.2. Cómo: Usar Recursos de Aplicaciones
3.8.4.3. Cómo: Utilizar SystemFonts
3.8.4.4. Cómo: Usar Claves de Fuentes del Sistema
3.8.4.5. Cómo: Utilizar SystemParameters
3.8.4.6. Cómo: Utilizar Claves de Parámetros del Sistema
3.9. Estilos y Plantillas: Conceptual
3.9.1. Aplicar Estilos y Plantillas
3.9.2. Cómo: Buscar Elementos Generados por un Objeto ControlTemplate
3.10. Sistema de Diseño
3.11. Ajuste de Píxeles en Aplicaciones de WPF
3.12. Modelo de Subprocesos
Descarga
Manual_Windows_Presentation_Foundation_Parte1
Etiquetas:
Acciones,
Arboles,
Comandos,
Diálogos,
Estilos,
Eventos,
Extensiones,
Gráficos,
Lduenas,
Manual,
MSDN,
Navegación,
Plantillas,
Propiedades,
Recursos,
Rendimiento,
Ventanas,
WPF,
XAML,
XBAP
lunes, 25 de julio de 2016
Artículo: Temas a Aprender en un Lenguaje de Programación
Temas a Aprender en un Lenguaje de Programación
1. Introducción
Un Lenguaje de Programación es el medio por el cual los programadores dan ordenes al computador y sin importar que tipo de lenguaje estén usando todos ellos sirven para crear aplicaciones. En este artículo quiero compartir mi opinión sobre que temas deben aprenderse al momento de elegir un Lenguaje de Programación.
He tratado de hacer una especie de Syllabus genérico para cualquier Lenguaje de Programación, por ejemplo los temas lo puedes ver en cualquier lenguaje del servidor como C# en .NET, PHP, Phyton, Ruby, C++, etc. Pero también la mayoría de temas se pueden ver en JavaScript.
Este breve artículo servirá para que tanto estudiantes y profesionales sepan los temas que son necesarios y los mas útiles que deben conocer, por lo que se ha divido en 3 partes con 4 capítulos cada una: Básica, Intermedia y Avanzada.
2. Temas o Tópicos a Aprender
Parte Básica
1. Estructuras de Datos
1.1. Simples: Numéricas, Cadenas, Lógicas, Fecha, etc.
1.2. Complejas: Arreglos, Listas, Pilas, Colas, Arboles, etc.
1.2. Objetos: Clases, Intefaces, Propiedades, Métodos, Eventos, etc.
2. Estructuras de Control de Flujo
2.1. Condicionales: if, switch, case, etc.
2.2. Repetitivas o de Bucle: for, while, do..while, etc.
2.3. Control de Errores: try..catch
3. Creando Interfaces de Usuario (IU)
3.1. Formularios
3.2. Controles de Entrada: TextBox, Radio, Check
3.3. Controles de Ejecución: Button, LinkButton
3.4. Controles de Imagen: Image, ImageButton
3.4. Controles de Listas: ListBox, ComboBox
3.5. Controles de Vistas: GridView, TreeView, ListView
3.6. Otros Controles: Calendarios, Banners, Visores, etc.
4. Manejo de Entrada y Salida
4.1. Información del Sistema: Directorios, Rutas y Archivos
4.2. Lectura y Escritura: Archivos Secuenciales y Aleatorios
4.3. Codificación de Datos: Codificar y Decodificar datos
4.4. Manejo de Expresiones Regulares
Parte Intermedia
5. Acceso a Base de Datos (Conectado)
5.1. Conectarse a una Base de Datos
5.2. Ejecutar Comandos SQL: Select, Insert, Update, Delete
5.3. Trabajar con Procedimentos Almacenados
6. Manejo de Datos (Desconectado)
6.1. Consultas: Filtros y Búsquedas
6.2. Ordenación: Ascendente y Descendente
6.3. Paginación: Por Filas y Por Columnas
6.4. Transferencia: Importación y Exportación
7. Presentación o Visualización de Datos
7.1. Vistas: Tablas, Cabecera Detalle, Jerárquicas y Tabla Cruzada
7.1. Reportes: Por Código y Por Herramientas
7.2. Gráficos: Por Código y Por Controles
7.3. Impresiones: Presentación Preliminar, Configurar Pagina, Imprimir
8. Pruebas de la Aplicación
8.1. Pruebas Unitarias: Funcionalidad
8.2. Pruebas de Rendimiento: Velocidad
8.3. Pruebas de Disponibilidad: Continuidad
8.4. Pruebas de Seguridad: Protección
Parte Avanzada
9. Programación de la Reusabilidad
9.1. Módulos o Librerías de Clases
9.2. Módulos o Librerías de Controles
10. Programación Asíncrona
10.1. Subprocesamiento: Threads y ThreadPool en una CPU
10.2. Programación Paralela: Tareas en Múltiples CPU
11. Programación de Redes y Distribuida
11.1. Sockets: TCP, UDP
11.2. Web: HTTP (Get, Post, Put, Delete)
11.3. Web Sockets: WS
11.4. Servicios: RPC, SOAP, REST (HTTP)
11.5. Correos: IMAP, POP3, SMTP
11.6. Mensajería: AMQP, MQTT, STOMP
11.7. Archivos: FTP
11.8. Señales: STUN, TURN, ICE, NAT
12. Criptografía o Cifrado de Datos
12.1. Cifrado Simétrico: AES, DES, RC2, Rijndael, Triple DES, etc.
12.2. Cifrado Asimétrico: DSA, ECDiffieHellman, ECDSA, RSA, etc.
12.3. Valores Hash: MD5, RIPEMD160, SHA1, SHA256, SHA512, etc.
12.4. Firmas Digitales y Tokens
1. Introducción
Un Lenguaje de Programación es el medio por el cual los programadores dan ordenes al computador y sin importar que tipo de lenguaje estén usando todos ellos sirven para crear aplicaciones. En este artículo quiero compartir mi opinión sobre que temas deben aprenderse al momento de elegir un Lenguaje de Programación.
He tratado de hacer una especie de Syllabus genérico para cualquier Lenguaje de Programación, por ejemplo los temas lo puedes ver en cualquier lenguaje del servidor como C# en .NET, PHP, Phyton, Ruby, C++, etc. Pero también la mayoría de temas se pueden ver en JavaScript.
Este breve artículo servirá para que tanto estudiantes y profesionales sepan los temas que son necesarios y los mas útiles que deben conocer, por lo que se ha divido en 3 partes con 4 capítulos cada una: Básica, Intermedia y Avanzada.
2. Temas o Tópicos a Aprender
Parte Básica
1. Estructuras de Datos
1.1. Simples: Numéricas, Cadenas, Lógicas, Fecha, etc.
1.2. Complejas: Arreglos, Listas, Pilas, Colas, Arboles, etc.
1.2. Objetos: Clases, Intefaces, Propiedades, Métodos, Eventos, etc.
2. Estructuras de Control de Flujo
2.1. Condicionales: if, switch, case, etc.
2.2. Repetitivas o de Bucle: for, while, do..while, etc.
2.3. Control de Errores: try..catch
3. Creando Interfaces de Usuario (IU)
3.1. Formularios
3.2. Controles de Entrada: TextBox, Radio, Check
3.3. Controles de Ejecución: Button, LinkButton
3.4. Controles de Imagen: Image, ImageButton
3.4. Controles de Listas: ListBox, ComboBox
3.5. Controles de Vistas: GridView, TreeView, ListView
3.6. Otros Controles: Calendarios, Banners, Visores, etc.
4. Manejo de Entrada y Salida
4.1. Información del Sistema: Directorios, Rutas y Archivos
4.2. Lectura y Escritura: Archivos Secuenciales y Aleatorios
4.3. Codificación de Datos: Codificar y Decodificar datos
4.4. Manejo de Expresiones Regulares
Parte Intermedia
5. Acceso a Base de Datos (Conectado)
5.1. Conectarse a una Base de Datos
5.2. Ejecutar Comandos SQL: Select, Insert, Update, Delete
5.3. Trabajar con Procedimentos Almacenados
6. Manejo de Datos (Desconectado)
6.1. Consultas: Filtros y Búsquedas
6.2. Ordenación: Ascendente y Descendente
6.3. Paginación: Por Filas y Por Columnas
6.4. Transferencia: Importación y Exportación
7. Presentación o Visualización de Datos
7.1. Vistas: Tablas, Cabecera Detalle, Jerárquicas y Tabla Cruzada
7.1. Reportes: Por Código y Por Herramientas
7.2. Gráficos: Por Código y Por Controles
7.3. Impresiones: Presentación Preliminar, Configurar Pagina, Imprimir
8. Pruebas de la Aplicación
8.1. Pruebas Unitarias: Funcionalidad
8.2. Pruebas de Rendimiento: Velocidad
8.3. Pruebas de Disponibilidad: Continuidad
8.4. Pruebas de Seguridad: Protección
Parte Avanzada
9. Programación de la Reusabilidad
9.1. Módulos o Librerías de Clases
9.2. Módulos o Librerías de Controles
10. Programación Asíncrona
10.1. Subprocesamiento: Threads y ThreadPool en una CPU
10.2. Programación Paralela: Tareas en Múltiples CPU
11. Programación de Redes y Distribuida
11.1. Sockets: TCP, UDP
11.2. Web: HTTP (Get, Post, Put, Delete)
11.3. Web Sockets: WS
11.4. Servicios: RPC, SOAP, REST (HTTP)
11.5. Correos: IMAP, POP3, SMTP
11.6. Mensajería: AMQP, MQTT, STOMP
11.7. Archivos: FTP
11.8. Señales: STUN, TURN, ICE, NAT
12. Criptografía o Cifrado de Datos
12.1. Cifrado Simétrico: AES, DES, RC2, Rijndael, Triple DES, etc.
12.2. Cifrado Asimétrico: DSA, ECDiffieHellman, ECDSA, RSA, etc.
12.3. Valores Hash: MD5, RIPEMD160, SHA1, SHA256, SHA512, etc.
12.4. Firmas Digitales y Tokens
3. Comentario Final
Parte Básica
Los Institutos y Universidades que enseñan como curso oficial o electivo en pre-grado un Lenguaje de Programación deberían cubrir la parte básica, pero pasan mucho tiempo en los 3 primeros temas y se olvidan del manejo de entrada y salida, sobre todo del manejo de archivos y después cuando los alumnos son profesionales y trabajan no pueden leer cualquier tipo de archivo, excepto el de Texto: TXT, XML, JSON, CSV, pero no un Binario (DOC, XLS, EXE, DLL, etc) o uno Comprimido (XLSX, DOCX, PPTX, etc.)
También noto muchos problemas en los programadores en los temas de Codificación de Datos (Encoding), Decodificación de Datos (Decoding) y Búsqueda de Patrones de Texto (Expresiones Regulares). Con una buena base educativa no tendría porque haber ningún tipo de problemas al desarrollar una aplicación en cualquier lenguaje.
Parte Intermedia
La parte intermedia esta dirigida a los profesionales que trabajan desarrollando aplicaciones y necesitan conocer los temas de acceso a datos (conectado) y manejo de datos (desconectado), presentación de datos y pruebas. Aquí la falla está en que se da mucho énfasis a la programación conectada pero No se entiende que ésta es la causante de que en las empresas "Los Sistemas están Lentos" porque "La Red está Lenta" porque "las aplicaciones realizan muchas conexiones" (miles por día), por lo que es "Indispensable" saber el manejo "Desconectado" con los datos.
En cuanto a la presentación de datos la mayoría de programadores solo saben "Herramientas de Reportes", por ejemplo "Crystal Reports" o "Report Viewer" (Reporting Services) o para crear Gráficos usan "Controles", abren instancias de aplicaciones como Word y Excel. Todas estas técnicas descritas son ineficientes ya que consumen mucha memoria y son lentas, hay otras formas de hacer reportes "super rápidos", por ejemplo en .NET para Windows se usa PrintDocument y en Web solo basta con HTML y JavaScript.
En cuanto a las Pruebas, los instructores solo saben enseñar "Pruebas Unitarias" que es lo mínimo que debe pedirse de la aplicación: que cumpla con la funcionalidad pedida, pero hay temas más técnicos como son la Performance o Rendimiento, la Disponibilidad como la tolerancia a Fallas de Red y la Seguridad (privacidad de datos, ataques, robo de información, etc.) que No se toman en cuenta. Es por esto que a cada momento vemos en todas partes "Sistemas Lentos", "Sistemas Caídos por Falta de Red", "Ataques a Sitios Web", "Robo de Datos", etc.
Parte Avanzada
En esta última parte si que estamos peor (según mi experiencia de mas de 25 años como programador e instructor), ya que los 4 últimos temas es poco probable que se enseñe en una capacitación tradicional, excepto Web HTTP (REST) y Servicios SOAP (porque está de moda), pero temas como crear tu propia librería de clases y controles o tu propio módulo de clases y controles Nunca se ve, solo se les enseña a usar lo que ya está hecho sin siquiera ser selectivo con lo que se usa (solo extraer lo necesario del código o control).
Otro problema de muchos programadores es que No saben el "ABC" de la programación asíncrona, muchos piensan que solo se puede implementar en la web con AJAX, jQuery o cualquier Framework popular, cuando en la web en el lado del cliente puede usarse XHR (nativo) y en el servidor Threads, ThreadPool, Delegados-CallBacks, Tasks, etc. Es mas importante que apliques asíncrono al servidor que al cliente porque la del cliente es para dar una mejor "Experiencia de Usuario" y la del servidor es para que "No se quede Colgado", y al final vas a dar la peor experiencia al usuario.
En cuanto al tema de la programación de redes o distribuida, la mayoría desconoce el poder de los Sockets y Web Sockets para hacer comunicación bidireccional en tiempo real y solo saben la peor (Servicios SOAP: Unidireccional). También es necesario aprender a manejar archivos con FTP, correos con SMTP, colas con STOMP, Señales con STUN, etc.
Finalmente, el tema de la Seguridad es muy importante y parte de esta es el cifrado de datos como claves, contenido, archivos, etc. Es necesario conocer los 4 tipos de tareas criptográficas mas comunes: cifrado simétrico y cifrado asimétrico (bidireccionales), valores hash (unidireccionales) y Firmas Digitales.
En General
En General, el Comentario Final es que si queremos mejorar nuestro nivel sea que somos estudiantes o profesionales debemos saber cuales son los temas mas importantes en nuestra formación, siento que en todos los niveles de la educación: pre-grado (para estudiantes) y especialización (para profesionales) los temas que se enseñan no son los mas importantes para el trabajo. Se da mucho énfasis en patrones y reusabilidad ("Construye Fácil") pero no en lo mas importante: en Producción que sea "Veloz", "Seguro" y "Siempre Disponible".
Mi aporte en estos últimos años ha sido cambiar esa mentalidad de "lo fácil" (reusabilidad) por lo "fácil mas lo eficiente" (performance y si se puede reusabilidad), aunque me hubiese gustado llegar a mas gente (aunque sea en mi país), es por eso, que a través de este Blog y mi Canal de YouTube trato de compensar este déficit.
Espero que con este artículo logre contribuir a que los centros de enseñanza de Lenguajes o Herramientas de Programación tomen en cuenta los temas que son necesarios enseñar para tener mejores profesionales que nunca tengan problemas al momento de trabajar o si los tienen que los resuelvan de la mejor manera y lo mas rápido posible.
Etiquetas:
Artículos,
Asíncrona,
Cifrado,
Conectado,
Control Flujo,
Desconectado,
Distribuida,
Estructuras,
Gráficos,
Impresión,
IU,
Lduenas,
Lenguajes,
Performance,
Pruebas,
Redes,
Reportes,
Reusabilidad,
Servicios,
Vistas
viernes, 27 de mayo de 2016
Entrenamiento - Segundo Mes del Taller de ASP.NET MVC & JavaScript Domingos
Segundo Mes del Taller de ASP.NET MVC & JavaScript Domingos
Este Domingo 29 de Mayo iniciamos el segundo mes del Taller de ASP.NET MVC & JavaScript en forma desconectada y orientada a Performance. Los interesados en participar el Taller dura 4 meses (quedan 3 meses) y es la última oportunidad de incorporarse ya que el siguiente mes no se podrá.
Los temas avanzados en el primer mes fueron sobre Serializadores y Asíncrono:
1. Introducción al Desarrollo Web
2. Arquitectura de un Sitio Web (Cliente Web: HTML, CSS, JS y Servidor Web)
3. El problema y la solución para la Performance de Sitios Web (WPO)
4. Llamadas Síncronas y Asíncronas al Servidor usando XmlHttpRequest (XHR)
5. Usando en el servidor el Serializador XML y mostrando datos específicos en el cliente con JavaScript
6. Usando en el servidor el Serializador JSON y mostrando datos específicos en el cliente con JavaScript
7. Creando en el servidor un Serializador XML y mostrando datos genéricos en el cliente con JavaScript
8. Creando en el servidor un Serializador personalizado JSON y mostrando datos genéricos en el cliente con JavaScript
Este Domingo 29 de Mayo iniciamos el segundo mes del Taller de ASP.NET MVC & JavaScript en forma desconectada y orientada a Performance. Los interesados en participar el Taller dura 4 meses (quedan 3 meses) y es la última oportunidad de incorporarse ya que el siguiente mes no se podrá.
Los temas avanzados en el primer mes fueron sobre Serializadores y Asíncrono:
1. Introducción al Desarrollo Web
2. Arquitectura de un Sitio Web (Cliente Web: HTML, CSS, JS y Servidor Web)
3. El problema y la solución para la Performance de Sitios Web (WPO)
4. Llamadas Síncronas y Asíncronas al Servidor usando XmlHttpRequest (XHR)
5. Usando en el servidor el Serializador XML y mostrando datos específicos en el cliente con JavaScript
6. Usando en el servidor el Serializador JSON y mostrando datos específicos en el cliente con JavaScript
7. Creando en el servidor un Serializador XML y mostrando datos genéricos en el cliente con JavaScript
8. Creando en el servidor un Serializador personalizado JSON y mostrando datos genéricos en el cliente con JavaScript
9. Creando en el servidor un Serializador personalizado CSV y mostrando datos genéricos en el cliente con JavaScript
Los temas a tratar en el segundo mes serán "Operaciones Desconectadas con Datos en JavaScript" y "Mantenimiento de Datos":
1. Filtro de datos (simple y múltiple)
2. Paginación de datos (simple y por bloques)
3. Ordenación de datos (simple y múltiple)
4. Mover Columnas
5. Agrupar Columnas (simple y múltiple)
6. Vistas Jerárquicas (Horizontal y Vertical)
7. Vistas de Tablas Cruzadas
8. Mantenimiento de una Simple Tabla
9. Exportar datos a TXT, CSV, Excel y PDFs
10. Importar datos desde TXT, CSV y Excel con Preview
11. Trabajando con Cabeceras Detalles en forma óptima
El tercer y cuarto mes se tratarán los siguientes temas:
1. Gráficos con HTML5 y JavaScript
1.1. Creando Gráficos de Datos con Canvas
2.2. Creando Gráficos de Datos con SVG
3.3. Creando Gráficos Interactivos
2. Trabajando con Servicios (WCF y Web API)
2.1. Creando y Consumiendo un Servicio WCF alojado en IIS
2.2. Creando y Consumiendo un Servicio WCF alojado en su propio Servidor
2.3. Creando un Servicio Web API y Consumiendo desde .NET
2.4. Creando un Servicio Web API y Consumiendo desde JavaScript
3. Programación Distribuida en ASP.NET
3.1. Trabajando con WebSockets
3.2. Actualizando en Tiempo Real con WebSockets
3.3. Trabajando con Server Sent Events
3.4. Actualizando en Tiempo Real con SSE
4. Consideraciones Finales de Sitios Web
4.1. Configurar la Aplicación Web para Producción
4.2. Recomendaciones Finales sobre Performance
4.3. Recomendaciones Finales sobre Seguridad
Hay que resaltar que la novedad del último mes es que voy a enseñar a crear su propio Servidor Web Sockets y Librería Cliente Web Socket (para que sea usado No solo en Web sino en Windows en cualquier aplicación).
Los interesados solo tienen hoy y mañana para enviar un mail a Luis.duenash@gmail.com indicando que quieren incorporarse al taller con los siguientes datos:
- Nombre Completo
- Si es Ex Alumno de hace menos de 3 años (paga 200 soles, sino 300 soles)
Después de registrarlos le estaré enviando la dirección exacta.
Los que visitan el Blog y son de Lima o provincias cercanas a Lima, aprovechen que no habrá otra oportunidad, ya que solo dicto en Perú hasta este año, por lo cual es el último Taller que podría extenderse (depende del interés de los participantes, 3 meses mas para tocar el tema de Aplicaciones Móviles).
Etiquetas:
ASP.NET,
CSS3,
Curso MVC,
Entrenamiento,
Exportar,
Gráficos,
HTML5,
Importar,
Javascript,
Lduenas,
Librerías,
Mantenimiento,
MVC,
Performance,
Serializadores,
Taller Domingos,
WCF,
Web API,
Web Sockets,
WebForms
martes, 29 de marzo de 2016
Entrenamiento - Inicio del Segundo Taller de ASP.NET MVC & JavaScript
Inicio del Segundo Taller de ASP.NET MVC & JavaScript
Mediante este post quiero anunciar el inicio del segundo taller de ASP.NET MVC & JavaScript Asíncrono y Desconectado basado en Performance los días Domingos de 8:00 am a 2:00 pm. que iniciará el Domingo 01 de Mayo (día del trabajo).
No tenía planeado hacer otro taller pero debido a la insistencia de muchos ex-alumnos que se quedaron sin poder participar del taller anterior y debido al reciente interés de personas nuevas que recién ven el Blog o el Canal de YouTube y les interesa aprender nuevas técnicas de programación, es que he decidido hacer un nuevo taller.
Temas del Taller
1. Entendiendo el Desarrollo Web en ASP .NET
1.1. Arquitectura de una Aplicación Web ASP.NET
1.2. Aplicaciones Web Forms y Aplicaciones MVC
1.3. El problema de la Performance en Sitios Web
1.4. Arquitectura de Alto Rendimiento de una Aplicación Web
1.5. El problema de usar Frameworks
1.6. Frameworks de la A a la Z
2. Creando Aplicaciones Web Distribuidas
2.1. Creando Librerías de Entidades del Negocio
2.2. Creando Librerías de Acceso a Datos
2.3. Creando Librerías de Reglas del Negocio
2.4. Creando una Aplicación Web Form
2.5. Creando una Aplicación Web MVC
3. Creando Serializadores y Listando Registros
3.1. Usando el control WebGrid con Listas de Objetos
3.2. Usando JQuery y el Serializador JSON
3.3. Creando un Serializador XML y Listando Registros
3.4. Creando un Serializador JSON y Listando Registros
3.5. Creando un Serializador CSV (Strings) y usando XHR
4. Trabajando Desconectado con JavaScript
4.1. Filtrando registros
4.2. Paginando registros con índices de páginas
4.3. Paginando registros con índices más bloques
4.3. Ordenando registros ascendente y descendente
5. Exportar e Importar Datos
5.1. Exportar a Texto en el cliente (sin ir al servidor)
5.2. Exportar a Excel en el cliente (sin ir al servidor)
5.3. Hacer preview de textos en el cliente (sin ir al servidor) y enviar
5.4. Hacer preview de excel en el cliente (sin ir al servidor) y enviar
6. Trabajando con Imagenes
6.1. Hacer preview de una imagen en el cliente (sin ir al servidor)
6.2. Consultar imagenes usando data-image
6.3. Presentar varias imagenes usando sprites
6.4. Enviar varias imagenes al servidor (upload)
7. Mantenimiento, Popups, Cabecera Detalle e Impresión
7.1. Mantenimiento de registros
7.2. Creando Popups usando Divs
7.3. Trabajando con Cabecera Detalle
7.4. Imprimiendo datos de la página
8. Presentación Personalizada y Reportes con JavaScript
8.1. Vista Tablas
8.2. Vista Jerárquica Horizontal
8.3. Vista Jerárquica Vertical
8.4. Vista Tabla Cruzada
9. Gráficos con HTML5 y JavaScript
9.1. Creando Gráficos de Datos con Canvas
9.2. Creando Gráficos de Datos con SVG
9.3. Creando Gráficos Interactivos
10. Trabajando con Servicios (WCF y Web API)
10.1. Creando y Consumiendo un Servicio WCF alojado en IIS
10.2. Creando y Consumiendo un Servicio WCF alojado en su propio Servidor
10.3. Creando un Servicio Web API y Consumiendo desde .NET
10.4. Creando un Servicio Web API y Consumiendo desde JavaScript
11. Programación Distribuida en ASP.NET
11.1. Trabajando con WebSockets
11.2. Actualizando en Tiempo Real con WebSockets
11.3. Trabajando con Server Sent Events
11.4. Actualizando en Tiempo Real con SSE
12. Consideraciones Finales de Sitios Web
12.1. Configurar la Aplicación Web para Producción
12.2. Recomendaciones Finales sobre Performance
12.3. Recomendaciones Finales sobre Seguridad
Inversión
- 200 soles mensuales para ex alumnos
- 300 soles mensuales par nuevos alumnos
Forma de Pago
- En efectivo al inicio de cada mes (200 o 300 soles)
Duración y Frecuencia
- Duración: 4 meses
- Frecuencia: Domingos de 8:00 am a 2:00 pm (6 horas semanales, 24 mensuales)
Nota: Siempre se descansa una semana entre cada mes.
Lugar
- Por confirmar (de acuerdo al número de participantes)
- Si son menos de 30 será en mi domicilio.
- Sin son mas de 30 será en otro lugar.
Forma de Participar
- Enviar un mail a Luis.duenash@gmail.com con su nombre completo y si ha sido ex-alumno mío o no.
- Solo registraré a los 50 primeros que envían el correo.
Comentario Final
Había decidido ya no hacer mas talleres ni dictar cursos, por temas personales, entre ellos la falta de interés de las empresas por capacitarse y querer cambiar su forma de hacer las cosas, pero si me voy en este momento, la invasión de Frameworks y las malas prácticas de performance seguirán siendo el patrón a seguir por la mayoría de desarrolladores, así es que aunque me desanime por momentos ante la falta de entendimiento de la mayoría que piensa que no existen problemas, he decidido dar una batalla más a esta guerra a la mediocridad.
Igual mantengo mi idea de trabajar solo hasta fin de año para irme fuera del país en busca de una mejor oportunidad, así es que a todos los interesados, sobre todo los que alguna vez fueron mis alumnos y vieron la diferencia de la enseñanza con respecto a las otras ofertas educativas, recuerden que ya no habrá mas oportunidades (como anécdota algunos me envían mail diciendo cuando hay un nuevo inicio en ISILTECH, es decir, no se han enterado que ya cerró), así es que la única forma de contacto es a través de este Taller.
Los que están siguiendo mi canal de YouTube donde he colgado los videos de algunas capacitaciones con mi nueva arquitectura y nueva forma de programar es la oportunidad para que aprendan en vivo como se llegó a realizar todo lo subido.
Saludos a todos y espero sus comentarios o sugerencias para el Taller (menos de horario ya que solo puedo los Domingos).
Mediante este post quiero anunciar el inicio del segundo taller de ASP.NET MVC & JavaScript Asíncrono y Desconectado basado en Performance los días Domingos de 8:00 am a 2:00 pm. que iniciará el Domingo 01 de Mayo (día del trabajo).
No tenía planeado hacer otro taller pero debido a la insistencia de muchos ex-alumnos que se quedaron sin poder participar del taller anterior y debido al reciente interés de personas nuevas que recién ven el Blog o el Canal de YouTube y les interesa aprender nuevas técnicas de programación, es que he decidido hacer un nuevo taller.
Temas del Taller
1. Entendiendo el Desarrollo Web en ASP .NET
1.1. Arquitectura de una Aplicación Web ASP.NET
1.2. Aplicaciones Web Forms y Aplicaciones MVC
1.3. El problema de la Performance en Sitios Web
1.4. Arquitectura de Alto Rendimiento de una Aplicación Web
1.5. El problema de usar Frameworks
1.6. Frameworks de la A a la Z
2. Creando Aplicaciones Web Distribuidas
2.1. Creando Librerías de Entidades del Negocio
2.2. Creando Librerías de Acceso a Datos
2.3. Creando Librerías de Reglas del Negocio
2.4. Creando una Aplicación Web Form
2.5. Creando una Aplicación Web MVC
3. Creando Serializadores y Listando Registros
3.1. Usando el control WebGrid con Listas de Objetos
3.2. Usando JQuery y el Serializador JSON
3.3. Creando un Serializador XML y Listando Registros
3.4. Creando un Serializador JSON y Listando Registros
3.5. Creando un Serializador CSV (Strings) y usando XHR
4. Trabajando Desconectado con JavaScript
4.1. Filtrando registros
4.2. Paginando registros con índices de páginas
4.3. Paginando registros con índices más bloques
4.3. Ordenando registros ascendente y descendente
5. Exportar e Importar Datos
5.1. Exportar a Texto en el cliente (sin ir al servidor)
5.2. Exportar a Excel en el cliente (sin ir al servidor)
5.3. Hacer preview de textos en el cliente (sin ir al servidor) y enviar
5.4. Hacer preview de excel en el cliente (sin ir al servidor) y enviar
6. Trabajando con Imagenes
6.1. Hacer preview de una imagen en el cliente (sin ir al servidor)
6.2. Consultar imagenes usando data-image
6.3. Presentar varias imagenes usando sprites
6.4. Enviar varias imagenes al servidor (upload)
7. Mantenimiento, Popups, Cabecera Detalle e Impresión
7.1. Mantenimiento de registros
7.2. Creando Popups usando Divs
7.3. Trabajando con Cabecera Detalle
7.4. Imprimiendo datos de la página
8. Presentación Personalizada y Reportes con JavaScript
8.1. Vista Tablas
8.2. Vista Jerárquica Horizontal
8.3. Vista Jerárquica Vertical
8.4. Vista Tabla Cruzada
9. Gráficos con HTML5 y JavaScript
9.1. Creando Gráficos de Datos con Canvas
9.2. Creando Gráficos de Datos con SVG
9.3. Creando Gráficos Interactivos
10. Trabajando con Servicios (WCF y Web API)
10.1. Creando y Consumiendo un Servicio WCF alojado en IIS
10.2. Creando y Consumiendo un Servicio WCF alojado en su propio Servidor
10.3. Creando un Servicio Web API y Consumiendo desde .NET
10.4. Creando un Servicio Web API y Consumiendo desde JavaScript
11. Programación Distribuida en ASP.NET
11.1. Trabajando con WebSockets
11.2. Actualizando en Tiempo Real con WebSockets
11.3. Trabajando con Server Sent Events
11.4. Actualizando en Tiempo Real con SSE
12. Consideraciones Finales de Sitios Web
12.1. Configurar la Aplicación Web para Producción
12.2. Recomendaciones Finales sobre Performance
12.3. Recomendaciones Finales sobre Seguridad
Inversión
- 200 soles mensuales para ex alumnos
- 300 soles mensuales par nuevos alumnos
Forma de Pago
- En efectivo al inicio de cada mes (200 o 300 soles)
Duración y Frecuencia
- Duración: 4 meses
- Frecuencia: Domingos de 8:00 am a 2:00 pm (6 horas semanales, 24 mensuales)
Nota: Siempre se descansa una semana entre cada mes.
Lugar
- Por confirmar (de acuerdo al número de participantes)
- Si son menos de 30 será en mi domicilio.
- Sin son mas de 30 será en otro lugar.
Forma de Participar
- Enviar un mail a Luis.duenash@gmail.com con su nombre completo y si ha sido ex-alumno mío o no.
- Solo registraré a los 50 primeros que envían el correo.
Comentario Final
Había decidido ya no hacer mas talleres ni dictar cursos, por temas personales, entre ellos la falta de interés de las empresas por capacitarse y querer cambiar su forma de hacer las cosas, pero si me voy en este momento, la invasión de Frameworks y las malas prácticas de performance seguirán siendo el patrón a seguir por la mayoría de desarrolladores, así es que aunque me desanime por momentos ante la falta de entendimiento de la mayoría que piensa que no existen problemas, he decidido dar una batalla más a esta guerra a la mediocridad.
Igual mantengo mi idea de trabajar solo hasta fin de año para irme fuera del país en busca de una mejor oportunidad, así es que a todos los interesados, sobre todo los que alguna vez fueron mis alumnos y vieron la diferencia de la enseñanza con respecto a las otras ofertas educativas, recuerden que ya no habrá mas oportunidades (como anécdota algunos me envían mail diciendo cuando hay un nuevo inicio en ISILTECH, es decir, no se han enterado que ya cerró), así es que la única forma de contacto es a través de este Taller.
Los que están siguiendo mi canal de YouTube donde he colgado los videos de algunas capacitaciones con mi nueva arquitectura y nueva forma de programar es la oportunidad para que aprendan en vivo como se llegó a realizar todo lo subido.
Saludos a todos y espero sus comentarios o sugerencias para el Taller (menos de horario ya que solo puedo los Domingos).
Etiquetas:
ASP.NET,
CSS3,
Curso MVC,
Entrenamiento,
Exportar,
Gráficos,
HTML5,
Importar,
Javascript,
Lduenas,
Librerías,
Mantenimiento,
MVC,
Performance,
Serializadores,
Taller Domingos,
WCF,
Web API,
Web Sockets,
WebForms
miércoles, 3 de febrero de 2016
Entrenamiento - Vacantes Taller ASP.NET MVC & JavaScript Domingos
Vacantes Taller ASP.NET MVC & JavaScript Domingos
A los interesados en participar en el Taller de ASP.NET MVC & JavaScript, les comunico que pueden incorporarse para el inicio del tercer mes (Domingo 7 de Febrero de 8:00 am a 2:00 pm)
Los temas que ya se trataron fueron:
- Primer mes: Programando en el servidor web con C# (Creación de Librerías Genéricas y Serializadores)
- Segundo mes: Programando con JavaScript en el Cliente (Listar, Filtrar, Ordenar, Paginar, Exportar)
Los temas a tratar en este mes serán:
- Tercer mes: Mantenimiento, Cabecera Detalle, Reportes, Gráficos, Canvas, SVG, WebWorkers
La inversión del curso es de 200 soles y se paga en efectivo el primer día de clases y para participar hay que enviar un mail de confirmación a Luis.duenash@gmail.com indicando su nombre completo y se le enviará la dirección donde se realiza el curso que es en el cono norte.
Hay muchos que están en duda y quieren participar pero se les complica el horario o dicen que esta muy lejos, por lo cual esperan otra oportunidad. Solo les recuerdo que ya no habrá mas oportunidades porque ya no pienso seguir dictando talleres y las librerías de código y los ejemplos solo se las comparto a los alumnos de los talleres.
Los que han sido mis ex-alumnos y no se han enterado, ya no existe ISILTECH y la única forma de llevar un curso conmigo es participando en los Talleres de los Domingos. Finalmente, los temas que se ven son diferentes a los que dictaba hace mas de un año, todo es de lado del cliente (super veloz), es decir, mas del 80% de código es JavaScript y solo un 20% es .NET (C#).
A los interesados en participar en el Taller de ASP.NET MVC & JavaScript, les comunico que pueden incorporarse para el inicio del tercer mes (Domingo 7 de Febrero de 8:00 am a 2:00 pm)
Los temas que ya se trataron fueron:
- Primer mes: Programando en el servidor web con C# (Creación de Librerías Genéricas y Serializadores)
- Segundo mes: Programando con JavaScript en el Cliente (Listar, Filtrar, Ordenar, Paginar, Exportar)
Los temas a tratar en este mes serán:
- Tercer mes: Mantenimiento, Cabecera Detalle, Reportes, Gráficos, Canvas, SVG, WebWorkers
La inversión del curso es de 200 soles y se paga en efectivo el primer día de clases y para participar hay que enviar un mail de confirmación a Luis.duenash@gmail.com indicando su nombre completo y se le enviará la dirección donde se realiza el curso que es en el cono norte.
Hay muchos que están en duda y quieren participar pero se les complica el horario o dicen que esta muy lejos, por lo cual esperan otra oportunidad. Solo les recuerdo que ya no habrá mas oportunidades porque ya no pienso seguir dictando talleres y las librerías de código y los ejemplos solo se las comparto a los alumnos de los talleres.
Los que han sido mis ex-alumnos y no se han enterado, ya no existe ISILTECH y la única forma de llevar un curso conmigo es participando en los Talleres de los Domingos. Finalmente, los temas que se ven son diferentes a los que dictaba hace mas de un año, todo es de lado del cliente (super veloz), es decir, mas del 80% de código es JavaScript y solo un 20% es .NET (C#).
Etiquetas:
ASP.NET,
C#,
Canvas,
Domingos,
Entrenamiento,
Exportar,
Filtrar,
Gráficos,
HTML5,
Javascript,
Lduenas,
Listar,
Matrices,
MVC,
Ordenar,
Paginar,
Reflection,
Serializadores,
SVG,
Talleres
martes, 24 de marzo de 2015
El Demo del Día: Graficar Datos en el Servidor en ASP.NET MVC
Graficar Datos en el Servidor en ASP.NET MVC con llamada asíncrona usando Ajax Form y Vista Parcial
Requerimiento
Se desea crear una aplicación web que permita consultar los productos por categoría y mostrar los datos mas gráficos de diferentes tipos: Barras, Columnas, Lineas y Pie, pero el requisito es que sea conectado o en línea, es decir, el filtro por categoría debe hacerse directo de la base de datos y el gráfico debe crearse dinámicamente en el servidor web.
Solución
- Crear una aplicación en ASP.NET MVC con un método de acción que se conecte a la BD para traer la lista de categorías mas los tipos de gráficos.
- Crear un formulario MVC Ajax que realice una llamada asíncrona cada vez que se selecciona una categoría que llama a una acción que haga la consulta en base de datos y que cree el gráfico dinámicamente devolviendo una vista parcial.
Crear los Procedimientos Almacenados en la Base de Datos Northwind de SQL Server
Para el ejemplo usaremos la Base de Datos Northwind de SQL Server, en la cual crearemos los siguientes Procedimiento almacenado:
Create Procedure [dbo].[uspCategoriesListar]
As
Select CategoryID,CategoryName From Categories
Go
Create Procedure [dbo].[uspProductsListarPorCategoria]
@CategoryId int
As
Select ProductID,ProductName,SupplierID,
CategoryID,UnitPrice,UnitsInStock
From Products
Where CategoryId=@CategoryId
Crear la Librería de Clases de Entidades del Negocio
Crear la librería de clases llamada: "Northwind.Librerias.EntidadesNegocio" y agregar la clase "beCategoria.cs":
namespace Northwind.Librerias.EntidadesNegocio
{
public class beCategoria
{
public int IdCategoria { get; set; }
public string Nombre { get; set; }
}
}
Agregar otra clase a la librería llamada "beProducto.cs":
namespace Northwind.Librerias.EntidadesNegocio
{
public class beProducto
{
public int IdProducto { get; set; }
public string Nombre { get; set; }
public int IdProveedor { get; set; }
public int IdCategoria { get; set; }
public decimal PrecioUnitario { get; set; }
public short Stock { get; set; }
}
}
Grabar y compilar la Librería de Entidades del Negocio.
Crear la Librería de Acceso a Datos
Crear la librería de clases llamada: "Northwind.Librerias.AccesoDatos", referenciar a la librería de clases de entidades creada anteriormente y agregar la clase "daCategoria.cs" y escribir el siguiente código:
using System;
using System.Collections.Generic; //List
using System.Data; //CommandType, CommandBehavior
using System.Data.SqlClient; //SqlConnection, SqlCommand, SqlDataReader
using Northwind.Librerias.EntidadesNegocio; //beCategoria
namespace Northwind.Librerias.AccesoDatos
{
public class daCategoria
{
public List<beCategoria> listar(SqlConnection con)
{
List<beCategoria> lbeCategoria = null;
SqlCommand cmd = new SqlCommand("uspCategoriesListar", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataReader drd = cmd.ExecuteReader();
if (drd != null)
{
lbeCategoria = new List<beCategoria>();
beCategoria obeCategoria;
int posIdCat = drd.GetOrdinal("CategoryID");
int posNomCat = drd.GetOrdinal("CategoryName");
while (drd.Read())
{
obeCategoria = new beCategoria();
obeCategoria.IdCategoria = drd.GetInt32(posIdCat);
obeCategoria.Nombre = drd.GetString(posNomCat);
lbeCategoria.Add(obeCategoria);
}
drd.Close();
}
return (lbeCategoria);
}
}
}
Nota: El video es muy similar al código presentado en el Demo, pero la versión original era desconectada del servidor de datos y usaba una sesión, en cambio el demo es totalmente conectado, la diferencia solo es en el controller y es mínima.
Requerimiento
Se desea crear una aplicación web que permita consultar los productos por categoría y mostrar los datos mas gráficos de diferentes tipos: Barras, Columnas, Lineas y Pie, pero el requisito es que sea conectado o en línea, es decir, el filtro por categoría debe hacerse directo de la base de datos y el gráfico debe crearse dinámicamente en el servidor web.
Solución
- Crear una aplicación en ASP.NET MVC con un método de acción que se conecte a la BD para traer la lista de categorías mas los tipos de gráficos.
- Crear un formulario MVC Ajax que realice una llamada asíncrona cada vez que se selecciona una categoría que llama a una acción que haga la consulta en base de datos y que cree el gráfico dinámicamente devolviendo una vista parcial.
- Para crear los diferentes tipos de gráficos usaremos la librería System.Drawing y el gráfico lo almacenaremos en un MemoryStream, a partir del cual obtendremos su array de bytes y lo almacenaremos en un ViewBag llamado Imagen con el contenido de la imagen en formato base64.
Crear los Procedimientos Almacenados en la Base de Datos Northwind de SQL Server
Para el ejemplo usaremos la Base de Datos Northwind de SQL Server, en la cual crearemos los siguientes Procedimiento almacenado:
Create Procedure [dbo].[uspCategoriesListar]
As
Select CategoryID,CategoryName From Categories
Go
Create Procedure [dbo].[uspProductsListarPorCategoria]
@CategoryId int
As
Select ProductID,ProductName,SupplierID,
CategoryID,UnitPrice,UnitsInStock
From Products
Where CategoryId=@CategoryId
Crear la Librería de Clases de Entidades del Negocio
Crear la librería de clases llamada: "Northwind.Librerias.EntidadesNegocio" y agregar la clase "beCategoria.cs":
namespace Northwind.Librerias.EntidadesNegocio
{
public class beCategoria
{
public int IdCategoria { get; set; }
public string Nombre { get; set; }
}
}
Agregar otra clase a la librería llamada "beProducto.cs":
namespace Northwind.Librerias.EntidadesNegocio
{
public class beProducto
{
public int IdProducto { get; set; }
public string Nombre { get; set; }
public int IdProveedor { get; set; }
public int IdCategoria { get; set; }
public decimal PrecioUnitario { get; set; }
public short Stock { get; set; }
}
}
Grabar y compilar la Librería de Entidades del Negocio.
Crear la Librería de Acceso a Datos
Crear la librería de clases llamada: "Northwind.Librerias.AccesoDatos", referenciar a la librería de clases de entidades creada anteriormente y agregar la clase "daCategoria.cs" y escribir el siguiente código:
using System;
using System.Collections.Generic; //List
using System.Data; //CommandType, CommandBehavior
using System.Data.SqlClient; //SqlConnection, SqlCommand, SqlDataReader
using Northwind.Librerias.EntidadesNegocio; //beCategoria
namespace Northwind.Librerias.AccesoDatos
{
public class daCategoria
{
public List<beCategoria> listar(SqlConnection con)
{
List<beCategoria> lbeCategoria = null;
SqlCommand cmd = new SqlCommand("uspCategoriesListar", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataReader drd = cmd.ExecuteReader();
if (drd != null)
{
lbeCategoria = new List<beCategoria>();
beCategoria obeCategoria;
int posIdCat = drd.GetOrdinal("CategoryID");
int posNomCat = drd.GetOrdinal("CategoryName");
while (drd.Read())
{
obeCategoria = new beCategoria();
obeCategoria.IdCategoria = drd.GetInt32(posIdCat);
obeCategoria.Nombre = drd.GetString(posNomCat);
lbeCategoria.Add(obeCategoria);
}
drd.Close();
}
return (lbeCategoria);
}
}
}
Agregar una nueva clase a la librería llamada "daProducto.cs" y escribir el siguiente código:
using System;
using System.Collections.Generic; //List
using System.Data; //CommandType, CommandBehavior
using System.Data.SqlClient; //SqlConnection, SqlCommand, SqlDataReader
using Northwind.Librerias.EntidadesNegocio; //beProducto
namespace Northwind.Librerias.AccesoDatos
{
public class daProducto
{
public List<beProducto> listarPorCategoria(SqlConnection con,int idCategoria)
{
List<beProducto> lbeProducto = null;
SqlCommand cmd = new SqlCommand("uspProductsListarPorCategoria", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter par = cmd.Parameters.Add("@CategoryId", SqlDbType.Int);
par.Direction = ParameterDirection.Input;
par.Value = idCategoria;
SqlDataReader drd = cmd.ExecuteReader(CommandBehavior.SingleResult);
if (drd != null)
{
lbeProducto = new List<beProducto>();
int posIdProducto = drd.GetOrdinal("ProductID");
int posNombre = drd.GetOrdinal("ProductName");
int posIdProveedor = drd.GetOrdinal("SupplierID");
int posIdCategoria = drd.GetOrdinal("CategoryID");
int posPrecioUnitario = drd.GetOrdinal("UnitPrice");
int posStock = drd.GetOrdinal("UnitsInStock");
beProducto obeProducto;
while (drd.Read())
{
obeProducto = new beProducto();
obeProducto.IdProducto = drd.GetInt32(posIdProducto);
obeProducto.Nombre = drd.GetString(posNombre);
obeProducto.IdProveedor = drd.GetInt32(posIdProveedor);
obeProducto.IdCategoria = drd.GetInt32(posIdCategoria);
obeProducto.PrecioUnitario = drd.GetDecimal(posPrecioUnitario);
obeProducto.Stock = drd.GetInt16(posStock);
lbeProducto.Add(obeProducto);
}
drd.Close();
}
return (lbeProducto);
}
}
}
Grabar y compilar la librería de acceso a datos creada.
Crear la Librería de Reglas del Negocio
Crear la librería de clases llamada: "Northwind.Librerias.ReglasNegocio", referenciar a la librería de clases de entidades y también a la de acceso a datos, luego agregar la clase "brCategoria.cs" y escribir el siguiente código:
using System;
using System.Data.SqlClient; //SqlConnection
using System.Collections.Generic; //List
using Northwind.Librerias.EntidadesNegocio; //beCategoria
using Northwind.Librerias.AccesoDatos; //daCategoria
namespace Northwind.Librerias.ReglasNegocio
{
public class brCategoria
{
public List<beCategoria> listar()
{
List<beCategoria> lbeCategoria = null;
string CadenaConexion = ConfigurationManager.ConnectionStrings["conNW"]
.ConnectionString;
using (SqlConnection con = new SqlConnection(CadenaConexion))
{
try
{
con.Open();
daCategoria odaCategoria = new daCategoria();
lbeCategoria = odaCategoria.listar(con);
}
catch (SqlException ex)
{
//grabarLog(ex);
}
catch (Exception ex)
{
//grabarLog(ex);
}
} //con.Close(); con.Dispose();
return (lbeCategoria);
}
}
}
Agregar una nueva clase a la librería llamada "brProducto.cs" y escribir el siguiente código:
using System;
using System.Data.SqlClient; //SqlConnection
using System.Collections.Generic; //List
using Northwind.Librerias.EntidadesNegocio; //beProducto
using Northwind.Librerias.AccesoDatos; //daProducto
namespace Northwind.Librerias.ReglasNegocio
{
public class brProducto
{
public List<beProducto> listarPorCategoria(int idCategoria)
{
List<beProducto> lbeProducto = null;
string CadenaConexion = ConfigurationManager.ConnectionStrings["conNW"]
.ConnectionString;
using (SqlConnection con = new SqlConnection(CadenaConexion))
{
try
{
con.Open();
daProducto odaProducto = new daProducto();
lbeProducto = odaProducto.listarPorCategoria(con,idCategoria);
}
catch (SqlException ex)
{
//grabarLog(ex);
}
catch (Exception ex)
{
//grabarLog(ex);
}
} //con.Close(); con.Dispose();
return (lbeProducto);
}
}
}
Nota: También es necesario hacer una referencia a la librería "System.Configuration" para leer la cadena de conexión definida en la aplicación.
Grabar la librería de reglas de negocio creada y compilarla.
Crear una Aplicación Web de ASP.NET MVC4 en C#
Seleccionar un nuevo proyecto de tipo: "Aplicación web de ASP.NET MVC4" y escribir como nombre "Demo10", luego seleccionar la opción "Vacio" y como motor de vista "Razor" y "Aceptar".
Nota: Antes de iniciar con el código hay que referenciar a las librerías creadas, sobre todo a la Regla de Negocio y las Entidades de Negocio.
Crear un Controlador para el Producto
Clic derecho a la carpeta Controllers y seleccionar "Agregar" y luego "Controlador", llamarle al archivo "ProductoController.cs" y en opciones de plantillas dejarlo en plantilla vacía (Vaciar Controlador MVC). Luego escribir el siguiente código:
using System;
using System.IO;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Northwind.Librerias.EntidadesNegocio;
using Northwind.Librerias.ReglasNegocio;
namespace Demo10.Controllers
{
public class ProductoController : Controller
{
public ActionResult Lista()
{
brCategoria obrCategoria = new brCategoria();
List<beCategoria> lbeCategoria = obrCategoria.listar();
ViewBag.Categorias = lbeCategoria;
List<string> tiposGrafico = new List<string>();
tiposGrafico.Add("Barras");
tiposGrafico.Add("Columnas");
tiposGrafico.Add("Lineas");
tiposGrafico.Add("Pie");
ViewBag.TiposGrafico = tiposGrafico;
return View();
}
public PartialViewResult ConsultaGrafico(int idCategoria,string tipoGrafico)
{
brProducto obrProducto = new brProducto();
List<beProducto> lbeProducto = obrProducto.listarPorCategoria(idCategoria);
int ancho = 800;
int alto = 500;
Bitmap bmp = new Bitmap(ancho, alto);
Graphics grafico = Graphics.FromImage(bmp);
Rectangle rect = new Rectangle(0, 0, ancho, alto);
LinearGradientBrush degradado = new LinearGradientBrush
(rect, Color.Aqua, Color.Blue, LinearGradientMode.BackwardDiagonal);
grafico.FillRectangle(degradado, rect);
int x, y;
Font fuente=new Font("Arial",10);
Pen lapiz=new Pen(Brushes.Yellow,5);
StringFormat formato = new StringFormat(StringFormatFlags.DirectionVertical);
switch (tipoGrafico)
{
case "Barras":
x = 20;
y=20;
foreach(beProducto obeProducto in lbeProducto)
{
x = 20;
grafico.DrawString(obeProducto.Nombre, fuente,
Brushes.White, x, y);
x = 200;
rect = new Rectangle(x, y, obeProducto.Stock, 20);
grafico.FillRectangle(Brushes.Yellow, rect);
x = 220 + obeProducto.Stock;
grafico.DrawString(obeProducto.Stock.ToString(), fuente,
Brushes.White, x, y);
y += (int)fuente.GetHeight() + 20;
}
break;
case "Columnas":
x = 20;
y=350;
foreach(beProducto obeProducto in lbeProducto)
{
grafico.DrawString(obeProducto.Nombre, fuente,
Brushes.White, x, y, formato);
alto = 340 - obeProducto.Stock;
rect = new Rectangle(x, alto, 20, obeProducto.Stock);
grafico.FillRectangle(Brushes.Yellow, rect);
grafico.DrawString(obeProducto.Stock.ToString(), fuente,
Brushes.White, x, alto - 20);
x += 50;
}
break;
case "Lineas":
x = 20;
y=350;
for(int i=0;i<lbeProducto.Count;i++)
{
grafico.DrawString(lbeProducto[i].Nombre, fuente,
Brushes.White, x, y, formato);
if (i < lbeProducto.Count - 1)
{
grafico.DrawLine(lapiz, new Point(x, 340 - lbeProducto[i].Stock),
new Point(x + 50, 340 - lbeProducto[i + 1].Stock));
}
grafico.DrawString(lbeProducto[i].Stock.ToString(), fuente,
Brushes.White, x, 320 - lbeProducto[i].Stock);
x += 50;
}
break;
case "Pie":
decimal total = lbeProducto.Sum(obj => obj.Stock);
float anguloInicio = 00.0F;
float anguloFin;
rect = new Rectangle(100, 10, ancho-200, alto - 20);
int R, G, B;
Color color;
Random oAzar = new Random();
for (int i = 0; i < lbeProducto.Count; i++)
{
R = oAzar.Next(255);
G = oAzar.Next(255);
B = oAzar.Next(255);
color = Color.FromArgb(R, G, B);
anguloFin = (float)((lbeProducto[i].Stock * 360) / total);
grafico.FillPie(new SolidBrush(color), rect, anguloInicio, anguloFin);
anguloInicio += anguloFin;
}
break;
}
byte[] imagen=null;
using (MemoryStream ms = new MemoryStream())
{
bmp.Save(ms, ImageFormat.Png);
imagen = ms.ToArray();
}
ViewBag.Imagen = String.Format("data:image/png;base64,{0}",
Convert.ToBase64String(imagen));
return PartialView("Grafico", lbeProducto);
}
}
}
Nota: Para el gráfico de Pie se esta creando un color al azar para cada producto.
Crear una Hoja de Estilos para la Vista
Primero crear una carpeta llamada "Content", luego clic derecho "Agregar" y luego "Hoja de estilos" y como nombre llamarle "ACME.css" y escribir el siguiente código:
body {
background-color:gray;
}
.Titulo {
background-color:black;
color:white;
font-size:larger;
}
.Subtitulo {
background-color:white;
color:black;
font-size:large;
}
.AnchoTotal {
width:100%;
}
.Centrado {
text-align:center;
}
.FilaCabecera {
background-color:lightgray;
color:black;
}
.FilaDatos {
background-color:white;
color:black;
}
Crear la Vista Productos para mostrar los datos
Ir al controlador y ubicarse sobre el método "Lista" (acción), clic derecho y seleccionar "Agregar vista", desmarcar todos los check ya que es una vista sin tipo y escribir el siguiente código:
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Lista</title>
<link href="~/Content/ACME.css" rel="stylesheet" />
</head>
<body>
<div>
@using (Ajax.BeginForm("ConsultaGrafico", "Producto",
new AjaxOptions { HttpMethod = "get", InsertionMode = InsertionMode.Replace,
UpdateTargetId = "divGrafico" }, new { id = "frmGrafico" }))
{
<table class="AnchoTotal">
<tr class="Titulo">
<td colspan="2">Gráficar Datos en el Servidor en ASP.NET MVC
con llamada asíncrona usando Ajax Form y Vista Parcial</td>
</tr>
<tr class="Subtitulo">
<td colspan="2">Consulta de Productos por Categoría</td>
</tr>
<tr>
<td style="width:40%">Seleccione la Categoría</td>
<td style="width:60%">Seleccione el Tipo de Gráfico</td>
</tr>
<tr>
<td>
@Html.DropDownList("idCategoria",
new SelectList(ViewBag.Categorias,"IdCategoria","Nombre"))
</td>
<td>
@Html.DropDownList("tipoGrafico",
new SelectList(ViewBag.TiposGrafico))
</td>
</tr>
<tr>
<td colspan="2">
<div id="divGrafico"></div>
</td>
</tr>
</table>
}
</div>
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="~/Scripts/Rutinas.js"></script>
<script>iniciarLista();</script>
</body>
</html>
Nota: Es mejor colocar los archivos de JavaScript al final de la página para renderizar mas rápido.
Crear la Vista Parcial con la Consulta y el Gráfico a Mostrar
Ir nuevamente al controlador y ubicarse sobre el método "Lista" (acción), clic derecho y seleccionar "Agregar vista", cambiar de nombre a la vista por "Grafico", seleccionar el check "Crear como vista parcial" y escribir el siguiente código:
@using Northwind.Librerias.EntidadesNegocio
@model List<beProducto>
<table class="AnchoTotal">
<tr>
<td style="vertical-align:top">
<table class="AnchoTotal">
<tr class="FilaCabecera">
<td style="width:200px">Nombre del Producto</td>
<td style="width:10px">Stock</td>
</tr>
@foreach (beProducto obeProducto in Model)
{
<tr class="FilaDatos">
<td>@obeProducto.Nombre</td>
<td>@obeProducto.Stock</td>
</tr>
}
</table>
</td>
<td>
<img src="@ViewBag.Imagen" width="800" height="500" />
</td>
</tr>
</table>
Crear el archivo JavaScript con el código cliente
Antes que nada crear una carpeta llamada "Scripts" y arrastrar del explorador de Windows el archivo de jQuery: "jquery-1.8.2.min.js" y "jquery.unobtrusive-ajax.min.js" (necesario para el Ajax Form), luego agregar un archivo de JavaScript llamado "Rutinas.js" y escribir el siguiente código:
function iniciarLista() {
$("#frmGrafico").submit();
var cboIdCategoria = document.getElementById("idCategoria");
cboIdCategoria.onchange = function () { llamadaAsincrona(); };
var cboTipoGrafico = document.getElementById("tipoGrafico");
cboTipoGrafico.onchange = function () { llamadaAsincrona(); };
function llamadaAsincrona() {
$("#frmGrafico").submit();
}
}
Nota: Cuando se carga la página se esta haciendo un submit al formulario "frmGrafico" via jQuery el cual es asíncrono por que el formulario en un Ajax Form. También ocurre lo mismo al seleccionar una categoría del combo.
Modificar el archivo web.config para incluir la cadena de conexión
<configuration>
<connectionStrings>
<add name="conNW" providerName="SQLServer"
connectionString="uid=UsuarioNW;pwd=123456;
data source=DSOFT\Sqlexpress;database=Northwind"/>
</connectionStrings>
.....
</configuration>
Configurar el inicio y ejecutar la aplicación web
Para probar la aplicación web debemos configurar el inicio para lo cual nos vamos a la carpeta "App_Start" y abrimos el archivo "RouteConfig.cs" cambiando el nombre del controlador y la acción tal como sigue: controller = "Producto", action = "Lista".
Ejecución y Pruebas de la Aplicación Web ASP.NET MVC
Finalmente, grabar y pulsar F5 para ejecutar la aplicación, mostrándose el resultado similar a la siguiente figura:
Por defecto se muestra la categoría "Bebidas" y en el tipo de gráfico "Barras", cambiar el tipo de gráfico a "Columnas" y se verá la siguiente figura:
Probar ahora con el gráfico de "Lineas" y se mostrará algo similar a la siguiente figura:
Finalmente, cambiar el tipo de gráfico a "Pie" y se verá lo siguiente:
Nota: En el gráfico de Pie falta agregar una leyenda para distinguir cada producto de acuerdo al color generado. Esto queda como tarea para que aprendan mas sobre Drawing.
Comentario Final
En este post hemos visto como trabajar en forma conectada, y también hemos aprendido a crear gráficos dinámicamente usando la librería System.Drawing y las clases: Bitmap, Graphics, Rectangle, Font, Pen, StringFormat, Color, SolidBrush, las enumeraciones: Brushes y StringFormatFlags, también el Namespace: System.Drawing.Drawing2D para usar la clase: LinearGradientBrush (degradado).
En un anterior post vimos como crear gráficos en el Cliente usando HTML5 Canvas con JSON:
Aunque en apariencia los Demos son similares el anterior es desconectado de la base de datos y del servidor web, este demo es conectado o en línea para ver los últimos datos, por ejemplo muy útil para reportes gerenciales en línea.
Descarga del código
Video del Demo
Nota: El video es muy similar al código presentado en el Demo, pero la versión original era desconectada del servidor de datos y usaba una sesión, en cambio el demo es totalmente conectado, la diferencia solo es en el controller y es mínima.
Etiquetas:
Ajax Form,
ASP.NET,
Bitmap,
Brushes,
Color,
Conectado,
Demos,
Drawing,
Font,
Gráficos,
Graphics,
Lduenas,
LinearGradientBrush,
MVC,
Pen,
Rectangle,
SolidBrush,
StringFormat,
StringFormatFlags,
Vista Parcial
Suscribirse a:
Entradas (Atom)





