Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática...

24
Informática Electrónica Interfaces para los programas de aplicación (APIs) DSI- EIE – FCEIA 2015

Transcript of Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática...

Page 1: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

Informática Electrónica

Interfaces para los programas de aplicación

(APIs)

DSI- EIE – FCEIA2015

Page 2: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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

Page 3: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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

Page 4: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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

Page 5: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

DSI – EIE - FCEIA Informática Electrónica 5

API: Arquitectura

Software/hardware

API

Aplicación

Page 6: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

DSI – EIE - FCEIA Informática Electrónica 6

API: Arquitectura

API

AplicaciónLlamada Respuesta

Page 7: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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

Page 8: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

DSI – EIE - FCEIA Informática Electrónica 8

APIs Síncronas

Aplicativo API

t0

t1

solicitud

respuesta

Page 9: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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”

Page 10: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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

Page 11: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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

Page 12: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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

Page 13: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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

Page 14: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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)

Page 15: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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

Page 16: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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)

Page 17: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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

Page 18: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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>

Page 19: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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)()))()

Page 20: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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("\nctrl­­c 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("ctrl­c deshabilitado\n");

    for(;;);

return EXIT_SUCCESS;}

Page 21: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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

Page 22: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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.

Page 23: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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++

Page 24: Interfaces para los programas de aplicación (APIs) · DSI – EIE - FCEIA Informática Electrónica 14 API Basada en Funciones Un API basada en funciones se presenta como una librería

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