subscribe
Professor de tecnologies i màrqueting
Formación, Java, JNI, Programación, Tecnologia

Cursos de formación sobre programación de DLLs, servicios, periferia y comunicaciones de red

Este curso responde a la necesidad de proporcionar formación para que los desarrolladores en lenguajes de alto nivel como Java, VB.NET, C# o VB6 puedan valerse de recursos de programación en Windows escritos a bajo nivel en C/C++ o incluso en assembler.

Un alumno que pase por ambos cursos conocerá los recursos necesarios para poder programar aplicaciones en Java, C# y C++ que exploten los recursos de los periféricos de Windows, enlacen con Microsoft Office o puedan crear servicios Windows comunicables con Java mediante JNI, sockets o named pipes.

Podrán crear arquitecturas multihilo y servicios de control sobre periféricos, integrar librerias DLL en SQL Server, comandar remotamente  periféricos en red o llamar a dichas DLLs desde programas antiguos o nuevos, asegurando la continuidad de las inversiones de las empresas en software.

El segundo curso ya implica pensar en arquitecturas y abre el ángulo de visión, siendo menos denso en conocimientos y mucho más agradecido en cuanto a pensar soluciones y aplicar creatividad.

Al final del segundo curso se acomete el desarrollo de un proyecto de control remoto de impresoras (o varios periféricos similares a escoger) desde Java, el cual implica crear una DLL JNI desde la estación cliente, comunicación remota mediante sockets o pipes, creación de un servicio Windows en la parte servidora y una DLL subordinada en lenguaje C que ataca a bajo nivel mediante la API del periférico.

Se trata de un buen repositorio de conocimientos para un ingeniero de software senior.

¿Cómo se proporcionan estos cursos?

Tenemos dos modalidades posibles:

  1. Presencialmente en cursos de viernes por la tarde y fines de semana, para grupos con fechas a pactar. Los viernes por la tarde están limitados para cursos dentro de la provincia de Barcelona.
  2. On-Line: por Internet mediante Moodle (campus virtual) en el cual cada mes aparece un tema principal de los temarios expuestos y se va elaborando mediante un foro. En el foro se proponen actividades para aplicar los conocimientos y cada alumno las va desarrollando y preguntando al profesor y al grupo, según su ritmo y disponibilidad. No importa que un alumno con mucha carga de trabajo tarde dos o tres meses en cambiar de tema; los temas se mantienen indefinidamente e incluso puede aplazarlos para un segundo intento, una vez finalizado el curso, sin coste adicional.

Flexibilidad de contenidos y duración

Estos cursos  tienen un contenido programado suficiente como para que un alumno domine en profundidad la programación Windows. Usaremos tres periféricos muy diferentes que así lo garantizan:

  • Impresoras con driver para Windows
  • Lectores de cheques de la casa CTS.
  • Puertos serie RS-232 para entornos industriales.

 

Podemos modificar esta lista de periféricos. Por ejemplo:

  • Cambiar, por ejemplo, la chequera por un scanner de tipo Twain.
  • Cambiar comandos de impresora por comandos de envío y recepción de imágenes.
  • Cambiar una fuente de datos de periféricos por una base de datos ODBC contra SQL Server y/o Access.

Criterios para escoger modalidad presencial u on-line

  • La duración de este curso depende de la disponibilidad de las empresas y de los alumnos.
    • Para realizar cursos en una empresa, necesitamos un aula con pizarra velleda y un proyector.
  • Si el tema crítico es la disponibilidad de los alumnos (horario o jornada laboral), lo mejor es hacerlo por Internet.
  • Si el tema crítico es la rapidez en disponer de ingenieros formados para un proyecto, lo mejor es hacerlo presencial, con lo que:
  1. El primer curso se podría dar, de promedio, en 150 horas.
  2. El segundo curso se puede dar en 40 horas.

No todos los grupos son iguales en tiempo de aprendizaje.

Evidentemente tratamos con personas, con compromisos personales o familiares, jornadas de trabajo concretas, circunstancias, etc.

Por esta razón puede haber grupos más rápidos y grupos menos rápidos.

En cada caso hablaremos y decidiremos conjuntamente.

Veamos ahora los contenidos previstos para cada curso:

Curso 1: DLLs de todos tipos, creación y uso avanzado

 

La base de todo son las librerías de enlace dinámico o DLL. Sin este conocimiento esencial no podremos adentrarnos en la programación de bajo nivel. Todo en Windows está basado en DLLs y eso requiere saber hacerlas y también saber acceder a ellas de diferentes formas.

El objetivo de este primer curso es proporcionar los conocimientos y la experiencia básica a un alumno para que sea capaz de crear DLLs utilizables desde lenguajes como:

  • Java
  • C/C++ (clásico unmanaged o managed basado en .NET / CLR)
  • C#
  • Visual Basic .NET
  • Programas anteriores en VB 6.0,
  • Assembler de Intel.

Y desde entornos como:

  • Periféricos de Windows
  • Microsoft Office
  • Bases de datos SQL Server
  • mediante Visual C++.

Iremos desde la más sencilla de las DLLs hasta el driver de hardware, pasando por interfaces con diferentes lenguajes de programación, multihilo, acceso a periféricos de Windows y manejo de puertos serie.

Este curso es la base para el segundo curso. Por tanto el primero contiene mucha más materia que el segundo, con la finalidad de que los alumnos que lleguen al segundo curso puedan concentrarse en el trabajo creativo de resolver problemas de programación con el potente repositorio de recursos de programación expuesto a continuación.

DLLs

  • Cómo construir una DLL en C/C++ con Visual C++
  • La manera más segura de crear DLLs sólidas y robustas.
  • Clases MFC en las DLLs.
  • El objeto Aplicación (CWinApp) en una DLL.
  • Acceso al objeto Aplicación.
  • Colgar sub-objetos accesibles a partir de la aplicación.
  • Los modos de llamada a las funciones (cdeclare y stdlib).
  • Cómo exportar funciones con visibilidad, seguridad y solidez.
  • Ejemplo básico y práctica con una función sencilla.

Funciones dentro de una DLL

  • Crear funciones de diversos tipos en una misma DLL
  • Funciones sencillas que sólo ejecutan un proceso sin parámetros.
  • Funciones que retornan booleanos.
  • Funciones que retornan enteros con signo.
  • Funciones que retornan enteros sin signo, handles, DWORDS, RETCODES
  • Funciones que pasan parámetros por valor y por referencia.
  • Punteros a void como elemento flexible en masas de datos.
  • Cómo proteger una función de una DLL contra parámetros NULL.

Llamadas externas hacia una DLL

Cómo escribir programas en C que llamen a las DLLs en C.

  • Linkado estático.
  • Linkado dinámico.
    • Prototipos de funciones.
    • Punteros a funciones.
      • Cargas y descargas de librerías desde disco a memoria y viceversa.
      • Obtención de punteros a funciones internas de la DLL.
    • Pros y contras de ambos sistemas de linkado.

Interfaces ActiveX

  • Desde Office hacia DLLs escritas en C.
  • Crear una DLL que exporta interfaces ActiveX para Visual Basic y Microsoft Office.
  • Cómo crear un programa llamador de interfaces ActiveX en C++.

Interfaces en assembler

  • Cómo crear funciones en assembler dentro de una DLL escrita en C/C++.
  • Cómo llamar desde un programa en C a una función en assembler dentro de la DLL.
  • Cómo llamar en assembler a una función de una DLL escrita en C.

Interfaces .NET

  • Cómo llamar desde C# a una DLL escrita en C.
  • Cómo llamar desde C# a una DLL escrita con interfaces ActiveX.
  • Cómo crear una DLL híbrida .NET
  • Mezclar código managed en C con código unmanaged en C++ .NET = CLR

Interfaces Java

  • ¿Qué es JNI y para qué se usa?
  • Java está escrito en C con JNI
  • Escribir una DLL en C con interfaz JNI.
  • Cómo hacer que Java mande sobre la DLL en C.
  • Cómo hacer que una DLL en C tome el control sobre una clase llamadora en Java.
  • Cómo crear excepciones en C que sean atrapables en Java.

Programación en Java sobre periféricos Windows mediante DLLs JNI

  • Programación de impresoras.
    • Uso del spooler de Windows.
    • Simulación de impresoras de modo texto de tipo host de “papel pijama”.
    • Impresión de tipos de letra, líneas, cajetines en modo gráfico de Windows.
  • Programación de puertos serie.
    • Comunicación con un puerto RS-232 para uso en entornos industriales.
  • Programación de lectoras de cheques bancarios del fabricante CTS
    • Lectura de un cheque por código magnético MICR.
    • Lectura de imágenes de cheques (tipo scanner) en simple o doble cara.
    • Manejo de parámetros de calidad de imágenes de la chequera.

DLLs y Microsoft SQL Server

  • Llamar a una DLL desde SQL Server.
  • Cómo crear un procedimiento almacenado (una extended stored procedure) en una DLL
  • Securizar y establecer permisos de ejecución de la extended stored procedure.
  • Práctica de cómo ir más rápido que SQL Server, desde dentro de SQL Server con una DLL.
    • Ejemplo de una extended stored procedure que implementa un sistema de índices por árbol binario equilibrado AVL insertado en una DLL y llamado al arranque desde SQL Server  como si fuera un comando propio de SQL Server.

DLLs multihilo

  • Multithread (multihilo) dentro de una misma DLL.
  • Puesta en marcha y parada de hilos.
  • Comunicación entre hilos.
  • Sincronización entre hilos.
  • Secciones críticas.

¿Qué es un driver?

  • Disfrazar” una DLL de driver. Un driver no es más que una DLL.
  • El WDK (anteriormente conocido como DDK).
  • Convertir una DLL en un recurso de un sistema operativo.

Curso 2: DLLs, Servicios y Comunicaciones en red

Este curso

Servicios Windows

  • ¿Qué es un servicio Windows?
  • Ventajas de un servicio Windows sobre una aplicación.
  • Cómo escribir un servicio Windows.
  • Instalación de un servicio.
    • Sistema clásico.
    • Sistema incorporado en el propio servicio.
  • Puesta en marcha y parada de un servicio.
  • Manejo de los errores de un servicio.
  • Multithread o multihilo dentro de un servicio.
  • Control de periféricos desde un servicio.
  • Seguridad y permisos de un servicio Windows.
  • Servicios que controlan a otros servicios.
  • Instrucciones susceptibles de generar problemas en un servicio Windows.
  • Soluciones creativas.

Comunicaciones desde y hacia un servicio.

  • Clientes y Listeners
  • Named pipes
    • ¿Qué es NetBIOS y NetBEUI?
    • Encabalgado de NetBEUI sobre TCP/IP.
      • Configuración.
      • Servicio estación.
      • Servicio de encabalgado NetBEUI sobre TCP/IP.
    • Funciones de API de named pipes.
    • Configuración de puertos y cortafuegos para named pipes.
    • Ejemplo de una clase C++ para envío y recepción de pipes.
    • Ejemplo de envío y recepción de pipes aplicado a la transmisión de imágenes.
  • Sockets
    • Crear un listener socket.
    • Aceptar un socket y redirigirlo a otro socket.
    • Sockets multi hilo.
  • Intérpretes de instrucciones en XML dentro de un servicio.
  • Compartición y gestión de concurrencia de recursos de periferia.

Proyecto final

  • Se trata de ver toda la materia expuesta en los dos cursos y aplicarla a crear un proyecto de control remoto de un periférico Windows desde otra estación de red en lenguaje Java.

Más información

Información ya por teléfono: 630.268.757

o por formulario de contacto:

 

Deixa un comentari