interfaces para los programas de aplicación (apis) · dsi – eie - fceia informática...
TRANSCRIPT
Informática Electrónica
Interfaces para los programas de aplicación
(APIs)
DSI- EIE – FCEIA2015
DSI – EIE - FCEIA Informática Electrónica 2
¿Que es un API?
● Application Program Interface (interface para programas aplicativos) es el mecanismo mediante el cual un programa aplicativo accede a servicios de otros componentes de software
● Un API puede tomar distintas formas:– Librerías
– Procedimientos
– Protocolos
– Objetos
DSI – EIE - FCEIA Informática Electrónica 3
Componentes de un API
● Convenciones de utilización● Estructuras de datos● Protocolos de invocación● Mecanismos de sincronización
DSI – EIE - FCEIA Informática Electrónica 4
API: Conceptos
● Conceptualmente, un API expone a los programas del usuario un conjunto de funcionalidades accesibles un forma controlada
● Un API puede permitir el acceso a dispositivos físicos (device drivers), a servicios de plataforma tales como E/S y comunicaciones o a funcionalidades específicas de una pieza de software
DSI – EIE - FCEIA Informática Electrónica 5
API: Arquitectura
Software/hardware
API
Aplicación
DSI – EIE - FCEIA Informática Electrónica 6
API: Arquitectura
API
AplicaciónLlamada Respuesta
DSI – EIE - FCEIA Informática Electrónica 7
APIs Síncronas / Asíncronas
● En el primer caso, la respuesta se produce como consecuencia de la llamada: existe una relación causal entre ambas y un ordenamiento temporal secuencial
● En el caso asíncrono la respuesta se produce por la ocurrencia de un evento externo, ante el cual el aplicativo es informado por el API
DSI – EIE - FCEIA Informática Electrónica 8
APIs Síncronas
Aplicativo API
t0
t1
solicitud
respuesta
DSI – EIE - FCEIA Informática Electrónica 9
APIs Asíncronas
t t
Aplicativo API
Evento e
t0
t1
t3
t2
Registra interés en evento “e”
registrado
Suceso: evento “e”
DSI – EIE - FCEIA Informática Electrónica 10
API: Tipos
● Dependiente del lenguaje: disponible para ser utilizada desde un lenguaje de programación específico. Ejemplo: API de sockets de UNIX (C)
● Independiente del lenguaje: diseñada de forma tal que puede utilizarse por programas escritos en distintos lenguajes de programación. Ejemplo: web services, NMEA, ELCOM
DSI – EIE - FCEIA Informática Electrónica 11
API: Ejemplos
● POSIX: Interface a los servicios de los sistemas operativos UNIX/POSIX
● WIN32: Interface a los servicios de Windows● Nvidia CUDA: (Compute Unified Device
Architecture) compilador y conjunto de herramientas de desarrollo que permiten a los programadores usar una variación del lenguaje C para codificar algoritmos en GPUs de nVidia
● NMEA: interface a instrumentos de navegación
DSI – EIE - FCEIA Informática Electrónica 12
Componentes de un API
● Uno o mas archivos de encabezado (*.h)● Una o mas librerías (*.o, *.lib, *.dll, etc.)● Un paquete de clases (Java: *.jar)● Usualmente encapsuladas en un “SDK”
(software Development Kit)● Una especificación de protocolo y mensajes
DSI – EIE - FCEIA Informática Electrónica 13
Modelos
● Un API puede utilizar uno o mas mecanismos para comunicarse con los programas aplicativos, por ejemplo:– Llamada a funciones
– Invocación de métodos
– Paso de mensajes
DSI – EIE - FCEIA Informática Electrónica 14
API Basada en Funciones
● Un API basada en funciones se presenta como una librería que se carga dinámica o estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo
● Para utilizarla se debe compilar el aplicativo junto con los encabezados (*.h) y vincular con uno o mas archivos *.lib
● Si la librería es dinámica se carga sólo en el momento de ejecución, y toma la forma de DLLs (Windows) o SO (Unix/Linux)
DSI – EIE - FCEIA Informática Electrónica 15
API Basada en Funciones
● Es un modelo utilizado en lenguaje C● Ejemplos:
– Placas adquisidoras de datos y conversores A/D
– Placas de comunicaciones
– Placas de captura de video
DSI – EIE - FCEIA Informática Electrónica 16
APIs basadas en Eventos
● Utilizadas para comunicaciones asíncronas con dispositivos de interface que producen estímulos desde el entorno, por ejemplo un sensor de nivel o un pulsador
● Frecuentemente la interacción se lleva a cabo mediante “funciones de call-back”
● Similar a las rutinas de atención de interrupción (ISR)
DSI – EIE - FCEIA Informática Electrónica 17
Funciones de Call-Back
● Cuando un programa tiene interés de conocer la ocurrencia de un evento, se “registra” como tal llamando una función del API e indicando como uno de sus argumentos un puntero a una función, que será invocada por el API ante la ocurrencia del evento en cuestión
DSI – EIE - FCEIA Informática Electrónica 18
Call-Back: Ejemplo
● El uso de “señales” en POSIX permite que un programa de aplicación sea notificado de la ocurrencia de un evento de su interés
● El programa aplicativo puede asociar un “manejador de señal”, que es una función que actúa en consecuencia a la notificación del evento
● El API de señales está incluido en <signal.h>
DSI – EIE - FCEIA Informática Electrónica 19
Callbacks: signal()
● La función signal() permite asociar un manejador a la ocurrencia de una señal mediante un puntero a función, utilizando el mecanismo de callback:
int (*signal(int sig, void (*func)()))()
DSI – EIE - FCEIA Informática Electrónica 20
Ejemplo: señales#include <stdio.h>#include <stdlib.h>#include <signal.h>
void sigproc( int a ){signal(SIGINT, sigproc);printf("\nctrlc presionado \n");printf("presione ctrl\\ para salir\n");return;
}
void quitproc( int b ){printf("ctrl\\: programa interrumpido\n");
exit(0);}
int main(void) {puts("Informatica Electronica Ejemplo callbacks");
signal(SIGINT, sigproc); signal(SIGQUIT, quitproc); printf("ctrlc deshabilitado\n");
for(;;);
return EXIT_SUCCESS;}
DSI – EIE - FCEIA Informática Electrónica 21
API Basada en Mensajes
● Establecen protocolos de diálogo en una arquitectura similar al modelo OSI
● Incluyen al menos una capa física, una de enlace y una de aplicación
● Como el intercambio está basado en mensajes, permiten independizar el lenguaje del aplicativo
● Ejemplos:– NMEA
– Garmin
– ELCOM
DSI – EIE - FCEIA Informática Electrónica 22
APIs Basada en Objetos
● Utilizable cuando el lenguaje de programación soporta el modelo de objetos: Java, C++, .Net
● Se presenta como un paquete de clases que brindan las funcionalidades requeridas mediante la instanciación de objetos y la posterior invocación de métodos sobre estos objetos
● Ejemplos:– Android SDK para dispositivos móviles
– Componentes de comunicaciones: TcpSocket, etc.
DSI – EIE - FCEIA Informática Electrónica 23
Código: Ejemplos
● Funcional:int nbytes = send(tx_buf, len);/* C */
● Objetos:
sf::TcpSocket socket;
socket.connect(sf::IpAddress(address), port); // c++
DSI – EIE - FCEIA Informática Electrónica 24
Caso de Estudio
● En la práctica 5 trabajaremos con un API (NMEA) y dos device drivers: el del reloj de tiempo real y un puerto serie de una PC
● El informe debe entregarse en formato electrónico antes del 20 de junio