¿Qué quiere decir Alan Kay con ‘negociar significado’ entre 2 servidores de comunicación? (oponiéndose explícitamente al concepto de API)

Bueno, una de las alternativas (y sé de muy pocos sistemas en los que esto se hace porque es Honestamente PEOR que simplemente usar REST de una manera sensata) es usar sistemas de descubrimiento y un contexto como HATEOS (HTTP como el motor del Estado), donde su API es navegable a través de referencias de enlace, los datos y sus campos están todos metaetiquetados, y cada solicitud se considera una transacción muy pequeña que existe independientemente de todo lo demás. Además, es terriblemente inseguro, y para las cosas que realmente necesitan un procesamiento transaccional, usted o las personas que necesitan acceso a nivel de comunicaciones lo odiarán. A menudo ambos.

Esto no quiere decir que HATEOS sea malo, o que el concepto de tener una API internamente navegable sea malo, absolutamente no, y si hubiera mejores formas de que el sistema construyera y mantuviera estas transacciones del menú contextual lógicamente, y una mejor manera de Asegure la conversación (hay) que era convencional (pero no lo es), entonces sería un sistema hermoso. Hasta donde sé, esto no es cierto, pero me encantaría estar equivocado al respecto.

Para aclarar, una negociación como esta implicaría algún tipo de conversación en pseudo lenguaje natural como esta:

Solicitar saldo de usuario para ID de usuario: x0000010921

El servidor recibe la solicitud, decide procesarla aunque no esté autenticada:
Lee la ID de usuario y un modificador, por lo que carga ese objeto de registro en la memoria
Busca un campo llamado Balance de usuario, o Balance, o cualquier metaetiqueta que coincida con la solicitud, encuentra uno (¡sí!)
Responde con “Balance (nombre del campo para referencia) para la ID de usuario: X0000010921” como un nombre de elemento XML o JSON, y una respuesta de XXXX: XX y un símbolo de moneda.

Esto es todo, en cada etapa, mucho más trabajo que simplemente crear una API transaccional, y esta es la conversación mínima absoluta. Empeora muy, MUY rápido.

Como puede ver, necesitaría un NLP (analizador de lenguaje natural), un meta diccionario, un asistente de navegación para su punto final HATEOS real (para navegar por los enlaces tradicionales y enviarlo al lugar correcto), y la voluntad de crear todo los gastos generales para navegar y, lo que es más importante, mantenerlo. Que yo sepa, el único sistema que hace cosas como esta es la búsqueda por voz de Google, junto con Siri y Amazon Alexa, y sus competidores, pero no lo usa para conversaciones entre computadoras (que yo sepa).

Creo que está tratando de describir el “Estado de E / S compartido”.

El patrón API original se creó en los años 70 cuando no existían arquitecturas distribuidas. Todo estaba centralizado: una aplicación> un servidor.

Este fue el mismo patrón en el que Roy Fielding basó su disertación y que fue adoptado por todos los principales marcos y bibliotecas.

Lamentablemente, como resultado, debido a la lógica de comunicación y los datos vinculantes a la lógica empresarial, el estado de E / S no se puede compartir entre otros servidores en una arquitectura distribuida.

Necesitamos reescribir el patrón API para incluir un nivel de abstracción para alejar la lógica / datos de comunicación de la lógica empresarial para que la E / S pueda sincronizarse y compartirse entre todos los servicios en una arquitectura.

Tomo una cita de Zapier para respaldar mi conversación

Las API (interfaces de programación de aplicaciones) son una gran parte de la web. En 2013, las empresas publicaron más de 10.000 API para consumo abierto 1. Es el cuádruple del número disponible en 2010 2.

Quizás el Dr. A. Kay quiso decir que tenemos demasiadas API en las industrias. ¡Y los API tienen que negociar entre ellos! Tal vez necesitaba algo de IEEE para reducir los números de API /

More Interesting

¿Qué son las herramientas de ingeniería de software que se pueden enseñar a los estudiantes universitarios?

¿Cómo las actualizaciones de software hacen que los programas sean más rápidos?

¿Cuánto C ++ se usa en las principales corporaciones tecnológicas en Silicon Valley?

¿Qué papel, en todo caso, desempeñará Dassault Systemes en la prometedora industria de la impresión 3D?

¿Puedo hacer una especialización en ingeniería de nanotecnología con una especialización en ingeniería de software en la Universidad de Waterloo?

Cómo aprender el desarrollo impulsado por el comportamiento (BDD)

¿Cuál es un buen objetivo de referencia para 'solicitudes por segundo' (RPS) y 'conexiones' de clientes para una aplicación web de producción?

¿Qué debo hacer si me cuesta leer el código heredado?

¿Cuál es la mejor manera de aprender a pasar una entrevista técnica en Facebook, Palantir, Google, etc. después de haber estado codificando solo durante unos meses?

¿Cuáles son algunos sistemas de software heredados malos que se beneficiarían de una reescritura completa?

¿Cómo es ser ingeniero en Nintendo?

¿Cuál es la forma recomendada de mantenerse actualizado con las últimas tecnologías, técnicas y herramientas en el desarrollo de software y aplicaciones?

¿Cuál es la habilidad de programación más valiosa en este momento? ¿Cuál es la próxima cosa caliente? ¿Qué están usando las nuevas empresas geniales ahora, y qué usarán los grandes jugadores el próximo año?

¿Te gusta arreglar errores?

¿Cuáles son los mejores gerentes de ingeniería de SW en Silicon Valley?