Diferencia entre revisiones de «Kernel de TuEntidad.es»

De Wiki~eWa
Ir a la navegaciónIr a la búsqueda
Línea 42: Línea 42:
 
* Identificador del objeto.
 
* Identificador del objeto.
 
* ''Valor'', ''vector'' -separado por '''dos puntos''' (''':''')- o ''matriz'' -vectores separados por '''salto de línea''' ('''\n''')-.
 
* ''Valor'', ''vector'' -separado por '''dos puntos''' (''':''')- o ''matriz'' -vectores separados por '''salto de línea''' ('''\n''')-.
 +
 +
Un ejemplo de consulta podría ser este, que es la petición de la fila 1 de los datos de un usuario, en la que se encuentra su ''nombre'', y ''apellidos''. Esta función es pública y accesible por cualquier usuario o visitante:
 +
 +
  u # 1 # datos # 1
 +
  [0] [1]  [2]  [3]
 +
 
 +
- El ''usuario'',
 +
--- ''1'',
 +
----- la '''matriz''' ''datos'',
 +
-------- la '''fila''' ''1''
  
 
=== Escrituras ===
 
=== Escrituras ===
Línea 52: Línea 62:
 
   n '''#''' + '''#''' 1 : 1 : -2: '''#''' urlescape(asunt) : urlescape(txt)
 
   n '''#''' + '''#''' 1 : 1 : -2: '''#''' urlescape(asunt) : urlescape(txt)
 
   [0] [1]      [2]                      [3]
 
   [0] [1]      [2]                      [3]
 
 
   
 
   
 
  - Escribir un ''mensaje'',
 
  - Escribir un ''mensaje'',

Revisión del 04:58 13 dic 2009

La parte que encargada del tratamiento de la lectura/escritura de datos de todo el Proyecto TuEntidad.es se llama Kernel. Por norma general se encuentra como subdominio (denominado kernel) de la página del Proyecto. Por lo general, existe un archivo dentro del propio visor que redirecciona internamente, a través de una implementación proxy-php en el caso de lotienes, a los servidores de datos de la aplicación. Todos los visores implementan un proxy. El uso del proxy oficial permite un balanceo de carga entre máquinas que mejoran los tiempos de carga.

Los visores en otros lenguajes se caracterizan por acceder al kernel directamente. Es el caso de las versiones en Flash y ejecutables de escritorio. La necesidad del proxy aparece en los visores que utilizan JavaScript, el cual no permite acceder a dominios fuera del actual.

Véase también: Servidor 3501

Protocolo del Kernel

Actualmente hay una serie de acciones no estandarizadas todavía como son el registro de nuevos usuarios y recuperación de claves de acceso, el inicio/cierre de sesión, y la subida de medios locales.

Las acciones (consultas) estandarizadas siguen el modelo de conjunto de órdenes, y a su vez, cada orden, sigue el modelo de conjunto de componentes.

Ordenes

Las peticiones pueden incluir varias componentes. Se separan con el signo dólar ($) y se numeran internamente con un autoincremental que empieza en cero.

Componentes

Las componentes de una orden son:

  • [0]: El tipo de objeto (a para los álbumes, c para los contactos, etc).
  • [1]: El identificador numérico natural del objeto (id>0) seleccionado
  • [2]: El nombre de la estructura -matriz o vector o valor- (generalmente datos o entidad)
  • [3]: La componente numérica -en caso de ser matriz o vector-
  • [4]: La componente numércia -en caso de haber sido una matriz-

Las componentes se separan por el signo almohadilla (#).

Iteradores

Cada órden puede utilizar en las componentes valores estáticos o valores dinámicos. Los primeros se generan en los visores y se envían directamente para su tratamiento; los dinámicos son referencias a órdenes anteriores, separados por comas (,).

Funciones

Al final de cada órden pueden aparecer, separadas por el signo arroba (@), una o más funciones. Las funciones tienen una estructura parecida a la componentes de la orden.

Tipos de peticiones y órdenes del Kernel

El protocolo del Kernel distingue dos acciones: La de consuluta, y la escritura, separándolos en dos archivos de petición distintos.

Consultas

Las consultas devuelven valores, vectores de valores, matrices (vectores de vectores) de valores, separados por ampersand (&), y a su vez identificados por una estructura de asignadores separados por el signo igual (=):

  • Tipo de objeto extendido.
  • Identificador del objeto.
  • Valor, vector -separado por dos puntos (:)- o matriz -vectores separados por salto de línea (\n)-.

Un ejemplo de consulta podría ser este, que es la petición de la fila 1 de los datos de un usuario, en la que se encuentra su nombre, y apellidos. Esta función es pública y accesible por cualquier usuario o visitante:

  u # 1 # datos # 1 
 [0] [1]   [2]   [3]
 
- El usuario,
--- 1,
----- la matriz datos,
-------- la fila 1

Escrituras

Al igual que el anterior, estas peticiones de escritura se dividen en órdenes. Cada una de ellas segmentadas en una serie de componentes. La última componente es el valor que se le asignará. Generalmente no devuelven nada, y solo en casos concretos, por ejemplo cuando se utilizan los comodines (+) devuelven los valores de esas componentes que se ignoraron. Ese es el caso de, por ejemplo, la petición de un mensaje nuevo:

|---- componentes ----|------------- valor --------------|
  n # + # 1 : 1 : -2: # urlescape(asunt) : urlescape(txt)
 [0] [1]      [2]                       [3]

- Escribir un mensaje,
--- nuevo,
----- para el buzón 1, del usuario 1, con plantilla -2 (la de S&E),
-------- cuyo contenido es el asunto asunt y el texto txt

En donde la componente [0] se conoce (n), la [1] es el caracter comodín más (+) que indica que es siguiente al último, y el resto son conocidos. Este ejemplo es el que se usa para enviar mensajes de Sugerencias y Errores al buzón del administrador.