¿Cuál es una explicación simple de la capa de abstracción en el desarrollo web?

“Abstracción” solo significa “ocultar detalles”.

Por ejemplo, algo como una API JSON se puede llamar una capa de abstracción: hay un código complejo debajo, con cientos de clases, métodos y otras cosas, pero el código del cliente no necesita ser consciente de eso; puede hacer todo lo que quiera a través de un par de puntos finales pequeños y simples. O, por ejemplo, podría tener una capa entre la base de datos y su código de back-end real que valida las reglas comerciales o similares (esta capa a menudo puede estar dentro de la base de datos, en forma de procedimientos almacenados).

Mientras estamos en eso, “abstracción con fugas” significa una abstracción que intenta ocultar la complejidad debajo, pero falla (“filtra” la complejidad): para extender el ejemplo anterior de la API JSON, los puntos finales son pequeños y simples, pero debido a cómo está organizado el código debajo, puede importar en qué orden los llame, y llamarlos en el orden incorrecto podría producir resultados impredecibles o algo así.

La forma de combatir las abstracciones con fugas es llegar al borde del trastorno de personalidad dividida 🙂 Debe intentar fingir que no sabe absolutamente nada sobre los detalles internos y tratar de pensar en términos de la abstracción presentada a la capa superior (p. Ej. al código del cliente): si no sabía nada, ¿con qué puntos finales podría tratar de contactar? ¿Qué parámetros sin sentido podrías tratar de darles? Si hay algo que obtienes de uno y tienes que enviar a otro, ¿qué pasaría si pensaras que puedes cambiarlo antes de enviarlo? En otras palabras, solo trata de actuar como un newb completo y ve si puedes romper la abstracción. Luego agregue cheques y mensajes de error útiles para todos los abusos que pueda pensar.

En general, el propósito del ejercicio es permitirle trabajar en diferentes componentes por separado, sin tener que recordar cómo funcionan los otros componentes. Esta es la única forma viable de desarrollar grandes aplicaciones; incluso las personas más inteligentes tienen límites, y esos límites son muy fáciles de alcanzar con código mal diseñado (“mal diseñado”, entre otras cosas, significa “malas abstracciones”).

Escribir en una pantalla virtual, por lo que la pantalla que está utilizando no hace ninguna diferencia.

Lectura y escritura en una unidad virtual, por lo que el tipo de unidad (tarjeta SD, unidad de disco magnético, cinta, etc.) no importa.

Eso es lo que hace la HAL (Capa de abstracción de hardware) en Windows: Windows se ocupa de ella, se ocupa de los dispositivos físicos.