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 Serializadores. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Serializadores. 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
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
domingo, 31 de julio de 2016
Entrenamiento - Fin del Taller de ASP.NET MVC & JavaScript
Fin del Taller de ASP.NET MVC & JavaScript
Este post es para agradecer a los participantes de mi último taller de ASP.NET MVC & JavaScript de los Domingos. Como no hay certificados, la mejor constancia que han culminado el entrenamiento en técnicas desconectadas usando JavaScript nativo es publicar sus nombres para que las Empresas conozcan al grupo de personas que está preparada con una visión diferente del desarrollo.
Gracias a todos ustedes por compartir momentos educativos cada fin de semana. La lista de participantes por orden alfabético es la siguiente:
01 Aranda Rosales, Jaime Jesús
02 Beteta, Antonio
03 Cabrera Otoya, Jimmy
04 Chávez Córdova, Billy Herbert
05 Ciudad, Brayan
06 Condor Castillo, Edgar
07 Gaspar Chumpitaz, Oscar Michael
08 Huamaní García, Eduardo Felipe
09 Llontop Caballero, Jhony Frank
10 Marquez Redhead, Jorge Manuel
11 Miraya Anamaría, Edgar
12 Moreno Gomez, Juan Carlos
13 Palacios, Mario
14 Paredes Urbano, Gary W.
15 Palomino Oliva, Alan Francesco
16 Rengifo Ocrospoma, Joseph
17 Reyes Espinoza, Ray
18 Reyes, Alex
19 Rivera Molina, Pool
20 Saavedra Mejia, Miguel
21 Schwarz Moreno, Edward
22 Silva, Madeleyne
23 Tasayco Trigozo, José
24 Tito Fernandez, Erick
25 Vallejo Aguilar, Fernando
26 Vera Morocho, Edinson
27 Zambrano Pérez, Rolando José
Suerte a todos ustedes y éxito para salir a conquistar el mercado que están muy bien preparados, quizás en un nivel que todavía tomará tiempo que otros exploren.
Este post es para agradecer a los participantes de mi último taller de ASP.NET MVC & JavaScript de los Domingos. Como no hay certificados, la mejor constancia que han culminado el entrenamiento en técnicas desconectadas usando JavaScript nativo es publicar sus nombres para que las Empresas conozcan al grupo de personas que está preparada con una visión diferente del desarrollo.
Gracias a todos ustedes por compartir momentos educativos cada fin de semana. La lista de participantes por orden alfabético es la siguiente:
01 Aranda Rosales, Jaime Jesús
02 Beteta, Antonio
03 Cabrera Otoya, Jimmy
04 Chávez Córdova, Billy Herbert
05 Ciudad, Brayan
06 Condor Castillo, Edgar
07 Gaspar Chumpitaz, Oscar Michael
08 Huamaní García, Eduardo Felipe
09 Llontop Caballero, Jhony Frank
10 Marquez Redhead, Jorge Manuel
11 Miraya Anamaría, Edgar
12 Moreno Gomez, Juan Carlos
13 Palacios, Mario
14 Paredes Urbano, Gary W.
15 Palomino Oliva, Alan Francesco
16 Rengifo Ocrospoma, Joseph
17 Reyes Espinoza, Ray
18 Reyes, Alex
19 Rivera Molina, Pool
20 Saavedra Mejia, Miguel
21 Schwarz Moreno, Edward
22 Silva, Madeleyne
23 Tasayco Trigozo, José
24 Tito Fernandez, Erick
25 Vallejo Aguilar, Fernando
26 Vera Morocho, Edinson
27 Zambrano Pérez, Rolando José
Suerte a todos ustedes y éxito para salir a conquistar el mercado que están muy bien preparados, quizás en un nivel que todavía tomará tiempo que otros exploren.
Etiquetas:
.NET,
Asíncrono,
ASP.NET,
C#,
Carrito de Compras,
CSV,
Cursos,
Desconectado,
Entrenamiento,
HTML5,
Javascript,
JSON,
Lduenas,
MVC,
Performance,
Serializadores,
Sockets,
Taller Domingos,
XHR,
XML
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
miércoles, 4 de mayo de 2016
Entrenamiento - Nuevas Vacantes Segundo Taller de ASP.NET MVC & JavaScript
Nuevas Vacantes para el Segundo Taller de ASP.NET MVC & JavaScript
A todos los interesados en seguir el Taller que iniciamos este Domingo, les comunico que debido a que varias personas que se registraron y no llegaron a asistir, hay varias vacantes para poder seguir el entrenamiento que va a ser extremo.
Este Domingo (Día de la Madre) si habrá clases y los temas en homenaje a la madres de todos los desarrolladores serán:
1. Creación de Serializadores (desde DataTables y Listas de Objetos)
- Serializador XML
- Serializador JSON
- Serializador CSV
2. Llamadas Asíncronas al Servidor con XmlHttpRequest (XHR2)
- Textos
- Blob
- ArrayBuffer
Además presentaremos los Utilitarios de la Semana (como les prometí ese día):
- Convertidor MP3 (basado en Lame)
- Lector de Tablas de Páginas Web (incluyendo si están con Login o Seguridad de Formularios)
Finalmente, les copiaré mas de 100 Libros de .NET, HTML, JavaScript, CSS, etc.
Los interesados, ya saben que el costo para ex-alumnos que hubieran llevado conmigo un curso no hace mas de 5 años es de 200 soles, para los demás es de 300 soles. Solo tienen que enviar un mail a Luis.duenash@gmail.com para registrarlos y enviarles la dirección exacta que esta cerca a ISIL de Salaverry.
A todos los interesados en seguir el Taller que iniciamos este Domingo, les comunico que debido a que varias personas que se registraron y no llegaron a asistir, hay varias vacantes para poder seguir el entrenamiento que va a ser extremo.
Este Domingo (Día de la Madre) si habrá clases y los temas en homenaje a la madres de todos los desarrolladores serán:
1. Creación de Serializadores (desde DataTables y Listas de Objetos)
- Serializador XML
- Serializador JSON
- Serializador CSV
2. Llamadas Asíncronas al Servidor con XmlHttpRequest (XHR2)
- Textos
- Blob
- ArrayBuffer
Además presentaremos los Utilitarios de la Semana (como les prometí ese día):
- Convertidor MP3 (basado en Lame)
- Lector de Tablas de Páginas Web (incluyendo si están con Login o Seguridad de Formularios)
Finalmente, les copiaré mas de 100 Libros de .NET, HTML, JavaScript, CSS, etc.
Los interesados, ya saben que el costo para ex-alumnos que hubieran llevado conmigo un curso no hace mas de 5 años es de 200 soles, para los demás es de 300 soles. Solo tienen que enviar un mail a Luis.duenash@gmail.com para registrarlos y enviarles la dirección exacta que esta cerca a ISIL de Salaverry.
Etiquetas:
.NET,
Asíncrono,
ASP.NET,
C#,
CSS3,
CSV,
Curso MVC,
Entrenamiento,
HTML5,
Javascript,
JSON,
Lduenas,
Listas de Objetos,
MVC,
Serializadores,
Taller Domingos,
Web Performance,
WebSockets,
XHR,
XML
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
lunes, 31 de agosto de 2015
Conferencias - Developer Day 2015 (CEPS UNI)
Developer Day 2015 (CEPS UNI)
Este Sabado 12 de Setiembre habrá un conjunto de Conferencias en la UNI, en la cual participaré como expositor. Le alcanzo los detalles de mi exposición y la publicidad del evento.
TITULO:
UNA NUEVA FORMA DE DESARROLLAR WEB PARA LA PERFORMANCE EN ASP.NET
HORARIO:
De 2:00 pm a 2:45 pm.
OBJETIVO:
Entender cómo mejorar la Performance en ASP.NET, ya sea en una página Web Form o una vista MVC usando un Serializador que devuelva los datos como cadena y construyendo el HTML en el cliente con JavaScript. Estas llamadas se realizaran en forma asíncrona con XmlHttpRequest (XHR).
DESCRIPCION:
Actualmente, la gran cantidad de usuarios de las aplicaciones web requieren nuevas técnicas de desarrollo para resolver el problema de la performance o velocidad de carga de las páginas que siguen un esquema tradicional que es hacer llamadas asíncronas con Ajax o jQuery, usar “Controles del Servidor” y devolver los datos en formato “JSON”.
La nueva forma propuesta consiste en enviar la menor cantidad de archivos en cada página (solo el Html, un archivo JS, un archivo CSS y las imágenes pequeñas como cadenas en formato Base64). Las llamadas se harán mediante XHR desde JavaScript y los datos se devolverán como cadenas que es 3 veces de menor tamaño que JSON y luego se creará dinámicamente como HTML.
Este Sabado 12 de Setiembre habrá un conjunto de Conferencias en la UNI, en la cual participaré como expositor. Le alcanzo los detalles de mi exposición y la publicidad del evento.
TITULO:
UNA NUEVA FORMA DE DESARROLLAR WEB PARA LA PERFORMANCE EN ASP.NET
HORARIO:
De 2:00 pm a 2:45 pm.
OBJETIVO:
Entender cómo mejorar la Performance en ASP.NET, ya sea en una página Web Form o una vista MVC usando un Serializador que devuelva los datos como cadena y construyendo el HTML en el cliente con JavaScript. Estas llamadas se realizaran en forma asíncrona con XmlHttpRequest (XHR).
DESCRIPCION:
Actualmente, la gran cantidad de usuarios de las aplicaciones web requieren nuevas técnicas de desarrollo para resolver el problema de la performance o velocidad de carga de las páginas que siguen un esquema tradicional que es hacer llamadas asíncronas con Ajax o jQuery, usar “Controles del Servidor” y devolver los datos en formato “JSON”.
La nueva forma propuesta consiste en enviar la menor cantidad de archivos en cada página (solo el Html, un archivo JS, un archivo CSS y las imágenes pequeñas como cadenas en formato Base64). Las llamadas se harán mediante XHR desde JavaScript y los datos se devolverán como cadenas que es 3 veces de menor tamaño que JSON y luego se creará dinámicamente como HTML.
BANNER
Etiquetas:
AJAX,
ASP.NET,
CEPS UNI,
Conferencias,
CSS,
Developer Day,
HTML,
Javascript,
jQuery,
JSON,
MVC,
Performance,
Serializadores,
XHR
jueves, 4 de junio de 2015
El Demo del Día: Performace entre Serializadores .NET
Performace entre Serializadores .NET
El Problema de la Performance
Uno de los problemas principales de los Sistemas Informáticos Modernos es la Performance, sea Windows o Web la Aplicación, con el crecimiento del uso (aumento de usuarios) dentro (Intranet) y fuera de la empresa (Internet) las aplicaciones cada vez son mas lentas.
Esta lentitud es tratada de resolver aumentando Hardware como mas Servidores, mas Memorias, mas CPUs, mas Ancho de Banda, etc. Todo menos hacer una reingeniería del desarrollo que es la principal causa, es decir el problema es la forma cómo se programa (Software) donde lo común es que se realizan muchas conexiones al Servidor de Base de Datos, se usan estructuras de datos pesadas (por ejemplo en .NET los DataSets), se hacen bucles expensivos, etc.
Solución al Problema de la Performance
Aprender las Buenas Prácticas de Programación que permitan consumir la menor cantidad de memoria con el menor tiempo de procesamiento, para lo cual hay diferentes las cuales compartiremos a partir de hoy, empezando por una Comparación de Serializadores para elegir el mejor.
Definición de Serialización
Según Wikipedia, la Serialización (o Marshalling en inglés) es el proceso de codificación de un objeto en un medio de almacenamiento (como puede ser un archivo, o un buffer de memoria) con el fin de transmitirlo a través de una conexión en red como una serie de bytes o en un formato humanamente más legible como XML o JSON, entre otros.
La serie de bytes o el formato pueden ser usados para crear un nuevo objeto que es idéntico en todo al original, incluido su estado interno (por tanto, el nuevo objeto es un clon del original).
La Serialización es un mecanismo ampliamente usado para transportar objetos a través de una red, para hacer persistente un objeto en un archivo o base de datos, o para distribuir objetos idénticos a varias aplicaciones o localizaciones.
El Problema de la Performance
Uno de los problemas principales de los Sistemas Informáticos Modernos es la Performance, sea Windows o Web la Aplicación, con el crecimiento del uso (aumento de usuarios) dentro (Intranet) y fuera de la empresa (Internet) las aplicaciones cada vez son mas lentas.
Esta lentitud es tratada de resolver aumentando Hardware como mas Servidores, mas Memorias, mas CPUs, mas Ancho de Banda, etc. Todo menos hacer una reingeniería del desarrollo que es la principal causa, es decir el problema es la forma cómo se programa (Software) donde lo común es que se realizan muchas conexiones al Servidor de Base de Datos, se usan estructuras de datos pesadas (por ejemplo en .NET los DataSets), se hacen bucles expensivos, etc.
Solución al Problema de la Performance
Aprender las Buenas Prácticas de Programación que permitan consumir la menor cantidad de memoria con el menor tiempo de procesamiento, para lo cual hay diferentes las cuales compartiremos a partir de hoy, empezando por una Comparación de Serializadores para elegir el mejor.
Definición de Serialización
Según Wikipedia, la Serialización (o Marshalling en inglés) es el proceso de codificación de un objeto en un medio de almacenamiento (como puede ser un archivo, o un buffer de memoria) con el fin de transmitirlo a través de una conexión en red como una serie de bytes o en un formato humanamente más legible como XML o JSON, entre otros.
La serie de bytes o el formato pueden ser usados para crear un nuevo objeto que es idéntico en todo al original, incluido su estado interno (por tanto, el nuevo objeto es un clon del original).
La Serialización es un mecanismo ampliamente usado para transportar objetos a través de una red, para hacer persistente un objeto en un archivo o base de datos, o para distribuir objetos idénticos a varias aplicaciones o localizaciones.
Importancia de elegir un Serializador
Es necesario saber elegir adecuadamente un Serializador, ya que cada vez que enviamos datos entre dos procesos se usa la serialización.
A continuación listamos los Serializadores .NET junto con los tipos de aplicaciones o tecnologías distribuidas que las usan por defecto:
- Serializador Binario: Usado en Sockets y .NET Remoting (dll)
- Serializador SOAP: Usado por Servicios Web XML (asmx)
- Serializador XML: Usado por los Servicios WCF (svc y dll)
- Serializador JSON: Usado en Web API
- Serializador Personalizado: Hay que crearlo uno mismo.
La importancia de seleccionar bien el Serializador es que este es el factor principal de performance al momento de usar un Servicio o una Aplicación Distibuida, es decir, depende de este el tiempo de serialización deserealización y sobre todo el formato y el tamaño de los datos que se pasan por la red.
En este post, comprobaremos cual es el mejor, sin embargo la mayoría siempre usa el peor y después quiere que sus Servicios sean rápidos, es decir, quieren una cosa (Performance) pero hacen otra (Estándar).
Crear una Aplicación Windows Forms en C#
Abrir Visual Studio y crear una aplicación Windows Forms en C# llamada "Comparacion_Serializacion", cambiarle de nombre al formulario por "frmListaProductos" y realizar el diseño similar a la figura mostrada:
Nota: En el diseño hay un DataGridView llamado "dgvProducto", un menú contextual llamado "mnuContextual" con 6 opciones: mnuCargarDatos, mnuBinario, mnuSOAP, mnuXML, mnuJSON y mnuPersonalizado.
Crear el Procedimiento Almacenado en SQL Server
Crear el Procedimiento llamado "uspProductsListar" en SQL Server:
Create Procedure uspProductsListar
As
Select ProductID, ProductName, SupplierID,
CategoryID,UnitPrice, UnitsInStock
From Products
Crear la Clase Entidad del Negocio
Agregar una clase al proyecto llamada: "beProducto" y escribir el siguiente código:
using System;
using System.Runtime.Serialization;
namespace Comparacion_Serializacion
{
//[Serializable]
//[DataContract]
public class beProducto
{
//[DataMember]
public int IdProducto { get; set; }
//[DataMember]
public string Nombre { get; set; }
//[DataMember]
public int IdProveedor { get; set; }
//[DataMember]
public int IdCategoria { get; set; }
//[DataMember]
public decimal PrecioUnitario { get; set; }
//[DataMember]
public short Stock { get; set; }
}
}
Nota: Los atributos de serialización (Serializable, DataContract y DataMember) han sido comentados inicialmente para ver que sucede cuando se intenta serializar con cada técnica.
Crear la Clase de Acceso a Datos
Agregar una clase al proyecto llamada: "daProducto" 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
namespace Comparacion_Serializacion
{
public class daProducto
{
public List<beProducto> listar(SqlConnection con)
{
List<beProducto> lbeProducto = null;
SqlCommand cmd = new SqlCommand("uspProductsListar", con);
cmd.CommandType = CommandType.StoredProcedure;
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);
}
}
}
Crear la Clase de Reglas del Negocio
Agregar una clase al proyecto llamada: "brProducto" y escribir el siguiente código:
using System;
using System.Configuration; //ConfigurationManager
using System.Data.SqlClient; //SqlConnection
using System.Collections.Generic; //List
namespace Comparacion_Serializacion
{
public class brProducto
{
public string CadenaConexion { get; set; }
private string archivoLog;
public brProducto()
{
CadenaConexion =
ConfigurationManager.ConnectionStrings["conNW"].ConnectionString;
}
public List<beProducto> listar()
{
List<beProducto> lbeProducto = null;
using (SqlConnection con = new SqlConnection(CadenaConexion))
{
try
{
con.Open();
daProducto odaProducto = new daProducto();
lbeProducto = odaProducto.listar(con);
}
catch (SqlException ex)
{
//grabarLog(ex);
}
catch (Exception ex)
{
//grabarLog(ex);
}
} //con.Close(); con.Dispose();
return (lbeProducto);
}
}
}
Nota: Para usar la clase "ConfigurationManager", primero hay que hacer referencia a la librería "System.Configuration.dll"
Crear una Clase para la Serialización Personalizada de Strings
Agregar una clase al proyecto llamada: "CustomSerializer" y escribir el siguiente código:
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;
using System.IO;
namespace Comparacion_Serializacion
{
public class CustomSerializer
{
public static void Serializar<T>(List<T> lista, string archivo, char separadorCampo,
char separadorRegistro)
{
StringBuilder sb = new StringBuilder();
PropertyInfo[] propiedades = lista[0].GetType().GetProperties();
for (int i = 0; i < propiedades.Length; i++)
{
sb.Append(propiedades[i].Name);
if (i < propiedades.Length - 1) sb.Append(separadorCampo);
}
sb.Append(separadorRegistro);
for (int j = 0; j < lista.Count; j++)
{
propiedades = lista[j].GetType().GetProperties();
for (int i = 0; i < propiedades.Length; i++)
{
if (propiedades[i].GetValue(lista[j], null) != null)
sb.Append(propiedades[i].GetValue(lista[j], null).ToString());
else sb.Append("");
if (i < propiedades.Length - 1) sb.Append(separadorCampo);
}
if (j < lista.Count - 1) sb.Append(separadorRegistro);
}
File.WriteAllText(archivo,sb.ToString());
}
public static List<T> Deserializar<T>(string archivo, char separadorCampo,
char separadorRegistro)
{
List<T> lista = new List<T>();
if (File.Exists(archivo))
{
string contenido = File.ReadAllText(archivo);
string[] registros = contenido.Split(separadorRegistro);
string[] campos;
string[] cabecera = registros[0].Split(separadorCampo);
string registro;
Type tipoObj;
T obj;
dynamic valor;
Type tipoCampo;
for (int i = 1; i < registros.Length; i++)
{
registro = registros[i];
tipoObj = typeof(T);
obj = (T)Activator.CreateInstance(tipoObj);
campos = registro.Split(separadorCampo);
for (int j = 0; j < campos.Length; j++)
{
tipoCampo = obj.GetType().GetProperty(cabecera[j]).PropertyType;
valor = Convert.ChangeType(campos[j],tipoCampo);
obj.GetType().GetProperty(cabecera[j]).SetValue(obj, valor);
}
lista.Add(obj);
}
}
return (lista);
}
}
}
Nota: Para crear mi propio Serializador uso Reflection y Listas Genéricas.
Una de las claves para hacer la Deserealización es crear una instancia del objeto dinámicamente con Activator.CreateInstance y luego escribir el valor desde la cadena al objeto para lo cual uso Convert.ChangeType.
Escribir el Código del Formulario frmListaProducto
Antes de escribir el código de los Serializadores hay que hacer las siguientes Referencias:
- System.Runtime.Serialization.Formatters.Soap.dll para la Serialización SOAP
- System.Runtime.Serialization para la Serialización JSON
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO; //FileStream
using System.Linq; //ToList
using System.Diagnostics; //Stopwatch
using System.Runtime.Serialization.Formatters.Binary; //BinaryFormatter
using System.Runtime.Serialization.Formatters.Soap; //SoapFormatter
using System.Xml.Serialization; //XmlSerializer
using System.Runtime.Serialization.Json; //DataContractJsonSerializer
namespace Comparacion_Serializacion
{
public partial class frmListaProducto : Form
{
private List<beProducto> lbeProducto;
public frmListaProducto()
{
InitializeComponent();
}
private void cargarDatos(object sender, EventArgs e)
{
brProducto obrProducto = new brProducto();
lbeProducto = obrProducto.listar();
dgvProducto.DataSource = lbeProducto;
}
private void medirTiempo(Action metodo)
{
Stopwatch cronometro = new Stopwatch();
cronometro.Start();
metodo();
MessageBox.Show(String.Format("Tiempo de Duración: {0:n0} msg",
cronometro.Elapsed.TotalMilliseconds));
cronometro.Stop();
}
private void serializarBinario()
{
BinaryFormatter bf = new BinaryFormatter();
using (FileStream fs = new FileStream("Binario.txt",
FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
{
bf.Serialize(fs, lbeProducto);
}
}
private void deserializarBinario()
{
BinaryFormatter bf = new BinaryFormatter();
using (FileStream fs = new FileStream("Binario.txt",
FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
lbeProducto=(List<beProducto>)bf.Deserialize(fs);
}
}
private void serializarSOAP()
{
SoapFormatter sf = new SoapFormatter();
using (FileStream fs = new FileStream("SOAP.txt",
FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
{
sf.Serialize(fs, lbeProducto.ToArray());
}
}
private void deserializarSOAP()
{
SoapFormatter sf = new SoapFormatter();
using (FileStream fs = new FileStream("SOAP.txt",
FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
lbeProducto=((beProducto[])sf.Deserialize(fs)).ToList();
}
}
private void serializarXML()
{
XmlSerializer xs = new XmlSerializer(typeof(List<beProducto>));
using (FileStream fs = new FileStream("XML.txt",
FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
{
xs.Serialize(fs, lbeProducto);
}
}
private void deserializarXML()
{
XmlSerializer xs = new XmlSerializer(typeof(List<beProducto>));
using (FileStream fs = new FileStream("XML.txt",
FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
lbeProducto = (List<beProducto>)xs.Deserialize(fs);
}
}
private void serializarJSON()
{
DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(List<beProducto>));
using (FileStream fs = new FileStream("JSON.txt",
FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
{
js.WriteObject(fs, lbeProducto);
}
}
private void deserializarJSON()
{
DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(List<beProducto>));
using (FileStream fs = new FileStream("JSON.txt",
FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
lbeProducto=(List<beProducto>)js.ReadObject(fs);
}
}
private void serializarString()
{
CustomSerializer.Serializar(lbeProducto, "Strings.txt", ',', '|');
}
private void deserializarString()
{
lbeProducto=CustomSerializer.Deserializar<beProducto>("Strings.txt", ',', '|');
}
private void mnuSerializarBinario_Click(object sender, EventArgs e)
{
medirTiempo(serializarBinario);
}
private void mnuDeserializarBinario_Click(object sender, EventArgs e)
{
medirTiempo(deserializarBinario);
dgvProducto.DataSource = lbeProducto;
}
private void mnuSerializarSOAP_Click(object sender, EventArgs e)
{
medirTiempo(serializarSOAP);
}
private void mnuDeserializarSOAP_Click(object sender, EventArgs e)
{
medirTiempo(deserializarSOAP);
dgvProducto.DataSource = lbeProducto;
}
private void mnuSerializarXML_Click(object sender, EventArgs e)
{
medirTiempo(serializarXML);
}
private void mnuDeserializarXML_Click(object sender, EventArgs e)
{
medirTiempo(deserializarXML);
dgvProducto.DataSource = lbeProducto;
}
private void mnuSerealizarJSON_Click(object sender, EventArgs e)
{
medirTiempo(serializarJSON);
}
private void mnuDeserealizarJSON_Click(object sender, EventArgs e)
{
medirTiempo(deserializarJSON);
dgvProducto.DataSource = lbeProducto;
}
private void mnuSerializarPersonalizado_Click(object sender, EventArgs e)
{
medirTiempo(serializarString);
}
private void mnuDeserializarPersonalizado_Click(object sender, EventArgs e)
{
medirTiempo(deserializarString);
dgvProducto.DataSource = lbeProducto;
}
}
}
Nota: Todos las funciones manejadoras de eventos llaman a la función "medirTiempo" para ejecutar la Serialización y Deserealización.
Modificar el Archivo de Configuración
Abrir el archivo app.Config y aumentar la cadena de conexión:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="conNW" providerName="SQLServer"
connectionString="uid=UsuarioNW;pwd=123456;
server=DSOFT\Sqlexpress;database=Northwind"/>
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
Ejecutar y Probar la Aplicación Windows Forms
Grabar la aplicación y pulsar F5 para ejecutarla. Aparecerá una ventana similar a la siguiente figura:
Clic derecho y se mostrará el menú contextual, del cual seleccionar la primera opción: "Cargar Datos" y se listarán los productos.
Serialización Binaria
Clic derecho y del menú contextual seleccionar la opción "Binario" y luego "Serializar", se mostrará el tiempo de la serialización, en mi caso 11 msg y se creará un archivo llamado "Binario.txt" con el siguiente contenido:
Notas:
- Si se intenta Serializar el archivo a Binario se caerá ya que la Entidad (clase beProducto) no es serializable, proceder a descomentar el atributo [Serializable].
- Observar que el tamaño del archivo Binario.txt es de 5756 bytes (en mi caso).
Detener la ejecución y probar nuevamente, pero esta vez seleccionar directamente del menú contextual "Binario" y "Deserealizar", se mostrará el tiempo de deserealización, en mi caso 8 msg y se cargarán los datos desde el archivo "Binario.txt" en la lista de objetos y se mostrará en la grilla.
Serialización SOAP
Detener la ejecución y probar nuevamente, seleccionando la opción "Cargar Datos", luego del menú contextual seleccionar la opción "SOAP" y luego "Serializar", se mostrará el tiempo de la serialización, en mi caso 30 msg y se creará un archivo llamado "SOAP.txt" con el siguiente contenido:
Nota: Observar que el tamaño del archivo SOAP.txt es de 73586 bytes (en mi caso)
Detener la ejecución y probar nuevamente, pero esta vez seleccionar directamente del menú contextual "Binario" y "Deserealizar", se mostrará el tiempo de deserealización, en mi caso 51 msg y se cargarán los datos desde el archivo "SOAP.txt" en la lista de objetos y se mostrará en la grilla.
Serialización XML
Detener la ejecución y probar nuevamente, seleccionando la opción "Cargar Datos", luego del menú contextual seleccionar la opción "XML" y luego "Serializar", se mostrará el tiempo de la serialización, en mi caso 192 msg y se creará un archivo llamado "XML.txt" con el siguiente contenido:
Nota: Observar que el tamaño del archivo XML.txt es de 22270 bytes (en mi caso)
Detener la ejecución y probar nuevamente, pero esta vez seleccionar directamente del menú contextual "Binario" y "Deserealizar", se mostrará el tiempo de deserealización, en mi caso 209 msg y se cargarán los datos desde el archivo "XML.txt" en la lista de objetos y se mostrará en la grilla.
Serialización JSON sin atributos
Detener la ejecución y probar nuevamente, seleccionando la opción "Cargar Datos", luego del menú contextual seleccionar la opción "JSON" y luego "Serializar", se mostrará el tiempo de la serialización, en mi caso 474 msg y se creará un archivo llamado "JSON.txt" con el siguiente contenido:
Nota: Observar que el tamaño del archivo JSON.txt es de 19716 bytes (en mi caso)
Detener la ejecución y probar nuevamente, pero esta vez seleccionar directamente del menú contextual "Binario" y "Deserealizar", se mostrará el tiempo de deserealización, en mi caso 347 msg y se cargarán los datos desde el archivo "JSON.txt" en la lista de objetos y se mostrará en la grilla.
Serialización JSON con atributos (DataContract y DataMember)
Detener la ejecución, decomentar los atributos [DataContract] y [DataMamber] de la entidad beProducto, además renombrar el archivo JSON.txt por JSON2.txt y probar nuevamente, seleccionando la opción "Cargar Datos", luego del menú contextual seleccionar la opción "JSON" y luego "Serializar", se mostrará el tiempo de la serialización, en mi caso 27 msg y se creará un archivo llamado "JSON.txt" con el siguiente contenido:
Nota: Observar que el tamaño del archivo JSON.txt es tan solo de 10332 bytes (en mi caso)
Detener la ejecución y probar nuevamente, pero esta vez seleccionar directamente del menú contextual "Binario" y "Deserealizar", se mostrará el tiempo de deserealización, en mi caso 92 msg y se cargarán los datos desde el archivo "JSON.txt" en la lista de objetos y se mostrará en la grilla.
Serialización Personalizada con Strings
Detener la ejecución y probar nuevamente, seleccionando la opción "Cargar Datos", luego del menú contextual seleccionar la opción "Personalizado" y luego "Serializar", se mostrará el tiempo de la serialización, en mi caso 15 msg y se creará un archivo llamado "Strings.txt" con el siguiente contenido:
Nota: Observar que el tamaño del archivo Strings.txt es de 3125 bytes (en mi caso)
Detener la ejecución y probar nuevamente, pero esta vez seleccionar directamente del menú contextual "Personalizado" y "Deserealizar", se mostrará el tiempo de deserealización, en mi caso 53 msg y se cargarán los datos desde el archivo "Strings.txt" en la lista de objetos y se mostrará en la grilla.
Resumen Comparativo
A continuación una figura con un cuadro resumen de tiempos y tamaños por serializador (formato):
Esta resaltado los que mejor rendimiento tienen, es decir el tiempo de Serializado el ganador es el Binario, pero en tamaño (ancho de banda) el ganador es el Strings (Personalizado), además para Servicios Web el Binario no es aplicable por tanto, el mejor Serializador en Performance sería el String.
Sin embrago el comportamiento de los desarrolladores ha sido:
- Web Services XML con SOAP (2002-2007)
- WCF Services con XML (2008-2011)
- Web API con JSON (2012-2015)
Comentario Final
Después de haber tratado detalladamente los Serializadores .NET y analizado su tiempo y tamaño, la recomendación final es que si desean consumir el mínimo ancho de banda, hay que crear su propio serializador (yo le estoy dejando el mio, que poco a poco lo voy a optimizar) ya que es el que mejor rendimiento tiene en velocidad, tamaño e inter-operabilidad.
Claro, muchos dirán que No es Estandar el formato creado, y otros dirán y como hago para consumirlos desde los clientes, es decir como muestro estos datos, así como hay Templates para JSON yo tambien tengo mis propias rutinas que muestran en JavaScript cualquier Strings separados por caracteres, los cuales serán motivos de otros post.
Descarga del Código
Etiquetas:
.NET,
Binario,
C#,
Demos,
Deserealizar,
Distribuido,
JSON,
Lduenas,
Listas Objetos,
Performance,
Personalziado,
Reflection,
Serializadores,
Serializar,
Servicios,
SOAP,
Strings,
Web Services,
WinForms,
XML
Suscribirse a:
Entradas (Atom)










