Optimización de aplicaciones en Cliente/Servidor (1/6): Sockets TCP
- Publicado por [N4] nosuna.velneo
- Velneo
Si hemos desarrollado una aplicación y ésta se ejecuta en arquitectura de red local (utilizando el ejecutor Velneo vRunner) dicha aplicación podrá ser instalada en el Velneo vServer sin realizar por ello ningún tipo de modificación.
Sin embargo, hemos de tener en cuenta una serie de cuestiones que aumentarán el rendimiento de la aplicación (optimizarla) de cara a su instalación en el Velneo vServer, ya que los usuarios pueden estar conectados a la aplicación desde cualquier lugar a través de Internet.
En esta miniserie de recomendaciones para optimizar las aplicaciones en arquitectura Cliente/Servidor, veremos los apartados:
- Sockets TCP: retardos y optimización
- Optimizar el tamaño del mapa
- Elementos que retardan una aplicación
- Transacciones
- Optimizaciones para el rendimiento óptimo en ejecución
- Efectos negativos no deseados
1) Sockets TCP: retardos y optimización
La comunicación entre máquinas se establece mediante sockets. Una vez establecida dicha comunicación, la información viaja distribuida en paquetes con un tamaño de unos 4 kb (aproximadamente). Por ejemplo: un conjunto de datos de 400 kb viajarÃa distribuido en unos 100 paquetes.
Los sockets llevan, entre otros parámetros, las IP origen e IP destino, de modo que siempre alcanzan su destino: si un nodo falla en la comunicación otros nodos son interrogados para lograr el envÃo.
Una vez establecida la comunicación (socket), el tiempo que los paquetes de información emplean en viajar es el mismo independientemente de que ocupen 4 kb o menos. Es en el establecimiento del socket donde se ralentiza la comunicación, ya que una vez establecida el traspaso de información es rápido, tardando más o menos según el canal por el que viajen los datos (enviar 1k es casi igual a enviar 4k).
.
Por otro lado, en una red local el tiempo que un socket emplea en viajar es de unos 10 ms, mientras que a través de internet ronda los 250 ms, de ahà que las peticiones a través de internet sean mucho más lentas: se produce un retardo, y por lo tanto conviene generar el menor número de sockets posible: hemos de optimizar nuestras aplicaciones.
.
Existen diversos factores que aumentan el número de sockets generados, por ejemplo, las rejillas en las que se presentan datos capturados mediante punteros indirectos. Por ejemplo: si a través de internet presentamos una rejilla con datos de la misma tabla se generan dos sockets, uno para la petición y otro para el envÃo de datos, de modo que la rejilla se presentarÃa en menos de un segundo. Sin embargo, si presentamos registros capturados mediante un puntero indirecto generamos tantos sockets como registros se presenten, de modo que si encontramos 100 registros, la rejilla tardarÃa 25 segundos en presentarse.
Etiquetas: arquitectura c/s, c/s, optimizacion c/s, socket







Agosto 22, 2008 - 13:56 #
Buenos dÃas.
Interesante el artÃculo.
Una duda: en el último párrafo se reitera la referencia a la utilización de punteros indirectos como si fuera el uno distinto del otro; la primera referencia apunta a una “rejilla” y la segunda a “registros”. O yo no entiendo la direncia entre rejilla o registros, o algo se me está escapando.
Gracias.
Agosto 22, 2008 - 15:13 #
Hola gregorio,
Tratare de aclararte lo que dice en ese último párrafo. En primer lugar te indico lo que son Rejilla y Registro respectivamente:
Registro: Se trata de las fichas (Record) los propios datos, dados de alta en la base de datos.
Rejilla: Se trata del Grid en el que se muestran los registros. Es en este objeto donde se definen y decide que columnas se mostrarán de los registros que se listen en una rejilla concreta.
Pues bien, si en la rejilla solo añadimos columnas que muestren datos (campos) contenidos en la propia ficha, la respuesta será inmediata. Por el contrario si en la rejilla añadimos una columna, que muestre datos de un campo puntero indirecto (campo enlazado a otra tabla), la base de datos lanzara un socket para la lectura de cada uno de estos campos de cada uno de los registros listados en la rejilla.
Espero haberte aclarado un poco el tema.
Saludos.
Agosto 22, 2008 - 15:34 #
Total y absolutamente aclarado.
Gracias.
Agosto 24, 2008 - 10:58 #
Gracias por contestar Alejandro!
Agosto 25, 2008 - 01:46 #
Estimados, siempre sigo el foro de Velneo desde Chile y buscando herramientas similares me encontre con esta pagina (seccion española)
http://www.salesforce.com/es/platform/application-development/apex-programming-language/
Que diferencias hay entre esta herramienta y velneo.
Agosto 26, 2008 - 13:59 #
Una cuestión: cuando hablas de puntero indirecto te refieres a al enlace Tabla Datos Indirecta (real / virtual) o te refieres a cualquier enlace a otra tabla, por ejemplo a un maestro?
Muchas gracias.
Agosto 26, 2008 - 14:24 #
Hola Ivacker,
Te he respondido a este comentario que también has escrito en http://6x.velneo.es/448/herramientas-de-desarrollo-generalistas-vs-especializadas/#comment-2088
Un saludo
Agosto 26, 2008 - 14:31 #
Hola Rafa,
Estos consejos aplÃcalos simpre que desarrolles aplicaciones para uso en Internet.
En red local, la penalización es mucho menor porque apenas existe retardo en el establecimiento del socket.
Los punteros que generan sockets individuales son los punteros a tabla indirecta real y virtual, los singulares de plural por posición o Ãndice y el puntero hermano contiguo.
Los punteros a tabla maestra sà están optimizados y además utilizan la caché. Sin embargo, los punteros del párrafo anterior requieren resolución individual.
Gracias por tu pregunta
Septiembre 1, 2008 - 19:53 #
[...] Sockets TCP 2.- Optimizar el tamaño del mapa 3.- Elementos que retardan una aplicación [...]
Septiembre 3, 2008 - 14:59 #
[...] Sockets TCP 2.- Optimizar el tamaño del mapa 3.- Elementos que retardan una aplicación 4.- Transacciones 5.- [...]
Diciembre 23, 2008 - 17:09 #
[...] Optimización de aplicaciones en Cliente/Servidor (1/6): Sockets TCP [...]
Febrero 23, 2010 - 00:46 #
ola kiero q me ayuden a elegir un proyecto de socket no tengo ni idea de como usarlos..asi q espero y me ppuedan ayudar con algo sencillo va??
graxias !