Desarrollo en base a entidades para el software libre

Responder
Avatar de Usuario
ignatius
Mensajes: 1275
Registrado: 21 May 2007, 19:47
Ubicación: Capital Federal, Argentina
Contactar:

Desarrollo en base a entidades para el software libre

Mensaje por ignatius » 27 Sep 2016, 00:18

Imagino que ésta no debe ser una propuesta nueva, pero me gustaría proponer que cualquier desarrollo web debe tener bien definidas las entidades que utiliza, me imagino usar algo como el XML que usa Propel, aunque cambiaría lo de table por class o entity. Mi propuesta incluye definiciones que además permitan generar una API REST, por lo que faltaría agregar:
  • quien puede editar una entidad
  • quien puede editar / agregar una entidad relacionada a la principal
  • evitar la creación de algunas entidades (ej: provincias y ciudades, donde solo aplica el GET)
  • (a completar)
Propel no crea una API (quizá haya alguna extensión que no conozco). Lo que faltaría sería agregar un directorio de entidades versionadas.

Creo haber visto frameworks que directamente conectan la API a MongoDB, y cualquier POST a una URL ya crea un documento en la base de datos. Ya me aportaran nombres...

Tendría que hacer estadísticas para ver cuanto de lo que se desarrolla cae dentro del CRUD
En casos muy complejos pueden sobreescribirse las funciones, extenderla para cambiar un poco o usar un ruta distinta.

Por qué sería bueno esto?

Teniendo una API, se puede separar el diseño del backend. Con una API cualquiera puede agregar otro diseño en cualquier otro lenguaje. Se pueden agregar otros lenguajes por detrás de la API publica.

Estandarizando las entidades dos proyectos distintos podrían unificarse en el largo plazo, si es que no adaptaron mucho las entidades. Además tendrían las bases de datos bastante similares.

Ejemplos:

Diaspora* no tiene una API, no hay forma de agregar una entrada nueva sin simular un POST como si fuera desde el navegador. Ni hay forma de los que saben de Angular o React aporten nada, ni siquiera un prototipo o una aplicación con alguna funcionalidad distintiva.

Si Diaspora tuviese una API, tendríamos:

- usuarios, POST para crear
- entradas: crear, borrar (no se editan en D*)
-- Comentarios (POST a /posts/:id/comments)
--- Borrar comentario (DELETE a /posts/:id/comments/:id)
-- el Me gusta (POST a /posts/:id/like y que sería un comportamiento "Likeable")
-- el Compartir (quizá este sea un caso de programar a mano)

Como se ve, no hay mucha ciencia.

Responder