Interfaz de programación de aplicaciones, se puede escuchar en el nombre es una interfaz para programas de aplicación. Entonces, si desea automatizar algo en un programa como Blender, por ejemplo o OpenOffice, deberá buscar su especificación API.
Hay varias formas de conectarse a un programa como ese. Algunos de ellos están sobre una interfaz de red / socket, algunos están sobre una biblioteca de enlaces dinámicos, algunos sobre enlace estático.
Ejemplos:
- Cómo comenzar a aprender Desarrollo de sitios web
- ¿Vale la pena aprender el lenguaje Elm en lugar de React, Angular o Vue?
- ¿Qué tipo de notificaciones prefieren las personas?
- ¿Qué tan difícil sería crear un clon de Yelp para algo completamente diferente?
- Cómo diseñar un formulario de contacto para que se vea así
Enlace directo: Blender sería programable directamente. Por lo tanto, debe vincular sus programas directamente al software, utilizar las funciones que exporta Python of Blender y puede automatizar los procesos con él.
Jugué con eso para crear el fondo de mi cuenta de G + y Twitter, que puedes encontrar si buscas mi nombre en Quora.
API de socket: la mayoría de los servidores SQL tienen una API que responderá a las conexiones del cliente. Eso puede considerarse una API. Lo hice de esa manera en los días de AmigaRobots, cuando los programas se comunicaban con el servidor a través de un socket para ejecutar sus pequeños robots y luchar entre ellos.
Enlace de DLL (Biblioteca de enlaces dinámicos):
Típico de eso es la API de Windows o el kernel de Linux. Si bien las funciones de Kernel están disponibles directamente, puede vincular funciones adicionales a su programa. Es casi tan efectivo como el enlace directo en aspectos de velocidad, pero es mejor para compartir código con muchos programas que lo ejecutan. SQLite, por ejemplo, ha elegido una forma diferente de comunicarse con el cliente, porque la comunicación a través de un enlace directo o un enlace dinámico siempre es mucho más rápido que una API a través de un socket.
Y en este orden, la velocidad generalmente disminuirá:
- enlace directo
- enlace dinámico
- conexión de zócalo
En resumen, si desea controlar otro programa mediante su programa, debe usar su API, su interfaz de programación de aplicaciones. Hay mejores y peores interfaces.
Algunas de las peores interfaces si solicita velocidad y rendimiento que puede encontrar son sockets. Pero también son la API más versátil, por lo que los programas pueden comunicarse con esa API incluso si se ejecutan en otro lugar y no en la computadora.
Si está utilizando la vinculación de DLL, debe estar en la misma computadora, pero se está ejecutando en un espacio diferente en la memoria y es posible que pueda compartir código con otros programas.
La vinculación directa es la forma más rápida, pero solo puede compartir este tipo de vinculación con programas que generó usted mismo y no se puede compartir con nadie más. Pero el proceso de vinculación podría permitir que el sistema optimice la vinculación, de modo que se convierta en “en línea”, por ejemplo.
Esto significa que, en lugar de llamar a una subrutina, la subrutina se copia directamente en el código y se ejecuta como parte integral de la misma. Llamar a subrutinas suele ser un proceso “lento”, que utiliza hasta 60 ciclos, mientras que un código de operación habitual se ejecuta en solo uno. Entonces, si es algo trivial, eso está sucediendo en la subrutina, puede ganar velocidad al vincular directamente hasta un factor 60 si está en línea. Pero ese es el peor de los casos, por lo general no es tan dramático.
Pero también significa que su API no debe emitir un asunto trivial a un programa o se convertirá en el cerdo de su aplicación. Llamar a una biblioteca, una DLL, siempre se realiza mediante un acceso indirecto a la memoria, para “C” solo digo: “puntero”. Este acceso es un poco más lento que el salto directo y, por lo tanto, la llamada de subrutina puede pasar de 60 a 100 ciclos o algo en el peor de los casos.
Una llamada puede ser tan rápida como un ciclo, es solo que casi nunca sucede.
Espero poder ayudar sobre API y aclarar algunas cosas.