miércoles, 16 de mayo de 2018

Entrenamiento - Tercer Seminario de Desarrollo Web ASP.NET MVC & JavaScript

Tercer Seminario de Desarrollo Web ASP.NET MVC & JavaScript

Continuando con los Seminarios de una vez al mes el tema a tratar será como Crear Servidores HTTP y TCP en .NET
En el seminario crearemos diferentes tipos de servidores y lo llamaremos desde aplicaciones Web y Windows en .NET, también por JavaScript desde el Browser.
En casi todos los ejemplos se verán notificaciones y actualización en tiempo real.
Solo se usarán clases de .NET Framework, es decir, sin Librerías de Terceros Ni Frameworks extras.

Seminario 3: Creando Servidores HTTP y TCP en .NET (C#)
1. Creación de un Servidor de Mensajeria
2. Creación de un Servidor de Bases de Datos NoSQL
3. Creación de un Servidor Web
4. Creación de un Servidor WebSocket

Información
Día: Sábado 26 de Mayo del 2018
Horario: 4:00 pm a 10:00 pm.
Registro y Pago: 4:00 pm a 4:30 pm.
Duración: 6 horas

Inversión
- 100 Soles solo para Alumnos que estan llevando actualmente Cursos los Sábados y/o Domingos
- 200 Soles para el resto (ex-alumnos y público en general)

Vacantes y Lugar
Participantes: 15 Mínimo - 25 Máximo
Lugar: Mi Domicilio (Zona Norte de Lima)
Nota: A los que no conocen el lugar solo si se registran les enviaré la dirección exacta.

Contacto
Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:
Asunto: Tercer Seminario de Desarrollo Web ASP.NET MVC & JavaScript
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
- Alumno Regular de Talleres: Si / No

lunes, 2 de abril de 2018

Entrenamiento - Segundo Seminario de Desarrollo Web ASP.NET MVC & JavaScript

Segundo Seminario de Desarrollo Web ASP.NET MVC & JavaScript

Continuando con los Seminarios de una vez al mes el tema a tratar será como manejar archivos de Office 2007 (xlsx, docx, pptx) desde aplicaciones .NET, tanto Windows como Web.
Este tema es muy importante ya que la mayoría de programadores diariamente trabajan con Excel y algunos con Word, sobre todo archivos xlsx y docx.
En este seminario se verán las diferentes técnicas para poder crear y leer estos archivos, ya que sino se conocen las técnicas adecuadas, se tendrán problemas de velocidad (performance) tanto para leer como para escribir.

Seminario 2: Manejando Archivos de Office desde .NET (C#)

1. Creación de un Archivo de Excel desde Windows
  1.1. Crear con Automatización COM o ActiveX (Interop)
  1.2. Crear con Archivos de Texto y OLEDB
  1.3. Crear con Archivos XML si es un Archivo xlsx

2. Lectura de un Archivo de Excel desde Windows
  2.1. Leer con OLEDB en ADO.NET
  2.2. Leer Archivos XML si es un Archivo xlsx

3. Creación de un Archivo de Word desde Windows
  3.1. Crear con Automatización COM o ActiveX (Interop)
  3.2. Crear con Archivos XML si es un Archivo docx

4. Lectura de un Archivo de Word desde Windows
  4.1. Leer Archivos XML si es un Archivo docx
  4.2. Leer un Documento Plantilla y Crear un Nuevo Documento

5. Preview de Archivos de Office desde Aplicaciones Web
  5.1. Preview de una Hoja de Excel
  5.2. Preview de un Documento de Word
  5.3. Preview de Diapositivas de Power Point

6. Creación de Archivos de Office desde Aplicaciones Web
  6.1. Crear y Descargar un Archivo de Excel
  6.2. Crear y Descargar un Archivo de Word
  6.3. Crear y Descargar Varios Archivos de Excel o Word

Día y Hora:
- Día: Sábado 7 de Abril del 2018
- Horario: 4:00 pm a 10:00 pm.
- Duración: 6 horas

Inversión:
- 100 Soles para Alumnos Regulares de Talleres
- 200 Soles para Público en General

Participantes:
- 15 Mínimo
- 25 Máximo

Lugar:
- Mi Domicilio (Zona Norte de Lima)
Nota: A los que no conocen el lugar solo si se registran les enviaré la dirección exacta.

Contacto:
Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:
Asunto: Segundo Seminario de Desarrollo Web ASP.NET MVC & JavaScript
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
- Alumno Regular de Talleres: Si / No

miércoles, 28 de febrero de 2018

Entrenamiento - Cierre de Inscripciones para el Seminario y Curso de los Sábados

Cierre de Inscripciones para el Seminario y Curso de los Sábados

Estimados alumnos y visitantes del Blog, quiero comunicarles que solo hasta hoy Miércoles 28 de Febrero se estará registrando para el Curso del Sábado en las Mañanas y para el Primer Seminario del Sábado en la Tarde.

La inversión para el Curso de los Sábados en las Mañanas es de 300 soles para nuevos participantes y 150 soles para alumnos que siempre participan. En cuanto al Seminario del Sábado en la Tarde la inversión es de 200 soles para nuevos participantes y 100 soles para alumnos regulares (que siempre asisten a cursos, seminarios y talleres).

La dirección del Curso se estará enviando a los registrados mañana temprano y la del Seminario será en la Asociación Kallpa - Pasaje Capri 140, Urb. Palomar Norte, La Victoria
(Cerca a Metro y Claro de la Av. Arriola).

Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:
Asunto: [Primer Seminario o Curso] de Desarrollo Web ASP.NET MVC & JavaScript
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
- Alumno Regular de Talleres: Si / No

Nota: Alumno regular es que participa constantemente de los Cursos, Talleres y Seminarios, no los que han ido solo una vez o los que han ido varias pero no acaban.

Los esperamos este Sábado con mucho material en castellano sobre los temas a tratar.

martes, 20 de febrero de 2018

Entrenamiento - Primer Seminario de Desarrollo Web ASP.NET MVC & JavaScript

Primer Seminario de Desarrollo Web ASP.NET MVC & JavaScript

Para todos los alumnos que participaron en los Cursos y Talleres de Desarrollo Web con ASP.NET MVC & JavaScript les comunico el inicio de los Seminarios una vez al mes, donde se verán algunos temas que quedaron pendientes y se profundizarán otros.

Seminario 1: Programación Asíncrona
En el BackEnd con .NET
- Subprocesamiento: Threads, ThreadPool
- Modelo de Programación Asincrona (APM): Metodos Begin y End, CallBacks
- Programación Asincrona por Eventos (EAP): Metodos Async, Eventos Completed
- Programación Asincrona por Tareas (TAP): Metodos Async, Tasks, async..await
En el FrontEnd con JavaScript
- Modelos de Programación Asíncrona: CallBacks y Promises
- Clases Asincronas en JavaScript: XmlHttpRequest, FileReader, WebSocket, etc.
- Creando Funciones Asíncronas usando WebWorkers
- Creando Funciones Asíncronas usando async..await (ES6)

Información
Día: Sábado 3 de Marzo
Horario: 4:30 pm a 09:30 pm.
Registro y Pago: 4:00 pm a 4:30 pm.
Duración: 5 horas
Inversión:
- 100 Soles para Alumnos Regulares de Talleres
- 200 Soles para Público en General
Participantes: 15 Mínimo - 30 Máximo
Lugar: Asociación Kallpa - Pasaje Capri 140, Urb. Palomar Norte, La Victoria
(Cerca a Metro y Claro de la Av. Arriola)

Contacto
Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:
Asunto: Primer Seminario de Desarrollo Web ASP.NET MVC & JavaScript
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
- Alumno Regular de Talleres: Si / No

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.

viernes, 26 de enero de 2018

El Manual del Día: ADO .NET 4.5

MSDN - Manual de ADO .NET 4.5

Titulo: Manual de ADO .NET 4.5
Fuente Original: Microsoft Developer Network (MSDN)
Compilado Por: Luis Dueñas Huaroto (Lduenas)
Año de Compilación: 2010
Número de Páginas: 266

Indice del Manual de ADO .NET 4.5

1. Novedades en ADO.NET
2. Guía Básica de ADO.NET
3. Información General Acerca de ADO.NET
  3.1. Arquitectura de ADO .NET
  3.2 Proveedores de Datos de .NET Framework
  3.3. DataSets
  3.4. Ejecución en Paralelo
  3.5. Código de Ejemplo
4. Proteger Aplicaciones de ADO.NET
  4.1. Información General de Seguridad
  4.2. Acceso Seguro a Datos
  4.3. Aplicaciones Cliente Seguras
  4.4. Seguridad de Acceso del Código y ADO.NET
  4.5. Privacidad y Seguridad de Datos
5. Trabajar con Objetos DataSet
  5.1. Crear un DataSet
  5.2. Agregar un DataTable a un DataSet
  5.3. Agregar DataRelations
  5.4. Navegar por DataRelations
  5.5. Combinar Contenido de un DataSet
  5.6. Copiar Contenido de un DataSet
  5.7. Control de Eventos del DataSet
  5.8. DataSets con Establecimiento de Tipos
    5.8.1. Generar Objetos DataSet con Establecimiento Inflexible de Tipos
    5.8.2. Anotar DataSets con Establecimiento de Tipos
  5.9. DataTables
    5.9.1. Crear un DataTable
    5.9.2. Definición de Esquema de un DataTable
      5.9.2.1. Agregar Columnas al DataTable
      5.9.2.2. Crear Columnas de Expresión
      5.9.2.3. Crear Columnas AutoIncrement
      5.9.2.4. Definir Claves Principales
      5.9.2.5. Restricciones del DataTable
    5.9.3. Manipular Datos en el DataTable
      5.9.3.1. Agregar Datos al DataTable
      5.9.3.2. Ver Datos en un DataTable
      5.9.3.3. El Método Load
      5.9.3.4. Editar el DataTable
      5.9.3.5. Estados de Fila y Versiones de Fila
      5.9.3.6. Eliminar un DataRow
      5.9.3.7. Información de Errores de Fila
      5.9.3.8. AcceptChanges y RejectChanges
      5.9.3.9. Control de Eventos del DataTable
  5.10. DataTableReaders
    5.10.1. Crear un DataReader
    5.10.2. Navegar por DataTables
  5.11. DataViews
    5.11.1. Crear DataView
    5.11.2. Ordenar y Filtrar Datos
    5.11.3. DataRows y DataRowViews
    5.11.4. Buscar Filas
    5.11.5. ChildViews y Relaciones
    5.11.6. Modificar Objetos DataView
    5.11.7. Tratamiento de Eventos del DataView
    5.11.8. Administrar DataViews
    5.11.9. Crear DataTable Desde un DataView
  5.12. Utilizar XML en un DataSet
    5.12.1. DiffGrams
    5.12.2. Cargar DataSet desde un XML
    5.12.3. Escribir Contenido del DataSet como Datos XML
    5.12.4. Cargar la Información de Esquema de un DataSet desde XML
    5.12.5. Escribir la Información de Esquema de un DataSet como XSD
    5.12.6. Sincronización del DataSet y XmlDataDocument
      5.12.6.1. Sincronizar el DataSet con el XmlDataDocument
      5.12.6.2. Realizar una Consulta de XPath en un DataSet
      5.12.6.3. Aplicar una Transformación XSL a un DataSet
    5.12.7. Anidar DataRelations
  5.13. Consumir DataSet a partir de un Servicio Web XML
6. Manipular Datos
  6.1. Conectar con un Origen de Datos
    6.1.1. Establecer la Conexión
    6.1.2. Eventos de Conexión
    6.1.3. Contadores de Rendimiento
  6.2. Cadenas de Conexión
    6.2.1. Generadores de Cadenas de Conexión
    6.2.2. Cadenas de Conexión y Archivos de Configuración
    6.2.3. Sintaxis de la Cadena de Conexión
    6.2.4. Proteger la Información de Conexión
  6.3. Agrupación de Conexiones
    6.3.1. Agrupación de Conexiones en SQL Server
    6.3.2. Agrupación de Conexiones OLE DB, ODBC y Oracle
  6.4. Comandos
    6.4.1. Ejecutar un Comando
    6.4.2. Configurar Parámetros
    6.4.3. Generar Comandos con Objetos CommandBuilder
    6.4.4. Obtener un Unico Valor de una Base de Datos
    6.4.5. Utilizar Comandos para Modificar Datos
      6.4.5.1. Actualizar Datos en un Origen de Datos
      6.4.5.2. Realizar Operaciones de Catálogo
  6.5. DataReaders
    6.5.1. Recuperar Datos Mediante DataReader
    6.5.2. Recuperar Datos Binarios
  6.6. DataAdapters
    6.6.1. Rellenar un Objeto DataSet desde un Objeto DataAdapter
    6.6.2. Parámetros DataAdapter
    6.6.3. Agregar Restricciones Existentes al DataSet
    6.6.4. Asignar DataAdapter
    6.6.5. Paginar a Través de un Resultado de Consulta
    6.6.6. Actualizar Orígenes de Datos con DataAdapters
    6.6.7. Control de Eventos del DataAdapter
    6.6.8. Realizar Operaciones por Lotes con DataAdapters
  6.7. Recuperar Valores de Identidad o Valores Autonuméricos
  6.8. Transacciones
    6.8.1. Transacciones Locales
    6.8.2. Transacciones Distribuidas
    6.8.3. Integración de System.Transactions con SQL Server
  6.9. Modificar Datos con Procedimientos Almacenados
7. ADO .NET Entity Framework
  7.1. Información general de Entity Framework
  7.2. Modelado y asignación
    7.2.1. Generador de EDM (EdmGen.exe)
    7.2.2. Definir la cadena de conexión
    7.2.3. Cómo hacer que los archivos de asignación y de modelo sean recursos incrustados
    7.2.4. Trabajar con lenguaje de definición de datos
  7.3. Trabajar con proveedores de datos
    7.3.1. Cadenas de conexión
    7.3.2. Proveedores de datos de Entity Framework
      7.3.2.1. Proveedor de EntityClient para Entity Framework
        7.3.2.1.1. Cómo generar una cadena de conexión EntityConnection
        7.3.2.1.2. Ejecutar una consulta que devuelve resultados PrimitiveType
        7.3.2.1.3. Ejecutar una consulta que devuelve resultados StructuralType
        7.3.2.1.4. Cómo: Ejecutar una consulta que devuelve resultados RefType
        7.3.2.1.5. Cómo: Ejecutar una consulta que devuelve tipos complejos
        7.3.2.1.6. Cómo ejecutar una consulta que devuelve colecciones anidadas
        7.3.2.1.7. Cómo ejecutar una consulta de Entity SQL parametrizada con EntityCommand
        7.3.2.1.8. Cómo ejecutar un procedimiento almac. parametrizado usando EntityCommand
        7.3.2.1.9. Cómo ejecutar una consulta polimórfica
        7.3.2.1.10. Cómo: Navegar por las relaciones con el operador Navigate
      7.3.2.2. SqlClient para Entity Framework
        7.3.2.2.1. SqlClient para las funciones de Entity Framework
          7.3.2.2.1.1. Asignación entre las funciones canónicas del modelo conceptual y
                             las funciones de SQL Server
          7.3.2.2.1.2. Funciones de agregado
          7.3.2.2.1.3. Funciones de fecha y hora
          7.3.2.2.1.4. Funciones matemáticas
          7.3.2.2.1.5. Funciones de cadena
          7.3.2.2.1.6. Funciones del sistema
        7.3.2.2.2. Tipos de SqlClient para Entity Framework
        7.3.2.2.3. Problemas conocidos en SqlClient para Entity Framework
    7.3.3. Escribir un proveedor de datos de Entity Framework
      7.3.3.1. Generación de SQL
        7.3.3.1.1. Forma de los árboles de comandos
        7.3.3.1.2. Generar SQL a partir de árboles de comandos: procedimientos recomendados
      7.3.3.2. Generar SQL de modificación
      7.3.3.3. Especificación del manifiesto del proveedor
  7.4. Consideraciones de desarrollo e implementación
    7.4.1. Consideraciones de seguridad
    7.4.2. Consideraciones de rendimiento
    7.4.3. Consideraciones de la migración
    7.4.4. Consideraciones de implementación
  7.5. Terminología de Entity Framework

Descarga
Manual_ADO_.NET_4.5

jueves, 25 de enero de 2018

El Manual del Día: Programación Asíncrona y Paralela en .NET 4.5

MSDN - Manual de Programación Asíncrona y Paralela en .NET 4.5

Titulo: Manual de Programación Asíncrona y Paralela en .NET 4.5
Fuente Original: Microsoft Developer Network (MSDN)
Compilado Por: Luis Dueñas Huaroto (Lduenas)
Año de Compilación: 2010
Número de Páginas: 336

Indice del Manual de Programación Asíncrona y Paralela en .NET 4.5

1. Subprocesamiento administrado
  1.1. Principios básicos del subprocesamiento administrado
    1.1.1. Subprocesos y subprocesamiento
    1.1.2. Excepciones en subprocesos administrados
    1.1.3. Sincronizar datos para subprocesamiento múltiple
    1.1.4. Estados de subprocesos administrados
    1.1.5. Subprocesos de primer y segundo plano
    1.1.6. Subprocesamiento administrado y no administrado en Windows
    1.1.7. Thread.Suspend, recolección de elementos no utilizados y puntos de seguridad
    1.1.8. Almacenamiento local de subprocesos: Campos estáticos relacionados con
              subprocesos y ranuras de datos
    1.1.9. Cancelación en subprocesos administrados
      1.1.9.1. Cómo: Realizar escuchas de solicitudes mediante sondeo
      1.1.9.2. Cómo: Registrar devoluciones de llamadas de solicitudes de cancelación
      1.1.9.3. Cómo: Realizar escuchas de solicitudes de cancelación cuando tienen
                   controladores de espera
      1.1.9.4. Cómo: Realizar escuchas de varias solicitudes de cancelación
  1.2. Utilizar subprocesos y subprocesamiento
    1.2.1. Crear subprocesos y analizar los datos en el inicio
    1.2.2. Pausar y reanudar subprocesos
    1.2.3. Destruir subprocesos
    1.2.4. Planear subprocesos
    1.2.5. Cancelar subprocesos de manera cooperativa
  1.3. Procedimientos recomendados para el subprocesamiento administrado
  1.4. Objetos y características de subprocesos
    1.4.1. Grupo de subprocesos administrados
    1.4.2. Temporizadores
    1.4.3. Monitores
    1.4.4. Controladores de espera
    1.4.5. Controladores de espera
      1.4.5.1. EventWaitHandle
      1.4.5.2. AutoResetEvent
      1.4.5.3. ManualResetEvent y ManualResetEventSlim
      1.4.5.4. CountdownEvent
    1.4.6. Exclusiones mutuas (mutex)
    1.4.7. Operaciones de bloqueo
    1.4.8. Bloqueos de lector y escritor
    1.4.9. Semaphore y SemaphoreSlim
    1.4.10. Información general sobre los primitivos de sincronización
    1.4.11. Barrier
      1.4.11.1. Cómo: Sincronizar operaciones simultáneas con una clase Barrier
    1.4.12. SpinLock
      1.4.12.1. Cómo: Utilizar SpinLock para la sincronización de bajo nivel
      1.4.12.2. Cómo: Habilitar el modo de seguimiento de subproceso en el bloqueo SpinLock
    1.4.13. Tokens de cancelación
    1.4.14. SpinWait
      1.4.14.1. Cómo: Usar SpinWait para implementar una operación de espera de dos fases
2. Modelos para la programación asincrónica
  2.1. Modelo asincrónico basado en tareas (TAP)
    2.1.1. Implementar el modelo asincrónico basado en tareas
    2.1.2. Utilizar el modelo asincrónico basado en tareas
    2.1.3. Interoperabilidad con los modelos asincrónicos y otros tipos
  2.2. Publicar datos de símbolos
    2.2.1. Programación multiproceso con el modelo asincrónico basado en eventos
      2.2.1.1. Información general sobre el modelo asincrónico basado en eventos
      2.2.1.2. Implementar el modelo asincrónico basado en eventos
      2.2.1.3. Procedimientos recomendados para implementar el modelo asincrónico
                   basado en eventos
      2.2.1.4. Decidir cuándo implementar el modelo asincrónico basado en eventos
      2.2.1.5. Tutorial: Implementar un componente que admita el modelo asincrónico
                   basado en eventos
        2.2.1.5.1. Cómo: Implementar un componente que admita el modelo asincrónico
                        basado en eventos
        2.2.1.5.2. Cómo: Implementar un cliente en un modelo asincrónico basado en eventos
      2.2.1.6. Cómo: Utilizar componentes que admitan el modelo asincrónico basado en eventos
  2.3. Modelo de programación asincrónica (APM)
    2.3.1. Llamar a métodos asincrónicos mediante IAsyncResult
      2.3.1.1. Bloquear la ejecución de una aplicación mediante AsyncWaitHandle
      2.3.1.2. Bloquear la ejecución de una aplicación al finalizar una operación asincrónica
      2.3.1.3. Sondear el estado de una operación asincrónica
      2.3.1.4. Utilizar un delegado AsyncCallback para finalizar una operación asincrónica
        2.3.1.4.1. Utilizar un delegado AsyncCallback y un objeto State
    2.3.2. Programación asincrónica mediante delegados
      2.3.2.1. Llamar a métodos sincrónicos de forma asincrónica
      2.3.2.2. Ejemplo de programación de delegados asincrónicos
3. Programación paralela en .NET Framework
  3.1. Biblioteca de procesamiento paralelo basado en tareas (TPL)
    3.1.1. Paralelismo de datos (Task Parallel Library)
      3.1.1.1. Cómo: Escribir un bucle Parallel.For simple
      3.1.1.2. Cómo: Escribir un bucle Parallel.ForEach simple
      3.1.1.3. Cómo: Detener o interrumpir un bucle Parallel.For
      3.1.1.4. Cómo: Escribir un bucle Parallel.For que tenga variables locales de subproceso
      3.1.1.5. Cómo: Escribir un bucle Parallel.ForEach que tenga variables locales de subproceso
      3.1.1.6. Cómo: Cancelar un bucle Parallel.For o ForEach
      3.1.1.7. Cómo: Controlar excepciones en bucles paralelos
      3.1.1.8. Cómo: Acelerar cuerpos de bucle pequeños
      3.1.1.9. Cómo: Recorrer en iteración directorios con la clase paralela
    3.1.2. Paralelismo de tareas (Task Parallel Library)
      3.1.2.1. Tareas de continuación
      3.1.2.2. Tareas anidadas y tareas secundarias
      3.1.2.3. Cancelación de tareas
      3.1.2.4. Control de excepciones
      3.1.2.5. Cómo: Usar Parallel.Invoke para ejecutar operaciones paralelas
      3.1.2.6. Cómo: Devolver un valor de una tarea
      3.1.2.7. Cómo: Esperar a que una o varias tareas se completen
      3.1.2.8. Cómo: Cancelar una tarea y sus elementos secundarios
      3.1.2.9. Cómo: Controlar excepciones iniciadas por tareas
      3.1.2.10. Cómo: Encadenar varias tareas con continuaciones
      3.1.2.11. Cómo: Crear tareas precalculadas
      3.1.2.12. Cómo: Recorrer un árbol binario con tareas paralelas
      3.1.2.13. Cómo: Desencapsular una tarea anidada
      3.1.2.14. Cómo: Evitar que una tarea secundaria se adjunte a su elemento primario
    3.1.3. Biblioteca de procesamiento paralelo basado en tareas (TPL)
      3.1.3.1. Cómo: Escribir y leer mensajes en un bloque de flujo de datos
      3.1.3.2. Cómo: Implementar un modelo de flujo de datos productor-consumidor
      3.1.3.3. Cómo: Realizar una acción cuando un bloque de flujos de datos recibe datos
      3.1.3.4. Tutorial: Crear una canalización de flujos de datos
      3.1.3.5. Cómo: Desvincular bloques de flujos de datos
      3.1.3.6. Tutorial: Usar flujos de datos en aplicaciones de Windows Forms
      3.1.3.7. Cómo: Cancelar un bloque de flujos de datos
      3.1.3.8. Tutorial: Crear tipos de bloques de flujos de datos personalizados
      3.1.3.9. Cómo: Usar JoinBlock para leer datos de diferentes orígenes
      3.1.3.10. Cómo: Especificar el grado de paralelismo en un bloque de flujos de datos
      3.1.3.11. Cómo: Especificar un programador de tareas en un bloque de flujos de datos
      3.1.3.12. Tutorial: Usar BatchBlock y BatchedJoinBlock para mejorar la eficacia
    3.1.4. TPL con otros modelos asincrónicos
      3.1.4.1. TPL y la programación asincrónica tradicional de .NET
      3.1.4.2. Cómo: Encapsular modelos de EAP en una tarea
      3.1.4.3. Problemas potenciales en el paralelismo de datos y tareas
  3.2. Parallel LINQ (PLINQ)
    3.2.1. Introducción a PLINQ
    3.2.2. Introducción a la velocidad en PLINQ
    3.2.3. Conservar el orden en PLINQ
    3.2.4. Opciones de combinación en PLINQ
    3.2.5. Posibles problemas con PLINQ
    3.2.6. Cómo: Crear y ejecutar una consulta PLINQ simple
    3.2.7. Cómo: Controlar la ordenación en una consulta PLINQ
    3.2.8. Cómo: Combinar consultas LINQ paralelas y secuenciales
    3.2.9. Cómo: Controlar excepciones en una consulta PLINQ
    3.2.10. Cómo: Cancelar una consulta PLINQ
    3.2.11. Cómo: Escribir una función de agregado personalizada de PLINQ
    3.2.12. Cómo: Especificar el modo de ejecución en PLINQ
    3.2.13. Cómo: Especificar opciones de combinación en PLINQ
    3.2.14. Cómo: Recorrer en iteración directorios con PLINQ
    3.2.15. Cómo: Medir el rendimiento de consultas PLINQ
    3.2.16. Ejemplo de datos de PLINQ
  3.3. Estructuras de datos para la programación paralela
  3.4. Herramientas de diagnóstico paralelo
  3.5. Particionadores personalizados para PLINQ y TPL
    3.5.1. Cómo: Implementar las particiones dinámicas
    3.5.2. Cómo: Implementar un particionador con un número estático de particiones
  3.6. Generadores de tareas
  3.7. Programadores de tareas
    3.7.1. Cómo: Crear un programador de tareas que limita el grado de simultaneidad
    3.7.2. Cómo: Programar trabajo en el subproceso de la interfaz de usuario
  3.8. Expresiones lambda en PLINQ y TPL

Descarga