ES2368366T3 - METHOD AND SYSTEM TO EXPAND THE CAPACITIES OF INTEGRATED DEVICES THROUGH NETWORK CUSTOMERS. - Google Patents

METHOD AND SYSTEM TO EXPAND THE CAPACITIES OF INTEGRATED DEVICES THROUGH NETWORK CUSTOMERS. Download PDF

Info

Publication number
ES2368366T3
ES2368366T3 ES08767554T ES08767554T ES2368366T3 ES 2368366 T3 ES2368366 T3 ES 2368366T3 ES 08767554 T ES08767554 T ES 08767554T ES 08767554 T ES08767554 T ES 08767554T ES 2368366 T3 ES2368366 T3 ES 2368366T3
Authority
ES
Spain
Prior art keywords
client
file
integrated device
files
content
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES08767554T
Other languages
Spanish (es)
Inventor
Ramon A. Vorne
Benjamin D. Saks
Ke Tang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
VORNE INDUSTRIES Inc
VORNE IND Inc
Original Assignee
VORNE INDUSTRIES Inc
VORNE IND Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by VORNE INDUSTRIES Inc, VORNE IND Inc filed Critical VORNE INDUSTRIES Inc
Application granted granted Critical
Publication of ES2368366T3 publication Critical patent/ES2368366T3/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/59Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/986Document structures and storage, e.g. HTML extensions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/106Display of layout of documents; Previewing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/04Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0736Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • G06F11/0742Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function in a data processing system embedded in a mobile device, e.g. mobile phones, handheld devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3013Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Medical Informatics (AREA)
  • Computational Linguistics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

A method and system for extending the capabilities of resource-constrained embedded devices (102) by leveraging the memory and processing resources of clients such as web browsers ("clients") installed on host computational devices ("host computers") (104). The embedded device (102) delegates computational tasks such as generation of content (e.g., user interfaces, reports, configuration files, etc.) to clients (104) and acts as a simple file and data server. The embedded device (102) provides static resource files to each client (104), including static template files and a client processing engine. The client processing engine: interprets processing instructions contained in static template files; utilizes managed communication channels to exchange dynamic data sets with the embedded device (102) in real-time; generates various forms of content by processing, transforming, manipulating, and aggregating dynamic data sets and static resource files; and reads and writes arbitrarily large files from and to the host computer (104), overcoming resource limitations of the embedded device (102).

Description

Método y sistema para ampliar las capacidades de dispositivos integrados a través de clientes de red. Method and system to expand the capabilities of integrated devices through network clients.

Antecedentes Background

La presente invención se refiere a dispositivos integrados conectados a redes que tienen clientes tales como navegadores web que se ejecutan en uno o más ordenadores anfitriones. The present invention relates to integrated devices connected to networks that have clients such as web browsers running on one or more host computers.

Los dispositivos integrados (es decir, dispositivos que combinan software y hardware electrónicos y posiblemente piezas mecánicas u otros componentes, y que están diseñados específicamente para ejecutar una función o tarea dedicada; por ejemplo, máquinas expendedoras, electrodomésticos, controladores de motores, impresoras) se diseñan frecuentemente para funcionar en combinación con ordenadores anfitriones con el fin de proporcionar características tales como interfaces de usuario mejoradas (que usan la pantalla del ordenador anfitrión), acceso remoto (a través de una red a la cual están conectados tanto el ordenador anfitrión como el dispositivo integrado), y modernizaciones de microprogramas (cargando una versión nueva del microprograma en el dispositivo integrado desde el ordenador anfitrión). Aprovechando las capacidades y los recursos del ordenador anfitrión, el dispositivo integrado puede superar las restricciones de recursos internos que son inherentes debido a las limitaciones de coste y/o tamaño del dispositivo integrado. Estas restricciones se manifiestan frecuentemente como limitaciones en la cantidad de memoria (por ejemplo, bytes de memoria de acceso aleatorio) y/o el poder de procesado (por ejemplo, velocidad del procesador, tamaño del bus de datos, conjunto de instrucciones, y periféricos incorporados) del dispositivo integrado. Integrated devices (i.e. devices that combine electronic software and hardware and possibly mechanical parts or other components, and that are specifically designed to perform a dedicated function or task; for example, vending machines, appliances, motor controllers, printers) are frequently designed to work in combination with host computers in order to provide features such as enhanced user interfaces (using the host computer screen), remote access (through a network to which both the host and the computer are connected integrated device), and microprogram modernizations (loading a new version of the microprogram into the integrated device from the host computer). Taking advantage of the capabilities and resources of the host computer, the integrated device can overcome internal resource constraints that are inherent due to the cost and / or size limitations of the integrated device. These restrictions are often manifested as limitations on the amount of memory (for example, bytes of random access memory) and / or processing power (for example, processor speed, data bus size, instruction set, and peripherals built-in) of the integrated device.

Centrándose más en la cuestión de las restricciones de memoria en los dispositivos integrados, resulta particularmente preocupante la memoria de acceso aleatorio (RAM). Típicamente, los microcontroladores de un solo chip, que con frecuencia se usan en dispositivos integrados, tienen una RAM limitada y se basan en otros tipos de memoria (por ejemplo, memoria flash) para almacenar programas y otros datos constantes. Por ejemplo, una plataforma de microprocesador actualmente popular para dispositivos integrados es la ARM7. Dos de los proveedores líderes de ARM7, Atmel Corporation y NXP Semiconductors, ofrecen ambos, dispositivos ARM7 con conectividad de red (en forma de controladores de acceso a los medios de Ethernet). La familia AT91SAM7X de Atmel proporciona una memoria flash que es cuatro veces la cantidad de memoria RAM (por ejemplo, el AT91SAM7XC512 de gama alta incluye una flash de 512 KB y una RAM de 128 KB). La diferencia es aún más pronunciada en el NXP LPC2368, que incluye 512 KB de flash y solamente 58 KB de RAM. Puesto que la RAM es frecuentemente un recurso muy limitado en dispositivos integrados, resulta especialmente deseable reducir el uso de RAM en dispositivos integrados. Focusing more on the issue of memory restrictions on integrated devices, random access memory (RAM) is of particular concern. Typically, single-chip microcontrollers, which are often used in integrated devices, have limited RAM and rely on other types of memory (for example, flash memory) to store programs and other constant data. For example, a currently popular microprocessor platform for integrated devices is the ARM7. Two of ARM7's leading providers, Atmel Corporation and NXP Semiconductors, offer both ARM7 devices with network connectivity (in the form of Ethernet media access controllers). The Atmel AT91SAM7X family provides a flash memory that is four times the amount of RAM (for example, the high-end AT91SAM7XC512 includes a 512 KB flash and 128 KB RAM). The difference is even more pronounced in the NXP LPC2368, which includes 512 KB of flash and only 58 KB of RAM. Since RAM is often a very limited resource in integrated devices, it is especially desirable to reduce the use of RAM in integrated devices.

Dos técnicas comunes para aprovechar las capacidades y los recursos de los ordenadores anfitriones son: i) instalar software personalizado en cada ordenador anfitrión que interaccionará con el dispositivo integrado, o ii) incorporar un servidor HTTP en el dispositivo integrado que genere contenido adecuado para un cliente HTTP (es decir, un navegador web) en el ordenador anfitrión. Cada método tiene sus puntos fuertes y sus puntos débiles. Two common techniques to take advantage of the capabilities and resources of host computers are: i) install custom software on each host computer that will interact with the integrated device, or ii) incorporate an HTTP server into the integrated device that generates content suitable for a client HTTP (that is, a web browser) on the host computer. Each method has its strengths and weaknesses.

Un punto fuerte del software personalizado es que permite que los dispositivos integrados, limitados en cuanto a recursos, aprovechen exhaustivamente las capacidades y los recursos del ordenador anfitrión, debido a la capacidad del software personalizado de acceder a y controlar muchos aspectos del ordenador anfitrión. A strong point of custom software is that it allows integrated devices, limited in terms of resources, to take full advantage of the capabilities and resources of the host computer, due to the ability of the custom software to access and control many aspects of the host computer.

Un punto débil del software personalizado es que típicamente necesita ser instalado y mantenido en cada ordenador anfitrión que accederá al dispositivo integrado. En la práctica, esto frecuentemente resulta farragoso, consume mucho tiempo, y es caro, especialmente en entornos comerciales en los que típicamente solo a los departamentos de IT se les permite instalar software. Cada versión nueva del software personalizado requiere actualizaciones o instalaciones nuevas, y con frecuencia surgen problemas de compatibilidad debido a interacciones entre el software personalizado y versiones diferentes de sistemas operativos del ordenador, combinaciones diferentes de otras aplicaciones de software personalizado instaladas en el ordenador anfitrión, y/o desadaptaciones entre versiones del software personalizado y versiones de los dispositivos integrados. A weak point of custom software is that it typically needs to be installed and maintained on each host computer that will access the integrated device. In practice, this is often cumbersome, time-consuming, and expensive, especially in commercial environments where typically only IT departments are allowed to install software. Each new version of the customized software requires new updates or installations, and compatibility issues often arise due to interactions between the customized software and different versions of computer operating systems, different combinations of other custom software applications installed on the host computer, and / or mismatches between versions of custom software and versions of integrated devices.

Un punto fuerte de incorporar un servidor HTTP en el dispositivo integrado es que proporciona un cliente que ocupa un “espacio cero”, lo cual significa que se puede usar un cliente HTTP convencional (por ejemplo, un navegador web) de un ordenador anfitrión para acceder al dispositivo integrado desde cualquier ordenador anfitrión que tenga instalado el cliente. Puesto que la gran mayoría de ordenadores personales tienen navegadores web pre-instalados, esto constituye una mejora principal con respecto al software personalizado. A strong point of incorporating an HTTP server in the integrated device is that it provides a client that occupies a "zero space", which means that a conventional HTTP client (for example, a web browser) of a host computer can be used to access to the integrated device from any host computer that has the client installed. Since the vast majority of personal computers have pre-installed web browsers, this constitutes a major improvement over custom software.

Un punto débil de la incorporación de un servidor HTTP en el dispositivo integrado es que las restricciones de recursos del dispositivo integrado, tales como las limitaciones antes mencionadas de memoria y poder de procesado, pueden tener un impacto importante en la experiencia del usuario en términos de i) calidad, tal como la facilidad de utilización de una interfaz de usuario o la sofisticación de un informe que pueda ser generado, ii) cantidad, tal como el tamaño de un informe que pueda ser generado o el tamaño de un archivo que pueda ser leído, iii) sensibilidad, tal como la rapidez con la que el dispositivo integrado puede generar contenido solicitado, y/o iv) escalabilidad, tal como el número de clientes a los que se puede prestar servicio simultáneamente. A weak point of incorporating an HTTP server into the integrated device is that the resource restrictions of the integrated device, such as the aforementioned limitations of memory and processing power, can have a significant impact on the user experience in terms of i) quality, such as the ease of use of a user interface or the sophistication of a report that can be generated, ii) quantity, such as the size of a report that can be generated or the size of a file that can be generated read, iii) sensitivity, such as how quickly the integrated device can generate requested content, and / or iv) scalability, such as the number of clients that can be serviced simultaneously.

Aunque existen tecnologías disponibles que proporcionan grados variables de procesado del lado del cliente (por ejemplo, el Reproductor Flash® de Adobe Systems Incorporated, OpenLaszlo™ de Laszlo Systems Incorporated, y el Entorno en Tiempo de Ejecución Java™ de Sun Microsystems Incorporated), estas tecnologías típicamente no están diseñadas u optimizadas de manera específica para trabajar con dispositivos integrados, y, por lo tanto, típicamente no tienen en cuenta los requisitos y limitaciones especiales de los dispositivos integrados de recursos restringidos. Como consecuencia, las tecnologías existentes padecen en general uno o más de los siguientes problemas: Although there are technologies available that provide varying degrees of client-side processing (for example, Adobe Systems Incorporated Flash® Player, Laszlo Systems Incorporated OpenLaszlo ™, and Sun Microsystems Incorporated Java ™ Runtime Environment), these are technologies are typically not specifically designed or optimized to work with integrated devices, and, therefore, typically do not take into account the special requirements and limitations of integrated restricted resource devices. As a consequence, existing technologies generally suffer from one or more of the following problems:

1. one.
No están diseñadas para minimizar explícitamente el uso de memoria (por ejemplo, RAM y/o flash) y/o el ancho de banda de procesado en el servidor (es decir, dispositivo integrado) y, por lo tanto, pueden no ejecutarse de manera eficaz en dispositivos integrados de recursos restringidos. They are not designed to explicitly minimize memory usage (for example, RAM and / or flash) and / or the processing bandwidth on the server (i.e., integrated device) and, therefore, may not run in a manner effective on integrated devices with restricted resources.

2. 2.
No proporcionan herramientas para leer, escribir, y/o manipular de manera arbitraria archivos grandes cuando se tienen en cuenta los recursos limitados de los dispositivos integrados. They do not provide tools to read, write, and / or arbitrarily manipulate large files when the limited resources of the integrated devices are taken into account.

3. 3.
No están diseñadas para actualizar dinámicamente contenido o lo hacen de manera ineficaz. They are not designed to dynamically update content or do so inefficiently.

4. Four.
No separan limpiamente el contenido estático (que puede ser almacenado en memoria caché por el cliente) del contenido dinámico. They do not cleanly separate static content (which can be cached by the client) from dynamic content.

5. 5.
No están diseñadas para un procesado general en el lado del cliente (por ejemplo, se centran en el procesado de la capa de presentación). They are not designed for general processing on the client side (for example, they focus on the presentation layer processing).

6. 6.
Requieren herramientas de desarrollo privativas (por ejemplo, disponibles solamente en una empresa en particular, y/o solamente para una plataforma en particular) limitando de este modo las opciones de desarrollo. They require proprietary development tools (for example, available only in a particular company, and / or only for a particular platform) thus limiting development options.

7. 7.
Requieren componentes del lado del servidor, lenguajes de programación y/o lenguajes de guión de instrucciones (scripting) que en general no están disponibles para los dispositivos integrados o que resultan adecuados de manera deficiente para su uso en dichos dispositivos. They require server-side components, programming languages and / or scripting languages that are generally not available for integrated devices or that are poorly suited for use in such devices.

8. 8.
Requieren la instalación de software adicional en el cliente (por ejemplo, módulos plug-in del navegador). They require the installation of additional software on the client (for example, browser plug-in modules).

9. 9.
No soportan una amplia gama de clientes (por ejemplo, una amplia gama de plataformas de navegador). They do not support a wide range of clients (for example, a wide range of browser platforms).

10. 10.
Soportan solamente un tipo único de contenido (por ejemplo, archivos SWF Flash®) o una gama limitada de contenido. They support only a single type of content (for example, SWF Flash® files) or a limited range of content.

11. eleven.
No proporcionan herramientas para acceder a recursos desde dominios externos. They do not provide tools to access resources from external domains.

Debe observarse que la lista anterior de problemas se proporciona a título ilustrativo, y no está destinada a servir como una lista exhaustiva de cada aspecto de las tecnologías existentes que las pueda hacer inapropiadas para dispositivos integrados. It should be noted that the above list of problems is provided by way of illustration, and is not intended to serve as an exhaustive list of every aspect of existing technologies that may make them inappropriate for integrated devices.

Por lo tanto, se requiere un método eficaz para que dispositivos integrados de recursos limitados interaccionen con ordenadores anfitriones, el cual pueda proporcionar idealmente uno o más de los siguientes puntos: Therefore, an efficient method is required for integrated devices with limited resources to interact with host computers, which can ideally provide one or more of the following points:

1. one.
Un cliente que ocupe un espacio cero y que no requiera la instalación de ningún software personalizado en el ordenador anfitrión. A client that occupies a zero space and does not require the installation of any custom software on the host computer.

2. 2.
Una reducción significativa en la cantidad de memoria y el poder de procesado que requiere el dispositivo integrado para producir contenido sofisticado, complejo, y de alta calidad, incluyendo contenido dinámico. A significant reduction in the amount of memory and processing power required by the integrated device to produce sophisticated, complex, and high quality content, including dynamic content.

3. 3.
Una capacidad de generar contenido que sea mucho más grande (potencialmente, órdenes de magnitud más grande) de lo que puede caber dentro de la memoria disponible del dispositivo integrado. An ability to generate content that is much larger (potentially, orders of magnitude larger) than can fit within the available memory of the integrated device.

4. Four.
Una capacidad de almacenar archivos arbitrariamente grandes en el ordenador anfitrión y/o en sistemas de archivos accesibles para el ordenador anfitrión. An ability to store arbitrarily large files on the host computer and / or on file systems accessible to the host computer.

5. 5.
Una capacidad de leer, procesar, y extraer información de archivos arbitrariamente grandes del ordenador anfitrión y/o de sistemas de archivos accesibles para el ordenador anfitrión. An ability to read, process, and extract information from arbitrarily large files from the host computer and / or from file systems accessible to the host computer.

6. 6.
Una solución que maximice la cantidad de contenido que puede almacenar en memoria caché el cliente. A solution that maximizes the amount of content that the client can cache.

7. 7.
Una solución generalizada y “genérica” que no esté limitada significativamente en el tipo de contenido que se puede generar o el tipo de procesado que se puede realizar en el cliente. A generalized and "generic" solution that is not significantly limited in the type of content that can be generated or the type of processing that can be performed on the client.

8. 8.
Una solución que no dependa de productos específicos de terceros, módulos plug-in de navegadores, herramientas de desarrollo, etcétera. A solution that does not depend on specific third-party products, browser plug-in modules, development tools, and so on.

9. 9.
Una solución que sea eficaz sobre una gama amplia de clientes y dispositivos integrados. A solution that is effective on a wide range of clients and integrated devices.

10. 10.
Una solución que se pueda adaptar de manera sencilla y flexible a los requisitos de la aplicación específica y a los recursos del dispositivo integrado específico. A solution that can be adapted in a simple and flexible way to the requirements of the specific application and the resources of the specific integrated device.

11. eleven.
Una capacidad de que el cliente acumule de manera eficaz datos de múltiples dispositivos integrados al mismo tiempo que planteando unos requisitos mínimos de memoria y procesado sobre los dispositivos integrados. An ability for the client to effectively accumulate data from multiple integrated devices at the same time as raising minimum memory and processing requirements on the integrated devices.

12. 12.
Una experiencia global del usuario en general mejorada cuando se interacciona con el dispositivo integrado a través del ordenador anfitrión. An overall overall user experience enhanced when interacting with the integrated device through the host computer.
Sumario Summary

En la presente memoria se da a conocer un MÉTODO Y SISTEMA PARA AMPLIAR LAS CAPACIDADES DE DISPOSITIVOS INTEGRADOS, A TRAVÉS DE CLIENTES DE RED, que aprovecha los recursos de memoria y procesado de clientes, tales como navegadores (“clientes”) web, que se ejecutan en uno o más ordenadores anfitriones. In this report, a METHOD AND SYSTEM TO EXPAND THE CAPACITIES OF INTEGRATED DEVICES, THROUGH NETWORK CUSTOMERS, which takes advantage of the memory and processing resources of clients, such as web browsers (“clients”), is disclosed. They run on one or more host computers.

El dispositivo integrado de recursos limitados, conectado en red (“dispositivo integrado”) actúa como un simple servidor de archivos y datos para clientes, y estos clientes asumen la responsabilidad de la generación de contenido y otras tareas computacionales. Puesto que los clientes que se ejecutan en ordenadores anfitriones en general tienen acceso a una memoria y un poder de procesado mayores, en órdenes de magnitud, que los dispositivos integrados típicos, en general son capaces de generar un contenido bastante más enriquecido y realizar tareas computacionales bastante más sofisticadas que los propios dispositivos integrados. The integrated device with limited resources, connected in a network (“integrated device”) acts as a simple file and data server for clients, and these clients assume responsibility for the generation of content and other computational tasks. Since clients running on host computers in general have access to a larger memory and processing power, in orders of magnitude, than typical integrated devices, in general they are able to generate much more enriched content and perform computational tasks much more sophisticated than the integrated devices themselves.

Además, múltiples clientes pueden procesar y manipular simultáneamente archivos y datos servidos desde un único dispositivo integrado. El resultado final es un sistema altamente escalable que maximiza el número de clientes que puede soportar simultáneamente un dispositivo integrado, y que mejora significativamente la calidad (y cantidad) de contenido que se puede generar y la sofisticación de las tareas computacionales que se pueden realizar. In addition, multiple clients can simultaneously process and manipulate files and data served from a single integrated device. The end result is a highly scalable system that maximizes the number of clients that an integrated device can support simultaneously, and that significantly improves the quality (and quantity) of content that can be generated and the sophistication of the computational tasks that can be performed.

Frecuentemente, puede existir una necesidad de almacenar o abrir este contenido generado, en el ordenador anfitrión, pero puede que el cliente no disponga de los medios para lograr esto, típicamente debido a restricciones de seguridad (por ejemplo, las restricciones impuestas sobre navegadores web usados comúnmente, para escribir archivos en el ordenador anfitrión y/o en sistemas de archivos accesibles para el ordenador anfitrión). Varias formas de realización de la invención incluyen también un método y un sistema para leer y escribir archivos arbitrariamente grandes desde y en el ordenador anfitrión y/o sistemas de archivos accesibles para el ordenador anfitrión (a lo cual se hace referencia como “rebote de archivos”) al mismo tiempo que superando las limitaciones de memoria y procesado del dispositivo integrado, así como superando las limitaciones impuestas por restricciones de seguridad del cliente. Frequently, there may be a need to store or open this generated content, on the host computer, but the client may not have the means to achieve this, typically due to security restrictions (for example, restrictions imposed on used web browsers commonly, to write files to the host computer and / or to file systems accessible to the host computer). Several embodiments of the invention also include a method and system for reading and writing arbitrarily large files from and on the host computer and / or file systems accessible to the host computer (referred to as "file bouncing ”) While overcoming the limitations of memory and processing of the integrated device, as well as overcoming the limitations imposed by customer security restrictions.

El sistema, según varias formas de realización, comprende cuatro elementos principales: un motor de procesado del cliente, archivos de plantillas estáticas, conjuntos de datos dinámicos, y canales de comunicación gestionados. Estos elementos se describen de forma más detallada posteriormente. The system, according to several embodiments, comprises four main elements: a client processing engine, static template files, dynamic data sets, and managed communication channels. These elements are described in more detail later.

El motor de procesado del cliente es responsable de coordinar trabajo realizado en el cliente en nombre del dispositivo integrado. Desde la perspectiva del dispositivo integrado, el motor de procesado del cliente es simplemente un recurso estático (o una colección de recursos estáticos) almacenado en el dispositivo integrado y transmitido al cliente bajo demanda. The client's processing engine is responsible for coordinating work done on the client on behalf of the integrated device. From the perspective of the integrated device, the client's processing engine is simply a static resource (or a collection of static resources) stored in the integrated device and transmitted to the client on demand.

No obstante, desde la perspectiva del cliente, una vez que el motor de procesado del cliente se ha cargado en el cliente, el mismo es un programa ejecutable (por ejemplo, un programa JavaScript) responsable de realizar el procesado del lado del cliente. El motor de procesado del cliente interpreta archivos de plantillas estáticas y lleva a cabo las instrucciones especificadas en los mismos. El motor de procesado del cliente está destinado y diseñado explícitamente para minimizar recursos y procesado requeridos dentro del dispositivo integrado y para transferir trabajo desde el dispositivo integrado al cliente. El motor de procesado del cliente en esencia se convierte en un “sistema operativo” que se ejecuta dentro del cliente, y eleva al cliente de ser un medio de entrega de contenido a ser un “nodo” de procesado en un sistema informático distribuido. However, from the client's perspective, once the client's processing engine has been loaded into the client, it is an executable program (for example, a JavaScript program) responsible for performing client-side processing. The client's processing engine interprets static template files and carries out the instructions specified therein. The client's processing engine is intended and explicitly designed to minimize resources and processing required within the integrated device and to transfer work from the integrated device to the client. The client's processing engine essentially becomes an "operating system" that runs within the client, and elevates the client from being a means of delivering content to being a "node" of processing in a distributed computer system.

Los archivos de plantillas estáticas son responsables de proporcionar información necesaria para realizar tareas de procesado específicas (por ejemplo, generar un informe, reproducir una página web, etcétera). Desde la perspectiva del dispositivo integrado, un archivo de plantillas estáticas es simplemente un recurso estático transmitido al cliente bajo demanda. Desde la perspectiva del cliente, un archivo de plantillas estáticas contiene un conjunto de instrucciones de procesado para el motor de procesado del cliente. En esencia, el dispositivo integrado delega tareas de procesado contenidas por archivos de plantillas estáticas al cliente, con el fin de minimizar recursos y procesado requeridos dentro del dispositivo integrado y con el fin de transferir trabajo desde el dispositivo integrado al cliente. Static template files are responsible for providing information necessary to perform specific processing tasks (for example, generate a report, reproduce a web page, etc.). From the perspective of the integrated device, a static template file is simply a static resource transmitted to the client on demand. From the customer's perspective, a static template file contains a set of processing instructions for the client's processing engine. In essence, the integrated device delegates processing tasks contained by static template files to the client, in order to minimize resources and processing required within the integrated device and in order to transfer work from the integrated device to the client.

Los conjuntos de datos dinámicos son colecciones de datos que se intercambian entre el dispositivo integrado y el cliente. A diferencia de los archivos de plantillas estáticas, que son recursos estáticos, cada conjunto de datos dinámicos se genera dinámicamente por medio del dispositivo integrado (o alternativamente por medio del cliente). La Notación de Objetos de JavaScript (JSON), descrita mediante la RFC 4627, resulta particularmente útil como formato de conjunto de datos dinámicos ya que resulta muy sencilla de analizar sintácticamente y de generar, y se diseñó específicamente para proporcionar una representación de datos compacta. Los conjuntos de datos dinámicos, en esencia, encapsulan el aspecto “dinámico” del contenido con una representación compacta de datos, y, conjuntamente con una variedad de técnicas que minimizan los recursos y el procesado requeridos dentro del dispositivo integrado, transfieren además trabajo desde el dispositivo integrado al cliente. Dynamic data sets are collections of data that are exchanged between the integrated device and the client. Unlike static template files, which are static resources, each set of dynamic data is generated dynamically through the integrated device (or alternatively through the client). The JavaScript Object Notation (JSON), described by RFC 4627, is particularly useful as a dynamic data set format as it is very simple to parse and generate, and was specifically designed to provide a compact data representation. In essence, dynamic data sets encapsulate the “dynamic” aspect of content with a compact representation of data, and, together with a variety of techniques that minimize the resources and processing required within the integrated device, also transfer work from the device integrated to the client.

Los canales de comunicación gestionados son enlaces de comunicación bidireccionales entre el motor de procesado del cliente y un dispositivo integrado. El término “gestionado” se refiere al hecho de que los canales de comunicación son controlados por el motor de procesado del cliente, no directamente por el cliente como se produce tradicionalmente. El motor de procesado del cliente puede usar canales de comunicación gestionados, para mantener la comunicación en curso con uno o más dispositivos integrados de una manera ininterrumpida que resulta invisible para el usuario. Los canales de comunicación gestionados se pueden implementar con una variedad de técnicas, tales como la XHR (XMLHttpRequest) y la manipulación de documentos. Con la manipulación de documentos, el motor de procesado del cliente modifica contenido existente (por ejemplo, HTML, XHTML, etcétera), lo cual provoca que el cliente realice una solicitud de comunicación al dispositivo integrado. La manipulación de documentos se logra a través de técnicas tales como el método document.write () de JavaScript, modificaciones en el Modelo de Objeto de Documento, y modificaciones en la propiedad innerHTML del documento. The managed communication channels are two-way communication links between the client's processing engine and an integrated device. The term "managed" refers to the fact that the communication channels are controlled by the client's processing engine, not directly by the client as is traditionally produced. The client's processing engine can use managed communication channels to maintain ongoing communication with one or more integrated devices in an uninterrupted manner that is invisible to the user. Managed communication channels can be implemented with a variety of techniques, such as XHR (XMLHttpRequest) and document manipulation. With the manipulation of documents, the client's processing engine modifies existing content (for example, HTML, XHTML, etc.), which causes the client to make a communication request to the integrated device. Document manipulation is achieved through techniques such as the document.write () JavaScript method, modifications to the Document Object Model, and modifications to the innerHTML property of the document.

El motor de procesado del cliente analiza sintácticamente cada archivo de plantillas estáticas y se comunica con el dispositivo integrado usando uno o más canales de comunicación gestionados, para solicitar, recibir, y/o presentar conjuntos de datos dinámicos, que son usados por el motor de procesado del cliente conjuntamente con archivos de plantillas estáticas para generar, procesar, transformar, manipular, y/o acumular contenido así como realizar otras tareas computacionales. The client's processing engine parses each static template file syntactically and communicates with the integrated device using one or more managed communication channels, to request, receive, and / or present dynamic data sets, which are used by the engine. client processing together with static template files to generate, process, transform, manipulate, and / or accumulate content as well as perform other computational tasks.

El rebote de archivos se puede lograr usando, por ejemplo, el protocolo HTTP, para enviar archivos al dispositivo integrado en una serie de uno o más paquetes que el dispositivo integrado simplemente hace “rebotar” de vuelta al cliente. El dispositivo integrado únicamente conserva un paquete dado durante el tiempo que se tarda en hacer rebotar ese paquete hacia el cliente, después de lo cual el paquete se puede descartar. Los paquetes pueden tener un tamaño arbitrario, y el dispositivo integrado únicamente necesita reservar recursos de memoria suficientes para almacenar en memoria intermedia un único paquete cada vez (es decir, el dispositivo integrado no necesita almacenar el archivo completo o ni siquiera una parte significativa del mismo). File bouncing can be achieved using, for example, the HTTP protocol, to send files to the integrated device in a series of one or more packets that the integrated device simply "bounces" back to the client. The integrated device only retains a given package for the time it takes to bounce that package towards the customer, after which the package can be discarded. Packages may have an arbitrary size, and the integrated device only needs to reserve enough memory resources to buffer only one package at a time (that is, the integrated device does not need to store the entire file or even a significant part of it) ).

Los archivos que se leen desde el ordenador anfitrión y/o desde sistemas de archivos accesibles para el ordenador anfitrión (por ejemplo, usando la carga de archivos basada en formularios HTML) haciendo uso del rebote de archivos están totalmente disponibles para el motor de procesado del cliente, el cual puede manipular, transformar, y/o acceder de manera selectiva a su contenido como un proxy para el dispositivo integrado. Files that are read from the host computer and / or from file systems accessible to the host computer (for example, using file loading based on HTML forms) making use of file bouncing are fully available to the processing engine of the client, which can manipulate, transform, and / or selectively access its content as a proxy for the integrated device.

Los archivos que se escriben en el ordenador anfitrión y/o en sistemas de archivos accesibles para el ordenador anfitrión (por ejemplo, usando el encabezamiento Disposición de Contenido de HTTP) haciendo uso del rebote de archivos se generan típicamente por medio del motor de procesado del cliente a partir de archivos de plantillas estáticas y/o conjuntos de datos dinámicos. Los conjuntos de datos dinámicos se pueden enviar por flujo continuo desde el dispositivo integrado al cliente a medida que se producen los datos subyacentes, haciendo que, desde la perspectiva del dispositivo integrado, esto resulte transitorio. Mientras se generan archivos, el motor de procesado del cliente puede manipular y/o transformar contenido en nombre del dispositivo integrado. Files that are written to the host computer and / or to file systems accessible to the host computer (for example, using the HTTP Content Layout heading) making use of file bouncing are typically generated by means of the processing engine of the client from static template files and / or dynamic data sets. Dynamic data sets can be sent by continuous flow from the integrated device to the client as the underlying data is produced, making this, from the perspective of the integrated device, temporary. While generating files, the client's processing engine can manipulate and / or transform content on behalf of the integrated device.

El rebote de archivos puede reducir drásticamente los recursos requeridos por un dispositivo integrado para leer, acceder a, generar, y escribir archivos arbitrariamente grandes desde y en el ordenador anfitrión. Bouncing files can dramatically reduce the resources required by an integrated device to read, access, generate, and write arbitrarily large files from and on the host computer.

Estos y otros aspectos de la invención se pondrán más claramente de manifiesto a partir de la siguiente descripción y los dibujos adjuntos. These and other aspects of the invention will become more clearly apparent from the following description and the accompanying drawings.

Breve descripción de los dibujos Brief description of the drawings

La invención se describe haciendo referencia a varias formas de realización que se ilustran en los dibujos y siguiendo la descripción detallada proporcionada a continuación. The invention is described by referring to various embodiments illustrated in the drawings and following the detailed description provided below.

La FIG. 1 es un diagrama de bloques que muestra una vista de nivel superior de dispositivos integrados conectados en red y ordenadores anfitriones con clientes. FIG. 1 is a block diagram showing a top-level view of integrated devices connected to the network and host computers with clients.

La FIG. 2 es un diagrama de bloques que muestra relaciones entre elementos principales del sistema. FIG. 2 is a block diagram showing relationships between main elements of the system.

La FIG. 3 es un diagrama de bloques que muestra subcomponentes del motor de procesado del cliente. FIG. 3 is a block diagram showing subcomponents of the client's processing engine.

La FIG. 4 es un ejemplo de un conjunto de datos dinámicos que contiene datos de tiempo real generados por un dispositivo integrado. FIG. 4 is an example of a dynamic data set that contains real-time data generated by an integrated device.

La FIG. 5 es un ejemplo de un archivo de plantillas estáticas abstractas. FIG. 5 is an example of an abstract static template file.

La FIG. 6 es un ejemplo de contenido generado por el motor de procesado del cliente a partir del archivo de plantillas estáticas abstractas de la FIG. 5 y el conjunto de datos dinámicos de la FIG. 4. FIG. 6 is an example of content generated by the client's processing engine from the abstract static template file of FIG. 5 and the dynamic data set of FIG. Four.

La FIG. 7 muestra el contenido de la FIG. 6 según es reproducido por un navegador web. FIG. 7 shows the content of FIG. 6 as reproduced by a web browser.

La FIG. 8 es un ejemplo de un archivo de plantillas estáticas literales para generar un documento de Formato de Texto Enriquecido. FIG. 8 is an example of a file of static static templates for generating a Rich Text Format document.

La FIG. 9 es el contenido generado por el motor de procesado del cliente a partir del archivo de plantillas estáticas literales de la FIG. 8 y el conjunto de datos dinámicos de la FIG. 4. FIG. 9 is the content generated by the client's processing engine from the file of static static templates of FIG. 8 and the dynamic data set of FIG. Four.

La FIG. 10 muestra el contenido de la FIG. 9 según es reproducido por un procesador de texto. FIG. 10 shows the content of FIG. 9 as reproduced by a word processor.

La FIG. 11 es un diagrama de secuencias que muestra etapas para generar contenido con elementos tanto estáticos como dinámicos. FIG. 11 is a sequence diagram that shows steps to generate content with both static and dynamic elements.

La FIG. 12 es un diagrama de secuencias que muestra etapas para usar el rebote de archivos con el fin de almacenar en el ordenador anfitrión contenido generado en el cliente. FIG. 12 is a sequence diagram showing steps to use file bounce to store content generated on the client on the host computer.

La FIG. 13 es un diagrama de secuencias que muestra etapas para usar el rebote de archivos con el fin de cargar en el cliente un archivo accesible para el ordenador anfitrión (pero no directamente accesible para el cliente). FIG. 13 is a sequence diagram showing steps to use file bouncing in order to load a file accessible to the host computer (but not directly accessible to the client).

Descripción detallada Detailed description

Aunque la presente invención puede materializarse en formas de realización de muchas maneras diferentes, en los dibujos se muestra, y en la presente memoria se describirá detalladamente, una forma de realización preferida de la invención, entendiendo que la presente exposición debe considerarse como una ejemplificación de los fundamentos de la invención y no pretende limitar el amplio aspecto de la invención a formas de realización ilustradas. Although the present invention can be embodied in embodiments in many different ways, the drawings show, and herein, a preferred embodiment of the invention will be described in detail, with the understanding that the present disclosure should be considered as an exemplification of the foundations of the invention and is not intended to limit the broad aspect of the invention to illustrated embodiments.

Varias formas de realización de la invención proporcionan un método y un sistema para permitir que dispositivos integrados de recursos limitados, conectados en red (a los que, a continuación, se hará referencia simplemente como “dispositivos integrados”) aprovechen los recursos de memoria y procesado de clientes, tales como navegadores web (a los que, en lo sucesivo, se hará referencia como “clientes”), que están instalados en dispositivos computacionales anfitriones, tales como ordenadores personales o clientes ligeros (a los que, en lo sucesivo, se hará referencia como “ordenadores anfitriones”), de tal manera que se superen restricciones de recursos internos de los dispositivos integrados. En la FIG. 1 puede verse una vista de nivel superior, que muestra una pluralidad de dispositivos integrados 102, y una pluralidad de clientes 104 en ordenadores anfitriones 106, conectados a una red de comunicaciones compartida (es decir, común) 108. Several embodiments of the invention provide a method and system to allow integrated devices of limited, networked resources (referred to below as "integrated devices") to take advantage of memory and processing resources. of clients, such as web browsers (referred to as "customers"), which are installed on host computing devices, such as personal computers or thin clients (which are referred to as will refer to as "host computers"), in such a way that internal resource restrictions of the integrated devices are overcome. In FIG. 1 a top level view can be seen, showing a plurality of integrated devices 102, and a plurality of clients 104 on host computers 106, connected to a shared (ie, common) communication network 108.

La capacidad de usar un navegador web convencional como cliente 104 para interaccionar con el dispositivo integrado 102 hace que la solución ocupe un “espacio cero” desde la perspectiva del ordenador anfitrión 106 – no es necesario instalar ningún software personalizado puesto que la gran mayoría de ordenadores anfitriones tienen dichos clientes preinstalados. The ability to use a conventional web browser as a client 104 to interact with the integrated device 102 causes the solution to occupy a "zero space" from the perspective of the host computer 106 - it is not necessary to install any custom software since the vast majority of computers hosts have such customers preinstalled.

Para minimizar el procesado realizado por el dispositivo integrado 102, el dispositivo integrado adopta la función de un simple servidor de archivos y datos que entrega dos tipos básicos de información, tal como puede observarse en la FIG. 2: To minimize the processing performed by the integrated device 102, the integrated device assumes the function of a simple file and data server that delivers two basic types of information, as can be seen in FIG. 2:

Archivos de recursos estáticos 202 tales como JavaScript y XML 202 static resource files such as JavaScript and XML

Conjuntos de datos dinámicos 204 tales como datos de tiempo real, en un formato compacto tal como JSON (Notación de Objetos de JavaScript) Dynamic data sets 204 such as real-time data, in a compact format such as JSON (JavaScript Object Notation)

Para ser considerado como “archivo” a efectos de esta descripción, no es necesario que un recurso estático esté almacenado en un sistema de archivos tradicional. Por ejemplo, un recurso estático se podría almacenar como un objeto de algún tipo (por ejemplo, una secuencia de bytes) en memoria flash. To be considered as a “file” for the purposes of this description, it is not necessary for a static resource to be stored in a traditional file system. For example, a static resource could be stored as an object of some kind (for example, a sequence of bytes) in flash memory.

En el caso de archivos de recursos estáticos 202, el dispositivo integrado 102 simplemente transmite estos archivos al cliente 104 cada vez que los mismos son solicitados. No realiza ningún procesado significativo sobre los archivos más allá de la transmisión. Los archivos de recursos estáticos se pueden almacenar en memoria flash del dispositivo integrado, y se pueden transmitir como una secuencia de “paquetes” pequeños hacia el cliente, minimizando de este modo el uso de recursos de la RAM. In the case of static resource files 202, the integrated device 102 simply transmits these files to the client 104 each time they are requested. It does not perform any significant processing on the files beyond the transmission. Static resource files can be stored in flash memory of the integrated device, and can be transmitted as a sequence of small "packets" to the client, thereby minimizing the use of RAM resources.

En el caso de conjuntos de datos dinámicos 204, el dispositivo integrado 102 transmite datos en un formato sencillo y compacto, tal como el formato JSON mostrado en la FIG. 4. In the case of dynamic data sets 204, the integrated device 102 transmits data in a simple and compact format, such as the JSON format shown in FIG. Four.

Haciendo referencia a la FIG. 2, el procesado de conjuntos de datos dinámicos 204 por parte del dispositivo integrado 102 se puede minimizar representando cada elemento de datos de una manera que sea muy parecida a su representación interna nativa en el dispositivo integrado. Por ejemplo, en el conjunto de datos dinámicos de la FIG. 4, el elemento de datos fecha/hora 404 tiene un valor de 202809600, lo cual representa el número de segundos desde el cambio de siglo (segundos desde 1/1/2000 12:00 AM), que, en este ejemplo, es también la representación interna de la fecha/hora del dispositivo integrado. El motor de procesado del cliente puede ser capaz de dar formato a este elemento de datos de muchas maneras diferentes, tales como 5/6/2006, 2006-06-05T08:00:00, ó 5 de junio de 2006 8:00 AM. Por ejemplo, el motor de procesado de cliente da formato a la fecha/hora 404 como 5/6/2006 8:00 AM dentro del subtítulo 704 (FIG. 7) y el subtítulo 1002 (FIG. 10). Referring to FIG. 2, the processing of dynamic data sets 204 by the integrated device 102 can be minimized by representing each data element in a manner that is very similar to its native internal representation in the integrated device. For example, in the dynamic data set of FIG. 4, the data element date / time 404 has a value of 202809600, which represents the number of seconds since the turn of the century (seconds since 1/1/2000 12:00 AM), which, in this example, is also the internal representation of the date / time of the integrated device. The client's processing engine may be able to format this data element in many different ways, such as 5/6/2006, 2006-06-05T08: 00: 00, or June 5, 2006 8:00 AM . For example, the client processing engine formats the date / time 404 as 5/6/2006 8:00 AM into subtitle 704 (FIG. 7) and subtitle 1002 (FIG. 10).

Haciendo referencia a la FIG. 2, el dispositivo integrado 102 se centra en servir archivos y datos sin procesar en lugar de centrarse en la generación de contenido final (por ejemplo, páginas web XHTML, informes de Formato de Texto Enriquecido, etcétera). El motor de procesado del cliente 206 es responsable de transformar los archivos de plantillas estáticas 208 y los conjuntos de datos dinámicos 204 que recibe desde el dispositivo integrado para producir el contenido generado 212. Esta división de responsabilidades se aprovecha del hecho de que los ordenadores anfitriones 106, y los clientes 104 que se ejecutan en ellos, típicamente tienen unos recursos de memoria y de procesado bastante mayores que los dispositivos integrados, con frecuencia multiplicados por órdenes de magnitud. Referring to FIG. 2, the integrated device 102 focuses on serving raw files and data instead of focusing on the generation of final content (for example, XHTML web pages, Rich Text Format reports, etc.). The client processing engine 206 is responsible for transforming the static template files 208 and the dynamic data sets 204 it receives from the integrated device to produce the generated content 212. This division of responsibilities takes advantage of the fact that the host computers 106, and the clients 104 running there, typically have memory and processing resources much larger than the integrated devices, often multiplied by orders of magnitude.

De este modo, adoptando la función de un servidor básico de archivos y datos tal como se ha descrito anteriormente, el dispositivo integrado puede prestar servicio a muchos clientes con pocos recursos. Adicionalmente, múltiples clientes pueden procesar y manipular simultáneamente archivos y datos servidos desde un único dispositivo integrado. El resultado final es un sistema altamente escalable que maximiza el número de clientes que puede soportar simultáneamente un dispositivo integrado, y que mejora significativamente la calidad de contenido que se puede generar. Thus, by adopting the function of a basic file and data server as described above, the integrated device can serve many clients with few resources. Additionally, multiple clients can simultaneously process and manipulate files and data served from a single integrated device. The end result is a highly scalable system that maximizes the number of clients that an integrated device can simultaneously support, and significantly improves the quality of content that can be generated.

Es importante enfatizar que el dispositivo integrado 102 no es responsable de la generación de contenido. No genera interfaces de usuario, interfaces de diagnóstico, pantallas de información, informes, archivos de configuración, etcétera. Esa responsabilidad queda delega al cliente 104 a través del motor de procesado del cliente It is important to emphasize that the integrated device 102 is not responsible for content generation. It does not generate user interfaces, diagnostic interfaces, information screens, reports, configuration files, etc. That responsibility is delegated to the client 104 through the client's processing engine

206. Los archivos y datos servidos por el dispositivo integrado son procesados, transformados, manipulados, y combinados por el motor de procesado del cliente para generar varias formas de contenido 212. Y, tal como se ilustra en la FIG. 2, el motor de procesado del cliente 206 puede ser almacenado en memoria caché por el cliente 104, de modo que únicamente es necesario cargarlo desde el dispositivo integrado una vez por cliente. 206. The files and data served by the integrated device are processed, transformed, manipulated, and combined by the client's processing engine to generate various forms of content 212. And, as illustrated in FIG. 2, the client processing engine 206 can be cached by the client 104, so that it is only necessary to load it from the integrated device once per client.

Es también importante enfatizar que, aunque esta descripción se centra en la generación de contenido del lado del cliente, al cliente también se le pueden delegar otras tareas de procesado (por ejemplo, procesado intensivo (crunching) de números, análisis de datos, y validación de datos). It is also important to emphasize that, although this description focuses on the generation of client-side content, the client can also be delegated other processing tasks (for example, intensive number crunching, data analysis, and validation). of data).

Existen cuatro elementos principales que interaccionan y que son compartidos entre el dispositivo integrado 102 y el cliente 104: archivos de plantillas estáticas 208, conjuntos de datos dinámicos 204, motor de procesado del cliente 206, y canales de comunicación gestionados 210. There are four main elements that interact and are shared between the integrated device 102 and the client 104: static template files 208, dynamic data sets 204, client processing engine 206, and managed communication channels 210.

Archivos de plantillas estáticas Static Template Files

El primer elemento es el archivo de plantillas estáticas 208. Cada archivo de plantillas estáticas se almacena en el dispositivo integrado 102 (por ejemplo, en memoria flash) y se transfiere al cliente 104 según sea necesario. Puesto que cada archivo de plantillas estáticas es un archivo de recursos estáticos, el dispositivo integrado simplemente lo lee de su memoria y lo transmite al cliente. No es necesario ningún procesado adicional significativo en el dispositivo integrado. Típicamente, habrá una pluralidad de archivos de plantillas estáticas almacenados en el dispositivo integrado. The first element is the static template file 208. Each static template file is stored in the integrated device 102 (for example, in flash memory) and transferred to the client 104 as necessary. Since each static template file is a static resource file, the integrated device simply reads it from its memory and transmits it to the client. No significant additional processing is necessary in the integrated device. Typically, there will be a plurality of static template files stored in the integrated device.

Desde la perspectiva del cliente 104, un archivo de plantillas estáticas 208 proporciona un conjunto de instrucciones de procesado. Por ejemplo, un archivo de plantillas estáticas puede contener instrucciones que se pueden usar para generar una página web, o un informe, o puede contener instrucciones computacionales generales. Los archivos de plantillas estáticas se escriben generalmente de una manera sencilla y compacta que pueda ser analizada sintácticamente de forma fácil para generar contenido o realizar otro procesado. El XML es un formato lógico para archivos de plantillas estáticas, ya que los documentos XML pueden resultar tan sencillos o complejos como se necesite para una aplicación particular, y el XML es analizado sintácticamente de manera fácil por clientes tales como navegadores web. From the perspective of the client 104, a static template file 208 provides a set of processing instructions. For example, a static template file may contain instructions that can be used to generate a web page, or a report, or it may contain general computational instructions. Static template files are usually written in a simple and compact way that can be easily analyzed syntactically to generate content or perform other processing. XML is a logical format for static template files, since XML documents can be as simple or complex as needed for a particular application, and XML is easily parsed by clients such as web browsers.

La FIG. 5 muestra un ejemplo de un archivo de plantillas estáticas que se podría usar para generar una página web, la FIG. 6 muestra contenido XHTML correspondiente generado por el motor de procesado del cliente, y la FIG. 7 muestra la página web generada, tal como aparece en un navegador web. De modo similar, la FIG. 8 muestra un ejemplo de un archivo de plantillas estáticas usado específicamente para generar un informe de Formato de Texto Enriquecido, la FIG. 9 muestra contenido correspondiente de Formato de Texto Enriquecido generado por el motor de procesado del cliente, y la FIG. 10 muestra el informe generado tal como aparece en un procesador de texto. En ambos casos, la fuente de datos dinámicos es el conjunto de datos dinámicos de la FIG. 4. FIG. 5 shows an example of a static template file that could be used to generate a web page, FIG. 6 shows corresponding XHTML content generated by the client's processing engine, and FIG. 7 shows the generated web page, as it appears in a web browser. Similarly, FIG. 8 shows an example of a static template file used specifically to generate a Rich Text Format report, FIG. 9 shows corresponding content of Rich Text Format generated by the client's processing engine, and FIG. 10 shows the generated report as it appears in a word processor. In both cases, the dynamic data source is the dynamic data set of FIG. Four.

Los archivos de plantillas estáticas pueden proporcionar instrucciones de procesado que son abstractas (es decir, que describen el resultado final deseado sin proporcionar instrucciones explícitas sobre cómo lograrlo) y/o literales (es decir, que describen explícitamente cómo lograr el resultado final deseado). Static template files can provide processing instructions that are abstract (that is, that describe the desired end result without providing explicit instructions on how to achieve it) and / or literal (that is, that explicitly describe how to achieve the desired end result).

El archivo de plantillas estáticas mostrado en la FIG. 5 contiene instrucciones abstractas que se pueden usar para generar la página web mostrada en la FIG. 7. Algunos de los elementos y atributos clave son los siguientes: The static template file shown in FIG. 5 contains abstract instructions that can be used to generate the web page shown in FIG. 7. Some of the key elements and attributes are the following:

El atributo de etiqueta 504 (FIG. 5) se usa para proporcionar etiquetas de texto para muchas partes de la página web mostrada en la FIG. 7, incluyendo el título 702, el subtítulo 704, el recuadro de variables 706 (cada recuadro de variables agrupa una colección de pares relacionados de nombre/valor), y la variable 708 (cada variable representa un único par nombre/valor). Tag attribute 504 (FIG. 5) is used to provide text labels for many parts of the web page shown in FIG. 7, including title 702, subtitle 704, variable box 706 (each variable box groups a collection of related name / value pairs), and variable 708 (each variable represents a single name / value pair).

Haciendo referencia de nuevo a la FIG. 5, el atributo de índice 502 identifica un elemento de datos de un conjunto de datos dinámicos asociado a insertar en la página web (por ejemplo, como la parte de valor de un par de nombre/valor). Este atributo es solamente necesario si el orden en el que se usan los elementos de datos del conjunto de datos dinámicos dentro del archivo de plantillas estáticas es diferente de su orden en el conjunto de datos dinámicos. Por ejemplo, el atributo de índice 502 en el elemento de título, que tiene un valor de índice de “0”, identifica y estaría asociado al elemento de datos “Línea de Ensamblaje 12” 402 (FIG. 4) del conjunto de datos dinámicos. Debe observarse que el índice tiene base en cero. Referring again to FIG. 5, index attribute 502 identifies a data element of a dynamic data set associated with inserting into the web page (for example, as the value part of a name / value pair). This attribute is only necessary if the order in which the data elements of the dynamic data set are used within the static template file is different from their order in the dynamic data set. For example, index attribute 502 in the title element, which has an index value of "0", identifies and would be associated with the data element "Assembly Line 12" 402 (FIG. 4) of the dynamic data set . It should be noted that the index is based on zero.

El atributo de formato 506 se usa para proporcionar instrucciones de formateo para elementos de datos. En este ejemplo, la convención de instrucciones de formateo (por ejemplo, “#0.00%”) es muy similar a los códigos de formato personalizado usados en el producto de hojas de cálculo Excel® de Microsoft Corporation. Format attribute 506 is used to provide formatting instructions for data elements. In this example, the formatting instructions convention (for example, “# 0.00%”) is very similar to the custom format codes used in the Microsoft® Excel® spreadsheet product.

El elemento de pie de página 508 es una instrucción abstracta usada para indicar que se debería dibujar un pie de página en la parte inferior de la misma. Un identificador de pie de página individual resulta adecuado para aplicaciones que usan un pie de página uniforme en parte o en la totalidad de las páginas, en cuyo caso la generación completa del pie de página la puede realizar el motor de procesado del cliente. Esto ilustra otra ventaja del uso de archivos de plantillas estáticas – las instrucciones de procesado abstractas pueden hacer que resulte más sencillo diseñar el contenido, y el motor de procesado del cliente se puede usar para proporcionar un grado de uniformidad en el aspecto y la funcionalidad del contenido generado. Un ejemplo de funcionalidad generada por un motor de procesado del cliente es el hiperenlace 602 (FIG. 6) incluido en el pie de página generado. Footer element 508 is an abstract instruction used to indicate that a footer should be drawn at the bottom of it. An individual footer identifier is suitable for applications that use a uniform footer in part or all of the pages, in which case the complete generation of the footer can be performed by the client's processing engine. This illustrates another advantage of using static template files - abstract processing instructions can make it easier to design the content, and the client's processing engine can be used to provide a degree of uniformity in the appearance and functionality of the generated content. An example of functionality generated by a client processing engine is the 602 hyperlink (FIG. 6) included in the generated footer.

Los elementos de recuadro_variables 512 y panel_apilamiento 510 son otros ejemplos de instrucciones abstractas. Un recuadro_variables describe un cierto tipo de objeto de presentación (en este caso, un grupo de pares nombre/valor relacionados, donde cada par nombre/valor es un elemento variable), y un panel_apilamiento describe cómo distribuir objetos de presentación (en este caso horizontalmente). Variable_box elements 512 and stacking_ 510 panel are other examples of abstract instructions. A variable_box describes a certain type of presentation object (in this case, a group of related name / value pairs, where each name / value pair is a variable element), and a stacking_ panel describes how to distribute presentation objects (in this case horizontally ).

El archivo de plantillas estáticas mostrado en la FIG. 8 usa instrucciones literales para describir el informe de Formato de Texto Enriquecido (RTF) mostrado en la FIG. 10. El archivo ejemplificativo de plantillas estáticas de la FIG. 8 soporta un formato de informe que consta de contenido de elemento de encabezamiento 802 que se sitúa en el comienzo del informe, contenido de elemento de cuerpo_registro 808 que se repite para cada “registro de datos”, contenido de elemento de separador_registros 806 que se sitúa entre cada registro de datos, y contenido de elemento de pie de página 804 que se sitúa en el mismo final del informe. De este modo, el archivo ejemplificativo de plantillas estáticas de la FIG. 8 se podría usar para generar un informe de una sola página o un informe de 1.000 The static template file shown in FIG. 8 uses literal instructions to describe the Rich Text Format (RTF) report shown in FIG. 10. The exemplary static template file of FIG. 8 supports a report format consisting of 802 header element content that is placed at the beginning of the report, 808 record body element content that is repeated for each "data record", 806 record separator item content that is placed between each data record, and footer element content 804 that is located at the same end of the report. Thus, the exemplary static template file of FIG. 8 could be used to generate a single page report or a 1,000 report

páginas. Por brevedad, la FIG. 9 y la FIG. 10 representan un informe de una sola página generado a partir del registro de datos individual mostrado en el conjunto de datos dinámicos de la FIG. 4. La mayor parte del archivo ejemplificativo de plantillas estáticas de la FIG. 8 es contenido RTF literal que se copiará en el informe. Algunos de los elementos y atributos clave son los siguientes: pages. For brevity, FIG. 9 and FIG. 10 represent a single page report generated from the individual data record shown in the dynamic data set of FIG. 4. Most of the exemplary static template file of FIG. 8 is literal RTF content that will be copied into the report. Some of the key elements and attributes are as follows:

El elemento de encabezamiento 802 y el elemento de pie de página 804 contienen texto literal que se situará en el comienzo y el final, respectivamente, del informe generado. De manera similar, el elemento de separador_registros 806 contiene texto literal que se situará entre registros individuales (pero antes del primer registro y no después del último registro). The header element 802 and the footer element 804 contain literal text that will be placed at the beginning and end, respectively, of the generated report. Similarly, the record separator element 806 contains literal text that will be placed between individual records (but before the first record and not after the last record).

El elemento de cuerpo_registro 808 contiene principalmente texto literal que se copia directamente en el informe, eliminando cualquier espacio en blanco anterior y posterior. The element of body_log 808 mainly contains literal text that is copied directly into the report, eliminating any previous and subsequent blank.

El elemento de definición 810 y el elemento de inserción 812 proporcionan un mecanismo sencillo usado para evitar la repetición de texto literal, y de este modo reducen el tamaño de un archivo de plantillas estáticas. El elemento de definición captura un bloque de texto literal en su punto de primer uso de manera que se pueda repetir (es decir, insertar) posteriormente con un elemento de inserción. The definition element 810 and the insertion element 812 provide a simple mechanism used to prevent the repetition of literal text, and thus reduce the size of a static template file. The definition element captures a block of literal text at its point of first use so that it can be repeated (that is, inserted) later with an insert element.

El elemento de variable 814 marca cada lugar en el que se van a insertar datos dinámicos con formato en el informe. Debe observarse que no se requiere un atributo de etiqueta 504 (FIG. 5) puesto que la etiqueta se incluye como parte del texto literal, y no se requiere un atributo de índice 502 (FIG. 5) ya que el orden de los elementos de datos del elemento de variable es el mismo que su orden en el conjunto de datos dinámicos. Debe observarse también que el atributo de formato 506 (FIG. 8) tiene el mismo comportamiento que el atributo de formato 506 (FIG. 5). Variable element 814 marks each place where formatted dynamic data will be inserted into the report. It should be noted that a tag attribute 504 (FIG. 5) is not required since the tag is included as part of the literal text, and an index attribute 502 (FIG. 5) is not required since the order of the elements of Variable element data is the same as its order in the dynamic data set. It should also be noted that the format attribute 506 (FIG. 8) has the same behavior as the format attribute 506 (FIG. 5).

Un archivo de plantillas estáticas podría incluir referencias a otros archivos de plantillas estáticas (o incluso a sí mismo), permitiendo de este modo un planteamiento “modular” para la construcción de conjuntos de instrucciones de procesado para el motor de procesado del cliente. Como archivos de recursos estáticos, en el dispositivo integrado se pueden almacenar archivos de plantilla estáticas en forma comprimida (por ejemplo, el formato zip de GNU, al que se hace referencia también como formato gzip), lo cual reduce el espacio ocupado por la memoria en el dispositivo integrado. Los mismos también se pueden transferir al cliente en forma comprimida (por ejemplo, formato gzip) para reducir el tiempo de transferencia y conservar recursos. El espacio ocupado por la memoria en el dispositivo integrado se puede reducir todavía más cargando archivos de plantillas estáticas desde una o más fuentes que no sean el dispositivo integrado (por ejemplo, desde un anfitrión externo). A static template file could include references to other static template files (or even itself), thus allowing a "modular" approach to the construction of processing instruction sets for the customer's processing engine. As static resource files, static template files can be stored in compressed form on the integrated device (for example, the GNU zip format, which is also referred to as a gzip format), which reduces the space occupied by memory in the integrated device. They can also be transferred to the customer in compressed form (for example, gzip format) to reduce the transfer time and conserve resources. The space occupied by the memory in the integrated device can be reduced even more by loading static template files from one or more sources other than the integrated device (for example, from an external host).

Los archivos de plantillas estáticas también se pueden crear y/o modificar en el cliente. Por ejemplo, además de analizar sintácticamente archivos de plantillas estáticas, el motor de procesado del cliente puede contener lógica para generarlos (típicamente de manera conjunta con información recopilada a través de una interfaz de usuario). Los archivos de plantillas estáticas creados y/o modificados de tal manera se pueden almacenar dentro del dispositivo integrado y/o se pueden interpretar inmediatamente por medio del motor de procesado del cliente (por ejemplo, para una ejecución “de una sola vez” o para proporcionar una característica de vista previa). Los archivos de plantillas estáticas creados y/o modificados de tal manera, que a continuación se almacenan dentro del dispositivo integrado, siguen siendo “estáticos” desde la perspectiva tanto del dispositivo integrado (que no necesita realizar ningún procesado significativo sobre ellos) como del cliente (que puede almacenarlos en memoria caché). Static template files can also be created and / or modified on the client. For example, in addition to parsing static template files, the client's processing engine may contain logic to generate them (typically in conjunction with information collected through a user interface). Static template files created and / or modified in such a way can be stored within the integrated device and / or can be interpreted immediately through the client's processing engine (for example, for "one-time" execution or for provide a preview feature). Static template files created and / or modified in such a way, which are then stored within the integrated device, remain “static” from the perspective of both the integrated device (which does not need to perform any significant processing on them) or the client (which can cache them).

Debe observarse que, aunque la FIG. 5 muestra instrucciones de archivos de plantillas estáticas abstractas, que se usan para generar XHTML, y la FIG. 8 muestra instrucciones de archivos de plantillas estáticas literales para generar RTF, esto simplemente tiene fines ilustrativos. No hay nada del XHTML que requiera instrucciones de archivos de plantillas estáticas abstractas, y no hay nada del RTF que requiera instrucciones de archivos de plantillas estáticas literales. El XHTML, el RTF y otros tipos de contenido (por ejemplo, diagramas, gráficos, informes, documentos, hojas de cálculos, páginas web, etcétera) se pueden generar usando instrucciones de archivos de plantillas estáticas abstractas y/o literales. It should be noted that, although FIG. 5 shows instructions from abstract static template files, which are used to generate XHTML, and FIG. 8 shows instructions from files of literal static templates to generate RTF, this is simply for illustrative purposes. There is nothing from XHTML that requires instructions from abstract static template files, and there is nothing from RTF that requires instructions from files from literal static templates. XHTML, RTF and other types of content (for example, diagrams, graphs, reports, documents, spreadsheets, web pages, etc.) can be generated using instructions from abstract and / or literal static template files.

Por otra parte, las instrucciones de archivos de plantillas estáticas abstractas, mostradas en la FIG. 5, no se limitan a la generación de XHTML. Se podría usar el mismo archivo de plantillas estáticas para generar un informe RTF similar al mostrado en la FIG. 10, simplemente ordenando al motor de procesado del cliente que genere RTF en lugar de XHTML. De esta manera, un archivo dado de plantillas estáticas y el conjunto de datos dinámicos asociado se podrían usar para generar muchos tipos diferentes de contenido (por ejemplo, informes, documentos, hojas de cálculo, páginas web, etcétera), siempre que el motor de procesado del cliente soporte los tipos de contenido objetivo). On the other hand, the instructions of abstract static template files, shown in FIG. 5, are not limited to the generation of XHTML. The same static template file could be used to generate an RTF report similar to that shown in FIG. 10, simply ordering the client's processing engine to generate RTF instead of XHTML. In this way, a given archive of static templates and the associated dynamic data set could be used to generate many different types of content (for example, reports, documents, spreadsheets, web pages, etc.), provided that the engine of Customer processing supports the types of target content).

Tal como se ha descrito previamente, el dispositivo integrado puede delegar al cliente otras tareas además de la generación de contenidos. Por ejemplo, un archivo de plantillas estáticas puede contener instrucciones para recuperar un conjunto de datos dinámicos, transformarlo, y a continuación presentarlo de vuelta al dispositivo integrado. Esta capacidad permite que clientes funcionen como nodos en una red informática distribuida, con el dispositivo integrado transfiriendo tareas intensivas, desde el punto de vista computacional, a uno o más clientes que proporcionen soporte de procesado distribuido para un dispositivo integrado dado en cualquier instante de tiempo dado. As previously described, the integrated device can delegate other tasks to the client in addition to content generation. For example, a static template file may contain instructions to retrieve a dynamic data set, transform it, and then present it back to the integrated device. This capability allows clients to function as nodes in a distributed computer network, with the integrated device transferring intensive tasks, from the computational point of view, to one or more clients that provide distributed processing support for a given integrated device at any given time dice.

La FIG. 5 y la FIG. 8 se proporcionan con fines ilustrativos, y no pretenden fijar límites o restricciones al alcance de las instrucciones de procesado de archivos de plantillas estáticas. Por ejemplo, las instrucciones de procesado de archivos de plantillas estáticas se podrían usar para implementar un sistema de acontecimientos con el fin de responder a acciones de usuario o para implementar un sistema para entradas, por parte del usuario, que validen números (por ejemplo, especificar valores permitidos mínimo, máximo, y especial) y/o cadenas de texto (por ejemplo, especificar patrones de texto permitidos). Un punto importante es que los archivos de plantillas estáticas están destinados y diseñados para funcionar como plantillas de “producción en serie” que proporcionan instrucciones para generar contenido y/o instrucciones de procesado computacional al motor de procesado del cliente, con el fin de minimizar recursos requeridos dentro del dispositivo integrado y con el fin de transferir trabajo desde el dispositivo integrado al cliente. FIG. 5 and FIG. 8 are provided for illustrative purposes, and are not intended to set limits or restrictions on the scope of processing instructions for static template files. For example, static template file processing instructions could be used to implement an event system to respond to user actions or to implement a system for user input that validates numbers (for example, specify minimum, maximum, and special allowed values) and / or text strings (for example, specify allowed text patterns). An important point is that static template files are intended and designed to function as "serial production" templates that provide instructions for generating content and / or computational processing instructions to the client's processing engine, in order to minimize resources required within the integrated device and in order to transfer work from the integrated device to the client.

Conjuntos de datos dinámicos Dynamic data sets

Haciendo referencia a la FIG. 2, el segundo elemento es el conjunto de datos dinámicos 204. Cada conjunto de datos dinámicos contiene un conjunto (es decir, una “colección” o “paquete”) de datos que se intercambia entre el dispositivo integrado 102 y el cliente 104. A diferencia de los archivos de plantillas estáticas, que son recursos estáticos, cada conjunto de datos dinámicos es generado dinámicamente por el dispositivo integrado (o cliente). Son formatos ejemplificativos para conjuntos de datos dinámicos el JSON y el XML. El JSON es sencillo de analizar sintácticamente y de generar, puede representar objetos de datos de complejidad arbitraria, y se diseñó específicamente para proporcionar una representación compacta de datos. La FIG. 4 es un ejemplo de un conjunto de datos dinámicos simple en formato JSON con diez elementos de datos (separado cada uno de ellos por una coma), el cual se usa para generar la página web de la FIG. 7 y el informe de la FIG. 10. Tal como puede observarse en la FIG. 4, el conjunto ejemplificativo de datos dinámicos de JSON está compuesto casi en su totalidad por datos puros. Referring to FIG. 2, the second element is the dynamic data set 204. Each dynamic data set contains a set (ie, a "collection" or "package") of data that is exchanged between the integrated device 102 and the client 104. A Unlike static template files, which are static resources, each set of dynamic data is generated dynamically by the integrated device (or client). Exemplary formats for dynamic data sets are JSON and XML. The JSON is simple to parse and generate, can represent data objects of arbitrary complexity, and was specifically designed to provide a compact representation of data. FIG. 4 is an example of a simple dynamic data set in JSON format with ten data elements (each separated by a comma), which is used to generate the FIG web page. 7 and the report of FIG. 10. As can be seen in FIG. 4, the exemplary set of JSON dynamic data is composed almost entirely of pure data.

El uso de una representación compacta y (casi) pura de datos y la minimización del procesado de datos dinámicos por parte del dispositivo integrado, tal como se ha descrito previamente, son muy importantes para optimizar (es decir, aumentar) la velocidad de transferencia de conjuntos de datos dinámicos y mejorar la escalabilidad y la sensibilidad del dispositivo integrado. Por ejemplo, un informe que muestre resultados del rendimiento de fabricación por turno durante el último año puede contener datos para 1.000 turnos, donde cada turno viene representado por una parte (por ejemplo, un registro de datos) de un conjunto grande de datos dinámicos (por ejemplo, múltiples registros de datos). Alternativamente, una página web que muestre resultados actuales de fabricación se puede actualizar múltiples veces por segundo, generando de este modo muchos miles de transacciones de conjuntos de datos dinámicos en una hora. En ambos casos, es probable que la cantidad de datos dinámicos generados sea significativa, y por lo tanto, es probable también que lo que se ahorra con una representación de datos compacta sea también significativo. El espacio ocupado en memoria de un conjunto de datos dinámicos se puede reducir adicionalmente comprimiéndolo antes de transferirlo al cliente (por ejemplo, usando una compresión gzip). The use of a compact and (almost) pure representation of data and the minimization of dynamic data processing by the integrated device, as previously described, are very important to optimize (i.e. increase) the transfer rate of Dynamic data sets and improve the scalability and sensitivity of the integrated device. For example, a report that shows results of manufacturing performance per shift during the last year may contain data for 1,000 shifts, where each shift is represented by a part (for example, a data record) of a large set of dynamic data ( for example, multiple data records). Alternatively, a web page showing current manufacturing results can be updated multiple times per second, thereby generating many thousands of dynamic data set transactions in one hour. In both cases, the amount of dynamic data generated is likely to be significant, and therefore, what is saved with a compact data representation is also likely to be significant. The space occupied in memory of a dynamic data set can be further reduced by compressing it before transferring it to the client (for example, using a gzip compression).

Una representación compacta de datos conserva RAM y otros recursos dentro del dispositivo integrado. El uso de recursos dentro del dispositivo integrado se puede reducir adicionalmente generando la respuesta a una solicitud de conjunto de datos dinámicos de cliente en múltiples partes, de tal manera que solamente una parte de la respuesta se almacena en la memoria del dispositivo integrado en un momento cualquiera. Por ejemplo, un conjunto de datos dinámicos que contiene diez registros de datos se puede generar en diez partes, una para cada registro, de tal manera que solamente uno de los diez registros de datos de la respuesta se almacene en la RAM del dispositivo integrado en un momento cualquiera. A compact representation of data conserves RAM and other resources within the integrated device. The use of resources within the integrated device can be further reduced by generating the response to a client dynamic data set request in multiple parts, such that only part of the response is stored in the memory of the integrated device at a time. anyone. For example, a dynamic data set containing ten data records can be generated in ten parts, one for each record, such that only one of the ten data records of the response is stored in the RAM of the device integrated into any moment

La información necesaria para construir una solicitud de conjunto de datos dinámicos puede estar asociada implícitamente a un archivo de plantillas estáticas o se puede incluir explícitamente dentro de un archivo de plantillas estáticas. Los ejemplos de archivo de plantillas estáticas de la FIG. 5 y la FIG. 8 se basan ambos en una asociación implícita con el recurso del archivo de plantillas estáticas (nada del archivo de plantillas estáticas identifica explícitamente la solicitud de conjunto de datos dinámicos). La inclusión explícita de una solicitud de conjunto de datos dinámicos dentro de un archivo de plantillas estáticas puede ser tan sencilla como incluir un elemento conjunto_datos_dinámicos con un atributo de consulta tal como query=”SELECT * FROM Table1”. Alternativamente, el archivo de plantillas estáticas puede remitir explícitamente a uno o más datos dentro del dispositivo integrado. Por ejemplo, el atributo de índice 502 (FIG. 5) se podría modificar para remitir a un dato particular dentro del dispositivo integrado, construyendo automáticamente el motor de procesado del cliente una consulta de conjunto de datos dinámicos a partir de los atributos de índice. The information necessary to build a dynamic data set request may be implicitly associated with a static template file or may be explicitly included within a static template file. Examples of static template file of FIG. 5 and FIG. 8 both are based on an implicit association with the resource of the static template file (nothing in the static template file explicitly identifies the dynamic data set request). Explicitly including a dynamic data set request within a static template file can be as simple as including a dynamic_data_set element with a query attribute such as query = "SELECT * FROM Table1". Alternatively, the static template file may explicitly refer to one or more data within the integrated device. For example, index attribute 502 (FIG. 5) could be modified to refer to a particular data within the integrated device, the client's processing engine automatically constructs a dynamic data set query from the index attributes.

Aunque no es necesario, la especificación y generación de conjuntos de datos dinámicos se puede simplificar organizando lógicamente en tablas datos dentro del dispositivo integrado (como en una base de datos). Los datos a continuación se pueden consultar usando sentencias SELECT SQL convencionales incluso si la gestión de datos subyacentes en el dispositivo integrado no es una base de datos siempre que el dispositivo integrado incluya un “intérprete” adecuado para el SQL. Esto es consistente con la interpretación del dispositivo integrado como un servidor de datos. Además, usando la organización tabular, se puede referenciar cualquier dato en el dispositivo integrado con un simple identificador compuesto por una ID de tabla, una ID de fila, y una ID de columna. Although not necessary, the specification and generation of dynamic data sets can be simplified by logically organizing data tables within the integrated device (as in a database). The data below can be consulted using conventional SELECT SQL statements even if the underlying data management in the integrated device is not a database as long as the integrated device includes a suitable “interpreter” for the SQL. This is consistent with the interpretation of the integrated device as a data server. In addition, using tabular organization, any data in the integrated device can be referenced with a simple identifier consisting of a table ID, a row ID, and a column ID.

Un único conjunto de datos dinámicos puede contener una cantidad arbitraria de datos, que pueden estar organizados linealmente (por ejemplo, como datos tabulares) o jerárquicamente (por ejemplo, como un “objeto” de complejidad arbitraria). A single set of dynamic data can contain an arbitrary amount of data, which can be organized linearly (for example, as tabular data) or hierarchically (for example, as an "object" of arbitrary complexity).

Los conjuntos de datos dinámicos pueden ser generados por el dispositivo integrado y transmitidos al cliente, o alternativamente pueden ser generados por el cliente y ser transmitidos al dispositivo integrado. Por ejemplo, los datos introducidos en el cliente por el usuario se pueden “enviar” al dispositivo integrado como un conjunto de datos dinámicos. The dynamic data sets can be generated by the integrated device and transmitted to the client, or alternatively they can be generated by the client and transmitted to the integrated device. For example, the data entered into the client by the user can be "sent" to the integrated device as a dynamic data set.

Los conjuntos de datos dinámicos también se pueden cifrar para proporcionar seguridad de datos, la cual consiga que este sistema resulte adecuado para su uso en aplicaciones de alta seguridad. Dynamic data sets can also be encrypted to provide data security, which makes this system suitable for use in high security applications.

Los conjuntos de datos dinámicos pueden ser procesados por el motor de procesado del cliente para generar información nueva a partir de elementos de datos existentes (por ejemplo, calcular sumas y medias) sin necesitar un trabajo adicional del dispositivo integrado. El motor de procesado del cliente puede realizar muchos tipos diferentes de manipulación y transformación de datos, tales como filtrado, clasificación, agrupamiento y resumen. Esta técnica puede ser especialmente útil cuando el cliente acumula datos de múltiples dispositivos integrados tal como se describe posteriormente. Dynamic data sets can be processed by the client's processing engine to generate new information from existing data elements (for example, calculate sums and means) without requiring additional work from the integrated device. The client's processing engine can perform many different types of data manipulation and transformation, such as filtering, classification, grouping and summary. This technique can be especially useful when the client accumulates data from multiple integrated devices as described below.

Debe observarse que los métodos y técnicas descritos en la presente memoria se proporcionan con fines ilustrativos, y no pretenden fijar límites o restricciones en el alcance de las operaciones de los conjuntos de datos dinámicos. Un punto importante es que los conjuntos de datos dinámicos están destinados a y diseñados para encapsular el aspecto “dinámico” del contenido con una representación compacta, con el fin de minimizar los recursos requeridos dentro del dispositivo integrado y con el fin de transferir trabajo desde el dispositivo integrado al cliente. It should be noted that the methods and techniques described herein are provided for illustrative purposes, and are not intended to set limits or restrictions on the scope of operations of dynamic data sets. An important point is that dynamic data sets are intended for and designed to encapsulate the “dynamic” aspect of content with a compact representation, in order to minimize the resources required within the integrated device and in order to transfer work from the device integrated to the client.

Motor de procesado del cliente Customer Processing Engine

En referencia a la FIG. 2, el tercer elemento es el motor de procesado del cliente 206, que es un archivo de recursos estáticos, o pluralidad de archivos de recursos estáticos, almacenados en el dispositivo integrado 102 (por ejemplo, en memoria flash) y transmitidos al cliente 104 según se requiera. El motor de procesado del cliente es un archivo de recursos estáticos, lo cual significa que el dispositivo integrado simplemente lee el archivo de su memoria y lo transmite al cliente. No es necesario ningún otro procesado significativo en el dispositivo integrado. Referring to FIG. 2, the third element is the processing engine of the client 206, which is a static resource file, or plurality of static resource files, stored in the integrated device 102 (for example, in flash memory) and transmitted to the client 104 according to is required. The client's processing engine is a static resource file, which means that the integrated device simply reads the file from its memory and transmits it to the client. No other significant processing is necessary in the integrated device.

Una vez que el mismo ha sido cargado por el cliente 104, el motor de procesado del cliente 206 es un programa ejecutable, tal como un programa JavaScript, que interpreta archivos de plantillas estáticas y lleva a cabo las instrucciones especificadas en los mismos. La ejecución de dichas instrucciones requiere generalmente que el motor de procesado del cliente disponga de capacidades adicionales. En referencia a la FIG. 3, el motor de procesado del cliente puede comprender un núcleo de procesado 302 (que dirige y controla los otros sub-componentes del motor de procesado del cliente), un procesador de archivos de plantillas estáticas 304, un generador de interfaces de usuario 306, un generador de informes 308, un formateador de datos 310, un validador de datos 312, un gestor de canales de comunicación 314, un rebotador de archivos 316 (que memoriza y carga archivos en y desde el ordenador anfitrión y/o sistemas de archivos accesibles para el ordenador anfitrión), y posiblemente componentes adicionales 318. Un punto importante es que el motor de procesado del cliente 206 está explícitamente destinado a y diseñado para minimizar recursos requeridos dentro del dispositivo integrado y para transferir trabajo desde el dispositivo integrado al cliente. De este modo, la FIG. 3 se proporciona con fines ilustrativos, y no pretende fijar límites o restricciones en el alcance del motor de procesado del cliente. Once it has been loaded by the client 104, the processing engine of the client 206 is an executable program, such as a JavaScript program, that interprets static template files and performs the instructions specified therein. The execution of these instructions generally requires that the client's processing engine has additional capabilities. Referring to FIG. 3, the client processing engine may comprise a processing core 302 (which directs and controls the other sub-components of the client processing engine), a static template file processor 304, a user interface generator 306, a report generator 308, a data formatter 310, a data validator 312, a communication channel manager 314, a file bouncer 316 (which memorizes and loads files to and from the host computer and / or accessible file systems for the host computer), and possibly additional components 318. An important point is that the client processing engine 206 is explicitly intended for and designed to minimize resources required within the integrated device and to transfer work from the integrated device to the client. Thus, FIG. 3 is provided for illustrative purposes, and is not intended to set limits or restrictions on the scope of the customer's processing engine.

Con el estado actual de la tecnología de clientes, escribir el motor de procesado del cliente en el lenguaje JavaScript y escribir archivos de plantillas estáticas en XML puede proporcionar ventajas significativas, ya que permite que el motor de procesado del cliente se aproveche de capacidades que son nativas para los clientes, tales como la disponibilidad de funcionalidad exhaustiva para analizar sintácticamente, manipular, y trabajar de otro modo con documentos XML, lo cual puede reducir drásticamente la complejidad del motor de procesado del cliente. With the current state of customer technology, writing the client's processing engine in the JavaScript language and writing static template files in XML can provide significant advantages, since it allows the client's processing engine to take advantage of capabilities that are native to customers, such as the availability of comprehensive functionality to parse, manipulate, and otherwise work with XML documents, which can dramatically reduce the complexity of the client's processing engine.

El motor de procesado del cliente puede ser tan simple o complejo como requiera una aplicación en particular (es decir, tipo de dispositivo integrado). Por ejemplo, se puede construir un motor importante (aunque limitado) de procesado del cliente con 5 KB ó menos de JavaScript, mientras que uno que sea rico en características podría incluir 50 KB ó más de JavaScript. The client's processing engine can be as simple or complex as a particular application requires (ie, type of integrated device). For example, an important (though limited) client processing engine can be built with 5 KB or less of JavaScript, while one that is rich in features could include 50 KB or more of JavaScript.

El motor de procesado del cliente también se puede diseñar como una serie de módulos (es decir, archivos más pequeños) que se carguen dinámicamente (que se transmitan al cliente bajo demanda). Esto reduce el tiempo de carga inicial para un cliente nuevo. Igual que otros archivos de recursos estáticos, el(los) archivo(s) que comprende(n) el motor de procesado del cliente también se puede(n) almacenar de una manera comprimida (por ejemplo, formato gzip), lo cual reduce tanto el espacio ocupado de memoria en el dispositivo integrado como el tiempo de carga inicial. El espacio ocupado por la memoria en el dispositivo integrado se puede reducir todavía más cargando el motor de procesado del cliente o módulos del mismo desde una o más fuentes que no sean el dispositivo integrado (por ejemplo, desde un anfitrión externo según remitan otros recursos cargados desde el dispositivo integrado). The client's processing engine can also be designed as a series of modules (that is, smaller files) that are dynamically loaded (transmitted to the client on demand). This reduces the initial charging time for a new customer. Like other static resource files, the file (s) that comprise the client's processing engine can also be stored in a compressed way (for example, gzip format), which reduces both the occupied memory space in the integrated device as the initial load time. The space occupied by the memory in the integrated device can be further reduced by loading the client's processing engine or modules thereof from one or more sources other than the integrated device (for example, from an external host as remitted by other loaded resources from the integrated device).

El motor de procesado del cliente juega un papel central en la mejora de la escalabilidad del sistema, ya que se puede ejecutar simultáneamente en un número cualquiera de clientes. Además, el motor de procesado del cliente realiza tanto tareas de presentación como tareas lógicas comerciales (entre los ejemplos de estas últimas se incluyen gestión de comunicación, realización de validación de datos y manipulación de datos, y generación de informes complejos), lo cual eleva al cliente de ser un medio de entrega de contenido a ser un “nodo” de procesado en un sistema informático distribuido. The client's processing engine plays a central role in improving the scalability of the system, since it can be run simultaneously on any number of clients. In addition, the client's processing engine performs both presentation tasks and commercial logical tasks (examples of the latter include communication management, data validation and data manipulation, and complex report generation), which raises to the client from being a means of delivering content to being a "node" of processing in a distributed computer system.

Canal de comunicación gestionado Managed communication channel

En referencia a la FIG. 2, el cuarto elemento es el canal de comunicación gestionado 210. Los canales de comunicación gestionados son usados por el cliente 104, específicamente el motor de procesado del cliente 206, para comunicarse con uno o más dispositivos integrados. El término “gestionado” se refiere al hecho de que el canal de comunicación es controlado por el motor de procesado del cliente, no directamente por el cliente tal como se produce tradicionalmente. Los canales de comunicación gestionados permiten que el motor de procesado del cliente mantenga la comunicación en curso con uno o más dispositivos integrados, transfiriendo información entre el cliente y el dispositivo integrado de una manera ininterrumpida que es invisible para el usuario, de manera que se proporciona una experiencia superior para el usuario. Por ejemplo, el motor de procesado del cliente puede usar un canal de comunicación gestionado para recuperar información que se usa con el fin de actualizar dinámicamente una página web que muestra datos de rendimiento de fabricación en tiempo real (por ejemplo, actualizándose diez veces por segundo) sin parpadeos, actualizaciones de páginas u otros artefactos visuales. Referring to FIG. 2, the fourth element is the managed communication channel 210. The managed communication channels are used by the client 104, specifically the client processing engine 206, to communicate with one or more integrated devices. The term "managed" refers to the fact that the communication channel is controlled by the client's processing engine, not directly by the client as it is traditionally produced. The managed communication channels allow the client's processing engine to maintain ongoing communication with one or more integrated devices, transferring information between the client and the integrated device in an uninterrupted manner that is invisible to the user, so that it is provided A superior user experience. For example, the client's processing engine can use a managed communication channel to retrieve information that is used in order to dynamically update a web page that shows manufacturing performance data in real time (for example, updating ten times per second ) no flickering, page updates or other visual artifacts.

Los canales de comunicación gestionados 210 también pueden ser usados por el cliente para recuperar código ejecutable (tal como JavaScript) del dispositivo integrado 102 “bajo demanda” (es decir, solo cuando realmente sea necesario), tal como cuando el motor de procesado del cliente 206 está diseñado en forma de una serie de módulos cargados dinámicamente (tal como se ha descrito previamente). The managed communication channels 210 can also be used by the client to retrieve executable code (such as JavaScript) from the integrated device 102 "on demand" (ie, only when really necessary), such as when the client's processing engine 206 is designed in the form of a series of dynamically loaded modules (as previously described).

Existen varios métodos diferentes que se pueden usar para implementar un canal de comunicación gestionado. Dos métodos muy útiles son el XMLHttpRequest (al que se hace referencia también como XHR) y la manipulación de documentos. There are several different methods that can be used to implement a managed communication channel. Two very useful methods are XMLHttpRequest (also referred to as XHR) and document manipulation.

El XHR es una norma de facto para la comunicación cliente-servidor HTTP y está disponible en varias formas para las versiones actuales de clientes populares, tales como los navegadores web Internet Explorer® 6 e Internet Explorer® 7 de Microsoft Corporation, los navegadores web Firefox® 1.5 y Firefox® 2 de Mozilla Corporation, el navegador web Safari™ 2 de Apple Inc., y el navegador web Opera™ 9 de Opera Software ASA. El XHR se puede usar para solicitar datos del dispositivo integrado (usando GET) o para enviar datos al dispositivo integrado (usando POST). Además, las solicitudes XHR se pueden designar o bien como síncronas o bien como asíncronas según se necesite. No obstante, el XHR se limita en general al acceso a recursos en el dominio local. The XHR is a de facto standard for HTTP client-server communication and is available in various forms for current versions of popular clients, such as Internet Explorer® 6 and Internet Explorer® 7 web browsers from Microsoft Corporation, Firefox web browsers ® 1.5 and Firefox® 2 from Mozilla Corporation, the Safari ™ 2 web browser from Apple Inc., and the Opera ™ 9 web browser from Opera Software ASA. The XHR can be used to request data from the integrated device (using GET) or to send data to the integrated device (using POST). In addition, XHR requests can be designated either as synchronous or as asynchronous as needed. However, the XHR is generally limited to access to resources in the local domain.

El XHR también se puede usar indirectamente para cargar código ejecutable bajo demanda recuperando ese código en forma de una cadena de texto. Por ejemplo, lo siguiente ilustra una técnica JavaScript conocida de plataforma cruzada que consigue que el código de una cadena de texto forme parte del ámbito global (en donde es accesible para el motor de procesado del cliente): The XHR can also be used indirectly to load executable code on demand by retrieving that code in the form of a text string. For example, the following illustrates a known cross-platform JavaScript technique that makes the code of a text string part of the global scope (where it is accessible to the client's processing engine):

función añadir_a_ámbito_global (cadena_código) function add_to_global_global (code_ string)

{ {

var global = esto; global var = this;

si (window.execScript) yes (window.execScript)

{ {

window.execScript (cadena_código); window.execScript (string_code);

return null; return null;

} }

return global.eval ? global.eval (cadena_código): eval (cadena_código); } return global.eval? global.eval (code_chain): eval (code_chain); }

Por otro lado, la manipulación de documentos resulta particularmente útil si se requiere un acceso a dominio no local (es decir, cruzado). La manipulación de documentos es una técnica menos conocida pero muy útil para la comunicación gestionada, en la que se descarga un recurso añadiendo dinámicamente un identificador nuevo a una página web existente, en donde dicho identificador remite al recurso deseado. Por ejemplo, se puede descargar un archivo JavaScript añadiendo dinámicamente un identificador <script> a la página actual, tal como <script src=”http://192.168.1.240/data_1138.js”>. El DOM del W3C (Modelo de Objeto de Documento del Consorcio de la Malla Multimedia Mundial), el método document.write() de JavaScript, y la propiedad innerHTML se pueden usar todos ellos para realizar la manipulación de documentos. On the other hand, document manipulation is particularly useful if non-local domain access is required (i.e. cross-over). Document manipulation is a less known but very useful technique for managed communication, in which a resource is downloaded by dynamically adding a new identifier to an existing web page, where said identifier refers to the desired resource. For example, you can download a JavaScript file by dynamically adding a <script> identifier to the current page, such as <script src = ”http://192.168.1.240/data_1138.js”>. The W3C DOM (Document Object Model of the Global Multimedia Mesh Consortium), the JavaScript document.write () method, and the innerHTML property can all be used to manipulate documents.

En referencia a la FIG. 1, un uso importante de la manipulación de documentos en esta forma de realización es solicitar conjuntos de datos dinámicos de múltiples dispositivos integrados 102 (es decir, de múltiples dominios y/o direcciones IP). Esto permite que cualquier cliente individual 104 con un motor de procesado del cliente 206 (FIG. 2) solicite, manipule, transforme, acumule, y presente datos de una pluralidad de dispositivos integrados. Por ejemplo, el dispositivo integrado puede servir un conjunto de datos dinámicos en forma de un archivo JavaScript generado dinámicamente dando formato a los datos como JSON y asignando esos datos formateados a una variable JavaScript (consiguiendo de este modo que los datos formen parte de una sentencia JavaScript completa). Cada vez que se remita a dicho archivo en el cliente (por ejemplo, a través de un identificador <script> generado dinámicamente tal como se ha descrito anteriormente), el mismo será solicitado automáticamente desde el dispositivo integrado que se especifica en el URL del recurso (es decir, en el atributo src del identificador <script>). Referring to FIG. 1, an important use of document manipulation in this embodiment is to request dynamic data sets from multiple integrated devices 102 (ie, from multiple domains and / or IP addresses). This allows any individual customer 104 with a client processing engine 206 (FIG. 2) to request, manipulate, transform, accumulate, and present data from a plurality of integrated devices. For example, the integrated device can serve a dynamic data set in the form of a dynamically generated JavaScript file by formatting the data as JSON and assigning that formatted data to a JavaScript variable (thus making the data part of a statement JavaScript complete). Each time that file is referred to on the client (for example, through a dynamically generated <script> identifier as described above), it will be automatically requested from the integrated device specified in the resource URL (that is, in the src attribute of the <script> identifier).

Los canales de comunicación gestionados están vinculados solo de manera moderada con los métodos de comunicación antes descritos. Los mismos se pueden adaptar fácilmente para usar otros métodos a medida que evolucionen las normas (de facto u otras) de Internet, tales como la norma W3C propuesta “Document Object Model (DOM) Level 3 Load and Save Specification”. The managed communication channels are only moderately linked to the communication methods described above. They can easily be adapted to use other methods as Internet standards (de facto or others) evolve, such as the proposed W3C standard “Document Object Model (DOM) Level 3 Load and Save Specification”.

Algunas de las técnicas antes descritas funcionarán con una comunicación tanto síncrona como asíncrona. Se recomienda la comunicación asíncrona ya que en general proporciona una experiencia superior para el usuario. Debe observarse que esto constituye una preferencia, no un requisito. En muchos casos, el motor de procesado del cliente seguirá funcionando de manera eficaz si los canales de comunicación gestionados usan una comunicación síncrona en lugar de una comunicación asíncrona. Some of the techniques described above will work with both synchronous and asynchronous communication. Asynchronous communication is recommended as it generally provides a superior user experience. It should be noted that this constitutes a preference, not a requirement. In many cases, the client's processing engine will continue to operate efficiently if the managed communication channels use synchronous communication instead of asynchronous communication.

Debe observarse que los métodos y técnicas descritos en la presente memoria se proporcionan con fines ilustrativos, y no pretenden fijar límites o restricciones en el alcance de las operaciones de los canales de comunicación gestionados. Un punto importante es que los canales de comunicación gestionados actúan como enlaces de comunicación bidireccionales entre el motor de procesado del cliente que se ejecuta en un cliente y uno It should be noted that the methods and techniques described herein are provided for illustrative purposes, and are not intended to set limits or restrictions on the scope of operations of the managed communication channels. An important point is that the managed communication channels act as two-way communication links between the client's processing engine that runs on a client and one

o más dispositivos integrados. Los mismos se usan para intercambiar información que soporta los objetivos de minimizar los recursos requeridos dentro del dispositivo integrado y transferir trabajo desde el dispositivo integrado al cliente. or more integrated devices. They are used to exchange information that supports the objectives of minimizing the resources required within the integrated device and transferring work from the integrated device to the client.

Interacción de elementos principales Interaction of main elements

Para entender mejor cómo interaccionan el motor de procesado del cliente, los archivos de plantillas estáticas, los conjuntos de datos dinámicos, y los canales de comunicación gestionados, se muestran las etapas necesarias para generar una página web con elementos tanto estáticos como dinámicos, en forma de un diagrama de secuencias en la FIG. 11, y las mismas se describen de forma detallada a continuación. To better understand how the client's processing engine, static template files, dynamic data sets, and managed communication channels interact, the steps necessary to generate a web page with both static and dynamic elements are shown, in form of a sequence diagram in FIG. 11, and they are described in detail below.

En una forma de realización de la invención, según se ilustra en la FIG. 11, se genera contenido puramente estático de la manera siguiente: In an embodiment of the invention, as illustrated in FIG. 11, purely static content is generated as follows:

1. one.
El usuario solicita una página web específica (por ejemplo, siguiendo un enlace o introduciendo directamente un URL) (etapa 1102). The user requests a specific web page (for example, by following a link or by directly entering a URL) (step 1102).

2. 2.
El cliente se conecta el dispositivo integrado y solicita la página web específica (URL) (etapa 1104). The client connects the integrated device and requests the specific web page (URL) (step 1104).

3. 3.
El dispositivo integrado transmite la página web solicitada al cliente. A esta página se le hace referencia como página de “arranque”, puesto que en lugar del contenido solicitado por el usuario, contiene los medios para generar este contenido, a través de referencias al motor de procesado del cliente, uno o más archivos de plantillas estáticas, y opcionalmente uno o más conjuntos de datos dinámicos y otros recursos (etapa 1106). The integrated device transmits the requested web page to the client. This page is referred to as a "startup" page, since instead of the content requested by the user, it contains the means to generate this content, through references to the client's processing engine, one or more template files static, and optionally one or more sets of dynamic data and other resources (step 1106).

4. Four.
La página de arranque contiene una referencia al motor de procesado del cliente (por ejemplo, a través de un identificador <script> HTML), que provoca que el cliente solicite el motor del procesado del cliente del dispositivo integrado (etapa 1108). The startup page contains a reference to the client's processing engine (for example, through an HTML <script> identifier), which causes the client to request the client's processing engine from the integrated device (step 1108).

5. 5.
El dispositivo integrado transmite el motor de procesado del cliente al cliente (etapa 1110). The integrated device transmits the processing engine from the client to the client (step 1110).

6. 6.
La página de arranque recibida en el punto 3 anterior contiene una llamada a la función de entrada en el motor de procesado del cliente, que provoca que el cliente llame a la función de entrada y comience a ejecutar el motor de procesado del cliente (etapa 1112). The start page received in point 3 above contains a call to the input function in the client's processing engine, which causes the client to call the input function and start executing the client's processing engine (step 1112 ).

7. 7.
La página de arranque recibida en el anterior punto 3 especifica el URL de un archivo de plantillas estáticas que contiene instrucciones para generar el contenido deseado, y el motor de procesado del cliente solicita ese archivo de plantillas estáticas usando un canal de comunicación gestionado (etapa 1114). The start page received in the previous point 3 specifies the URL of a static template file that contains instructions to generate the desired content, and the client's processing engine requests that static template file using a managed communication channel (step 1114 ).

8. 8.
El dispositivo integrado transmite el archivo de plantillas estáticas al cliente (etapa 1116). The integrated device transmits the static template file to the client (step 1116).

9. 9.
El motor de procesado del cliente analiza sintácticamente el archivo de plantillas estáticas y genera el contenido estático asociado de manera correspondiente a partir de instrucciones de procesado abstractas y/o literales (etapa 1118). The client's processing engine parses the static template file and generates the associated static content correspondingly from abstract and / or literal processing instructions (step 1118).

10. 10.
El contenido estático está preparado (etapa 1120). The static content is prepared (step 1120).

Cuando el contenido incluye elementos dinámicos, se realizan las siguientes etapas adicionales: When the content includes dynamic elements, the following additional steps are performed:

11. eleven.
El motor de procesado del cliente identifica un requisito de conjunto de datos dinámicos asociado al archivo de plantillas estáticas (por ejemplo, una sentencia SELECT SQL que está incluida en el archivo de plantillas estáticas). El requisito de conjunto de datos dinámicos puede ser implícito o explícito tal como se ha descrito anteriormente (etapa 1122). The client processing engine identifies a dynamic data set requirement associated with the static template file (for example, a SELECT SQL statement that is included in the static template file). The dynamic data set requirement may be implicit or explicit as described above (step 1122).

12. 12.
El motor de procesado del cliente usa un canal de comunicación gestionado para solicitar un conjunto de datos dinámicos (etapa 1124). The client's processing engine uses a managed communication channel to request a dynamic data set (step 1124).

13. 13.
El dispositivo integrado genera el conjunto de datos dinámicos y lo transmite al cliente (etapa 1126). The integrated device generates the dynamic data set and transmits it to the client (step 1126).

14. 14.
El motor de procesado del cliente transforma los datos del conjunto de datos dinámicos basándose en instrucciones de procesado del archivo de plantillas estáticas y acumula los datos transformados y el contenido estático del punto 10 (etapa 1128); y The client's processing engine transforms the data in the dynamic data set based on processing instructions from the static template file and accumulates the transformed data and the static content of point 10 (step 1128); Y

15. fifteen.
Para contenido que cambia con el tiempo, tal como una página de rendimiento de fabricación en tiempo real, el motor de procesado del cliente repite los puntos 12 a 14 siempre que la página web se mantenga abierta (etapa 1130). For content that changes over time, such as a real-time manufacturing performance page, the customer's processing engine repeats points 12 through 14 as long as the web page is kept open (step 1130).

Las etapas anteriores se centran en las interacciones entre el archivo de plantillas estáticas, el conjunto de datos dinámicos, el motor de procesado del cliente y el canal de comunicación gestionado. En implementaciones reales, es probable que se carguen archivos de recursos estáticos adicionales, tales como archivos CSS (Hojas de Estilo en Cascada), archivos de imágenes, etcétera, o bien directamente, tal como a través de referencias en la página web de arranque, o bien indirectamente como solicitudes de recursos del motor de procesado del cliente a través de un canal de comunicación gestionado. Debe observarse también que una página de arranque puede remitir a más de un archivo de plantillas estáticas, en cuyo caso los puntos 7 a 9 se repetirán para cada archivo de plantillas estáticas. De manera similar, puede haber más de un conjunto de datos dinámicos asociado a un archivo de plantillas estáticas dado, en cuyo caso se repetirán los puntos 11 a 13 hasta que se hayan recibido todos los conjuntos de datos dinámicos. Resultará evidente para los expertos en la materia, que, en las etapas antes descritas, se pueden realizar estas y otras modificaciones sin desviarse con respecto al espíritu y el alcance de esta forma de realización particular. The previous stages focus on the interactions between the static template file, the dynamic data set, the client processing engine and the managed communication channel. In real implementations, additional static resource files are likely to be loaded, such as CSS files (Cascading Style Sheets), image files, etc., or directly, such as through references on the boot web page, or indirectly as requests for resources from the client's processing engine through a managed communication channel. It should also be noted that a start page can refer to more than one static template file, in which case points 7 to 9 will be repeated for each static template file. Similarly, there may be more than one set of dynamic data associated with a given static template file, in which case points 11 to 13 will be repeated until all dynamic data sets have been received. It will be apparent to those skilled in the art, that, in the stages described above, these and other modifications can be made without deviating from the spirit and scope of this particular embodiment.

Haciendo referencia a la FIG. 2, los archivos de recursos estáticos, tales como los archivos de plantillas estáticas 208, el motor de procesado del cliente 206, y otros según se ha mencionado anteriormente, deberían ser almacenados en memoria caché por el cliente 104 siempre que sea posible. El cliente lleva a cabo esto almacenando copias de los archivos de plantillas estáticas, el motor de procesado del cliente, y otros archivos en el ordenador anfitrión 106. Puesto que el recurso es estático y, por lo tanto, no varía, el cliente puede satisfacer solicitudes adicionales para el mismo recurso usando esta copia almacenada, ahorrando tiempo y recursos dentro del dispositivo integrado 102 (que no necesita retransmitir el mismo archivo). El almacenamiento en memoria caché del cliente puede reducir significativamente la carga de trabajo del dispositivo integrado, así como mejorar la sensibilidad del cliente, de manera que es importante que el dispositivo integrado proporcione soporte para el almacenamiento en memoria caché del cliente (por ejemplo, usando encabezamientos HTTP apropiados). Haciendo referencia a la FIG. 11, debe observarse que si la página de arranque transmitida por el dispositivo integrado 102 en la etapa 1106, el motor de procesado del cliente transmitido por el dispositivo integrado en la etapa 1110, y el archivo de plantillas estáticas transmitido por el dispositivo integrado en la etapa 1116 son almacenados en memoria caché por el cliente (tal como debería producirse típicamente), el dispositivo integrado no necesitará transmitir los mismos nuevamente. Debe observarse también que, con el almacenamiento en memoria caché del cliente, el motor de procesado del cliente se recibe una vez y, a continuación, está disponible para cada una de las páginas de arranque cargadas desde el dispositivo integrado. Referring to FIG. 2, static resource files, such as static template files 208, client processing engine 206, and others as mentioned above, should be cached by client 104 whenever possible. The client does this by storing copies of the static template files, the client's processing engine, and other files on the host computer 106. Since the resource is static and therefore does not vary, the client can satisfy Additional requests for the same resource using this stored copy, saving time and resources within the integrated device 102 (which does not need to retransmit the same file). The client's cache can significantly reduce the workload of the integrated device, as well as improve the sensitivity of the client, so it is important that the integrated device provide support for the client's cache (for example, using appropriate HTTP headers). Referring to FIG. 11, it should be noted that if the start page transmitted by the integrated device 102 in step 1106, the client processing engine transmitted by the device integrated in step 1110, and the static template file transmitted by the device integrated in the step 1116 are cached by the client (as should typically occur), the integrated device will not need to transmit them again. It should also be noted that, with the client's cache, the client's processing engine is received once and then available for each of the boot pages loaded from the integrated device.

Haciendo referencia nuevamente a la FIG. 2, debe observarse que el dispositivo integrado 102 no tiene que realizar ningún procesado significativo en relación con su archivo de plantillas estáticas almacenado 208 y los archivos del motor de procesado del cliente 206. Simplemente los transmite al cliente 104. De manera similar, cada conjunto de datos dinámicos 204 requiere un procesado mínimo del dispositivo integrado. Los conjuntos de datos dinámicos son datos (casi) puros con un formateo mínimo; y el motor de procesado del cliente puede leer instrucciones del archivo de plantillas estáticas y transformar los datos de manera correspondiente. Tal como se ha descrito anteriormente, el dispositivo integrado actúa como un servidor de archivos y datos, y el motor de procesado del cliente es responsable de transformar archivos de plantillas estáticas y conjuntos de datos dinámicos en contenido útil. Esta división del trabajo transfiere una gran cantidad de tarea de procesado desde el dispositivo integrado a los clientes de red, mejorando significativamente la escalabilidad de la solución global. Referring again to FIG. 2, it should be noted that the integrated device 102 does not have to perform any significant processing in relation to its stored static template file 208 and the files of the processing engine of the client 206. It simply transmits them to the client 104. Similarly, each set Dynamic data 204 requires minimal processing of the integrated device. Dynamic data sets are (almost) pure data with minimal formatting; and the client's processing engine can read instructions from the static template file and transform the data accordingly. As described above, the integrated device acts as a file and data server, and the client's processing engine is responsible for transforming static template files and dynamic data sets into useful content. This division of labor transfers a large amount of processing task from the integrated device to the network clients, significantly improving the scalability of the global solution.

Rebote de archivos File Bounce

Otra característica de varias formas de realización de la presente invención es la capacidad de leer archivos arbitrariamente grandes del ordenador anfitrión (incluyendo la lectura de dichos archivos de cualesquiera sistemas de archivos accesibles para el ordenador anfitrión) y de escribir archivos arbitrariamente grandes en el ordenador anfitrión (incluyendo la escritura o el almacenamiento de dichos archivos en cualesquiera sistemas de archivos accesibles para el ordenador anfitrión y la abertura de dichos archivos en el ordenador anfitrión). Por ejemplo, el usuario puede desear almacenar un informe generado por el cliente (por ejemplo, un informe generado por el motor de procesado del cliente) en el ordenador anfitrión para acceder al mismo posteriormente o para archivarlo. Como ejemplo adicional, un dispositivo integrado puede necesitar acceder a un archivo que está almacenado en el ordenador anfitrión con el fin de realizar ciertas tareas, pero dispone de limitaciones de recursos que le evitan almacenar el archivo dentro de su memoria. Another feature of several embodiments of the present invention is the ability to read arbitrarily large files from the host computer (including reading said files from any file systems accessible to the host computer) and writing arbitrarily large files on the host computer. (including writing or storing said files in any file systems accessible to the host computer and opening said files in the host computer). For example, the user may wish to store a report generated by the client (for example, a report generated by the client's processing engine) on the host computer for later access or archiving. As an additional example, an integrated device may need to access a file that is stored on the host computer in order to perform certain tasks, but has resource limitations that prevent it from storing the file in its memory.

La implementación de esta característica puede resultar problemática ya que los clientes (por ejemplo, navegadores web) pueden controlar minuciosamente el acceso a sistemas de archivos del ordenador anfitrión por razones de seguridad. La finalidad principal de este control es típicamente evitar que programas potencialmente maliciosos (por ejemplo, JavaScript malicioso) accedan al sistema de archivos. Estas restricciones hacen también que resulte difícil, cuando no imposible, que el motor de procesado del cliente lea y escriba archivos desde y en el ordenador anfitrión por sí mismo, incluso con el permiso explícito del usuario. Los clientes de navegadores web sí permiten típicamente que el usuario conceda permiso para cargar archivos accesibles para el ordenador anfitrión en un servidor HTTP y descargar archivos desde un servidor HTTP al ordenador anfitrión (debería observarse que, en dichas operaciones, podrían participar dispositivos integrados que incluyen servidores HTTP). No obstante, tal como se ha mencionado anteriormente, el dispositivo integrado puede que no disponga de los recursos necesarios para almacenar un archivo completo, o ni siquiera una parte significativa de un archivo, en memoria, ni siquiera durante un periodo de tiempo breve. Esto es así particularmente cuando es deseable que el dispositivo integrado pueda gestionar múltiples archivos de esta manera simultáneamente. Además, tal como se ha mencionado previamente, es necesario un mecanismo para que el contenido (por ejemplo, informes, documentos, hojas de cálculo, etcétera) generado por el motor de procesado del cliente pueda ser almacenado o abierto por el ordenador anfitrión. The implementation of this feature can be problematic since clients (for example, web browsers) can thoroughly control access to file systems on the host computer for security reasons. The main purpose of this control is typically to prevent potentially malicious programs (for example, malicious JavaScript) from accessing the file system. These restrictions also make it difficult, if not impossible, for the client's processing engine to read and write files to and from the host computer itself, even with the explicit permission of the user. Web browser clients do typically allow the user to grant permission to upload files accessible to the host computer on an HTTP server and download files from an HTTP server to the host computer (it should be noted that, in such operations, integrated devices that include HTTP servers). However, as mentioned above, the integrated device may not have the resources necessary to store a complete file, or even a significant part of a file, in memory, even for a short period of time. This is particularly so when it is desirable that the integrated device can manage multiple files in this way simultaneously. In addition, as previously mentioned, a mechanism is necessary so that the content (for example, reports, documents, spreadsheets, etc.) generated by the client's processing engine can be stored or opened by the host computer.

La solución a estos problemas es un sistema y un método que afrontan las restricciones de seguridad antes mencionadas, aunque, al mismo tiempo, permitiendo que dispositivos integrados de recursos limitados lean y escriban archivos arbitrariamente grandes desde y en el ordenador anfitrión (con el permiso del usuario). The solution to these problems is a system and method that address the aforementioned security restrictions, although, at the same time, allowing integrated devices with limited resources to read and write arbitrarily large files to and from the host computer (with the permission of the Username).

El rebote de archivos facilita los siguientes escenarios: File bounce facilitates the following scenarios:

Los archivos del ordenador anfitrión, con el permiso del usuario, se pueden cargar en el cliente, que, con frecuencia, dispondrá de una memoria órdenes de magnitud mayor que el dispositivo integrado. Una vez cargados dentro del cliente, se puede acceder a los archivos y los mismos se pueden manipular a deseo por medio del dispositivo integrado, usando, como su intermediario, el motor de procesado del cliente. The files on the host computer, with the user's permission, can be uploaded to the client, which will often have memory orders larger than the integrated device. Once loaded into the client, the files can be accessed and they can be manipulated at will by means of the integrated device, using, as its intermediary, the client's processing engine.

El contenido generado por el cliente (típicamente por medio del funcionamiento del motor de procesado del cliente como proxy para el dispositivo integrado), con el permiso del usuario, se puede almacenar o abrir como un archivo en el ordenador anfitrión. The content generated by the client (typically through the operation of the client's processing engine as a proxy for the integrated device), with the user's permission, can be stored or opened as a file on the host computer.

Con el rebote de archivos, el cliente envía el archivo (es decir, el contenido del archivo) al dispositivo integrado en una serie de uno o más paquetes, que el dispositivo integrado simplemente “hace rebotar” de vuelta al cliente (de aquí el nombre “rebote de archivos”). El dispositivo integrado conserva únicamente un paquete dado durante el tiempo que se tarda en hacer rebotar ese paquete de vuelta al cliente, después de lo cual el paquete se descarta. De este modo, el dispositivo integrado no necesita almacenar el archivo completo, y realiza un procesado mínimo sobre los paquetes. Los paquetes pueden tener un tamaño arbitrario, y el dispositivo integrado únicamente necesita reservar recursos de memoria suficientes para almacenar en memoria intermedia un único paquete cada vez (aunque se puede mejorar el rendimiento almacenando en memoria intermedia simultáneamente múltiples paquetes). Cuando se “hace rebotar” simultáneamente más de un archivo, se dice que cada archivo usa un “canal” de rebote de archivos diferente. With the rebound of files, the client sends the file (that is, the content of the file) to the device integrated in a series of one or more packages, which the integrated device simply "bounces" back to the client (hence the name "Bouncing files"). The integrated device retains only a given package for the time it takes to bounce that package back to the customer, after which the package is discarded. In this way, the integrated device does not need to store the entire file, and performs minimal processing on the packages. The packages can have an arbitrary size, and the integrated device only needs to reserve enough memory resources to buffer only one package at a time (although performance can be improved by storing multiple packages simultaneously in the buffer). When more than one file is "bounced" simultaneously, each file is said to use a different "channel bounce" channel.

El rebote de archivos se podría realizar haciendo que el cliente envíe un paquete (es decir, una parte del archivo) al dispositivo integrado, de manera que el dispositivo integrado envía el paquete de vuelta al cliente y espera a que el cliente envíe el siguiente paquete, y el proceso se repite hasta que no haya más paquetes a enviar (es decir, se ha “hecho rebotar” el archivo completo). No obstante, no todos los protocolos y/o clientes de comunicación soportan este tipo de comportamiento. Por ejemplo, un protocolo de comunicación según se especifica o según se implementa (tal como el HTTP) podría requerir que el cliente enviase su solicitud completa (es decir, el archivo completo) antes de que el servidor (es decir, el dispositivo integrado) pueda comenzar a enviar su respuesta. Por lo tanto, una solución más generalizada es usar dos conexiones cooperativas para lograr un resultado similar: los paquetes recibidos desde el cliente a través de la primera conexión se devuelven al cliente a través de la segunda conexión, tal como se describe posteriormente y según se ilustra en la FIG. 12 y la FIG. 13. The file bounce could be done by having the client send a package (that is, a part of the file) to the integrated device, so that the integrated device sends the package back to the client and waits for the client to send the next package , and the process is repeated until there are no more packets to send (that is, the entire file has been "bounced"). However, not all communication protocols and / or clients support this type of behavior. For example, a communication protocol as specified or as implemented (such as HTTP) could require the client to send its complete request (i.e., the complete file) before the server (i.e. the integrated device) I can start sending your reply. Therefore, a more generalized solution is to use two cooperative connections to achieve a similar result: packets received from the client through the first connection are returned to the client through the second connection, as described below and as described illustrated in FIG. 12 and FIG. 13.

En una forma de realización de la invención, las etapas para almacenar (es decir, escribir) un archivo generado por el cliente en el ordenador anfitrión se muestran en la FIG. 12, y se describen en líneas generales de forma más detallada posteriormente. Resultará evidente para los expertos en la materia que, en las etapas descritas en el presente caso, se pueden aplicar varias modificaciones sin desviarse con respecto al espíritu y el alcance de esta forma de realización. In an embodiment of the invention, the steps for storing (ie writing) a file generated by the client on the host computer are shown in FIG. 12, and are described in general lines in more detail later. It will be apparent to those skilled in the art that, in the stages described in the present case, several modifications can be applied without deviating from the spirit and scope of this embodiment.

1. one.
El usuario realiza una solicitud que invocará el rebote de archivos de alguna manera específica de la aplicación (etapa 1202). The user makes a request that will invoke the rebound of files in some specific way of the application (step 1202).

2. 2.
El motor de procesado del cliente usa un canal de comunicación gestionado para solicitar una ID de canal de rebote de archivos (cada ID de canal reserva recursos en el dispositivo integrado, incluyendo los recursos para dos conexiones HTTP) (etapa 1204). The client's processing engine uses a managed communication channel to request a file bounce channel ID (each channel ID reserves resources on the integrated device, including resources for two HTTP connections) (step 1204).

3. 3.
El dispositivo integrado busca una ID de canal disponible (etapa 1206). The integrated device searches for an available channel ID (step 1206).

Si tiene una ID de canal disponible, marca el canal correspondiente como reservado. If you have a channel ID available, mark the corresponding channel as reserved.

Si no tiene una ID de canal disponible, en este momento no se puede realizar un rebote de archivo (se envía una respuesta apropiada al cliente, el cual, a su vez, visualiza un mensaje para el usuario, y el proceso finaliza aquí). If you do not have a channel ID available, a file bounce cannot be performed at this time (an appropriate response is sent to the client, which, in turn, displays a message to the user, and the process ends here).

4. Four.
El dispositivo integrado transmite la ID de canal correspondiente al canal reservado en el punto anterior 3 al cliente (etapa 1208). The integrated device transmits the channel ID corresponding to the channel reserved in the previous point 3 to the client (step 1208).

5. 5.
Si todavía no se ha generado el archivo a almacenar (por ejemplo, un informe), el motor de procesado del cliente realiza cualquier acción necesaria para generar el archivo (etapa 1210). If the file to be stored has not yet been generated (for example, a report), the client's processing engine performs any necessary action to generate the file (step 1210).

6. 6.
El motor de procesado del cliente usa un canal de comunicación gestionado para iniciar un POST del archivo generado, junto con la ID de canal y cualesquiera otros metadatos asociados (por ejemplo, nombre de archivo, tamaño de archivo, tipo MIME de archivo, etcétera) hacia el dispositivo integrado. Debe observarse que el dispositivo integrado coloca los datos de archivos (es decir, contenido, no metadatos) incluidos en este POST en una memoria intermedia asociada a la ID de canal especificada (etapa 1212). The client's processing engine uses a managed communication channel to initiate a POST of the generated file, along with the channel ID and any other associated metadata (for example, file name, file size, MIME type of file, etc.) towards the integrated device. It should be noted that the integrated device places the file data (ie, content, not metadata) included in this POST in a buffer associated with the specified channel ID (step 1212).

7. 7.
El motor de procesado del cliente al mismo tiempo emite una solicitud GET que incluye la ID de canal como parámetro de URL para iniciar la recuperación del archivo que se está haciendo rebotar. Esta solicitud se realiza a través de un marco flotante (iframe) oculto en la página web para separar claramente la solicitud GET de la solicitud POST. Algunos clientes pueden plantear restricciones sobre la abertura del marco flotante por acción del programa, en cuyo caso, para activar su creación se puede usar una acción del usuario tal como un clic de un botón (etapa 1214). The client's processing engine at the same time issues a GET request that includes the channel ID as a URL parameter to initiate the recovery of the file being bounced. This request is made through a floating frame (iframe) hidden on the website to clearly separate the GET request from the POST request. Some clients may impose restrictions on the opening of the floating frame per program action, in which case, a user action such as a click of a button can be used to activate its creation (step 1214).

8. 8.
El dispositivo integrado transmite los encabezamientos HTTP apropiados en respuesta a la solicitud GET del punto 7 anterior, incluyendo un encabezamiento Disposición de Contenido HTTP para el archivo que está haciendo rebotar. La primera parte del archivo también puede ser transmitida por el dispositivo integrado en este momento. Consúltese el uso de la memoria intermedia según se describe en los puntos 10 y 11 posteriores (etapa 1216). The integrated device transmits the appropriate HTTP headers in response to the GET request of item 7 above, including an HTTP Content Layout header for the file it is bouncing. The first part of the file can also be transmitted by the integrated device at this time. Refer to the use of the buffer as described in points 10 and 11 below (step 1216).

9. 9.
Cuando el cliente (navegador) recibe el encabezamiento de Disposición de Contenido, abre un recuadro de diálogo que permite que el usuario seleccione si el archivo se debería abrir o memorizar en el ordenador anfitrión cuando se haya completado la descarga (etapa 1218). When the client (browser) receives the Content Disposition heading, it opens a dialog box that allows the user to select whether the file should be opened or memorized on the host computer when the download is complete (step 1218).

10. 10.
Como consecuencia de la solicitud de POST iniciada en el punto 6 anterior, el dispositivo integrado recibe del cliente datos que equivalen hasta una ventana de TCP, los cuales se sitúan en una memoria intermedia asociada a la ID de canal especificada (etapa 1220). As a result of the POST request initiated in point 6 above, the integrated device receives data equivalent to a TCP window from the client, which is placed in a buffer associated with the specified channel ID (step 1220).

11. eleven.
El dispositivo integrado extrae datos (es decir, contenido de archivo) de la memoria intermedia asociada a la ID de canal especificada (véase el punto 10 anterior) y los transmite al cliente (a través de la respuesta GET iniciada en el punto 7 anterior) (etapa 1222). The integrated device extracts data (i.e. file content) from the buffer associated with the specified channel ID (see point 10 above) and transmits it to the client (through the GET response initiated in point 7 above) (step 1222).

12. 12.
Los puntos 10 y 11 anteriores se repiten hasta que se ha “hecho rebotar” el archivo completo, momento en el que el archivo será abierto o memorizado en el ordenador anfitrión (dependiendo de la selección del usuario en el punto 9 anterior) (etapa 1224). Points 10 and 11 above are repeated until the entire file has been "bounced", at which time the file will be opened or stored on the host computer (depending on the user's selection in point 9 above) (step 1224 ).

13. 13.
El dispositivo integrado marca la ID de canal como libre (etapa 1226). The integrated device marks the channel ID as free (step 1226).

14. 14.
El dispositivo integrado envía una respuesta apropiada (específica de la aplicación) al cliente para confirmar que se ha completado la solicitud POST del punto 6 anterior (etapa 1228). The integrated device sends an appropriate response (application specific) to the customer to confirm that the POST request of item 6 above has been completed (step 1228).

En una forma de realización de la invención, las etapas para cargar (es decir, leer) un archivo desde el ordenador anfitrión al cliente (navegador web) se muestran en la FIG. 13, y se describen en líneas generales de forma más detallada posteriormente. Resultará evidente para los expertos en la materia que, en las etapas descritas en el presente caso, se pueden aplicar varias modificaciones sin desviarse con respecto al espíritu y el alcance de esta forma de realización. In an embodiment of the invention, the steps to upload (ie read) a file from the host computer to the client (web browser) are shown in FIG. 13, and are described in general lines in more detail later. It will be apparent to those skilled in the art that, in the stages described in the present case, several modifications can be applied without deviating from the spirit and scope of this embodiment.

1. one.
El usuario navega a una página web que invocará el rebote de archivos para seleccionar (y finalmente cargar) un archivo desde el ordenador anfitrión. A esta página se le hace referencia como madre (etapa 1302). The user navigates to a web page that will invoke the file bounce to select (and finally upload) a file from the host computer. This page is referred to as a mother (step 1302).

2. 2.
El cliente se conecta al dispositivo integrado y solicita la página web madre (etapa 1304). The client connects to the integrated device and requests the mother web page (step 1304).

3. 3.
El dispositivo integrado transmite la madre al cliente, que contiene un marco flotante (iframe) (al que se hace referencia como hijo). Debe observarse que el hijo se usa para seleccionar el archivo y aplicarle un POST y la madre se usa para aplicar al archivo un GET y acceder al mismo (etapa 1306). The integrated device transmits the mother to the client, which contains a floating frame (iframe) (referred to as a child). It should be noted that the child is used to select the file and apply a POST and the mother is used to apply a GET to the file and access it (step 1306).

4. Four.
El cliente solicita el contenido del cuadro flotante (es decir, el hijo) del dispositivo integrado (etapa 1308). The client requests the contents of the floating frame (i.e. the son) of the integrated device (step 1308).

5. 5.
El dispositivo integrado transmite el hijo (que incluye un control de carga de archivos basado en formularios HTML que se usará para seleccionar el archivo a cargar) hacia el cliente (etapa 1310). The integrated device transmits the child (which includes a file upload control based on HTML forms that will be used to select the file to load) to the client (step 1310).

6. 6.
El motor de procesado del cliente usa un canal de comunicación gestionado (desde el hijo) para solicitar una ID de canal de rebote de archivos desde el dispositivo integrado (cada ID de canal reserva recursos en el dispositivo integrado, incluyendo los recursos para dos conexiones HTTP) (etapa 1312). The client's processing engine uses a managed communication channel (from the child) to request a file bounce channel ID from the integrated device (each channel ID reserves resources on the integrated device, including resources for two HTTP connections ) (step 1312).

7. 7.
El dispositivo integrado busca una ID de canal disponible (etapa 1314). The integrated device searches for an available channel ID (step 1314).

Si tiene una ID de canal disponible, marca el canal correspondiente como reservado. If you have a channel ID available, mark the corresponding channel as reserved.

Si no tiene una ID de canal disponible, no se puede realizar un rebote de archivo en este momento (se envía una respuesta apropiada al hijo, el cual, a su vez, visualiza un mensaje para el usuario, y el proceso finaliza aquí). If you do not have a channel ID available, a file bounce cannot be performed at this time (an appropriate response is sent to the child, which, in turn, displays a message to the user, and the process ends here).

8. 8.
El dispositivo integrado transmite la ID de canal correspondiente al canal reservado en el punto 7 anterior al cliente (etapa 1316). The integrated device transmits the channel ID corresponding to the channel reserved in point 7 before the client (step 1316).

9. 9.
El hijo almacena la ID de canal en un campo oculto dentro del formulario HTML que contiene el control de carga de archivo (lo cual provoca que se cargue con el resto del formulario posteriormente) (etapa 1318). The child stores the channel ID in a hidden field within the HTML form that contains the file upload control (which causes it to be loaded with the rest of the form later) (step 1318).

10. 10.
El usuario selecciona el archivo deseado del ordenador anfitrión con el control de carga de archivos, y hace clic en un botón de confirmación cuando el archivo ha sido seleccionado (1320). The user selects the desired file from the host computer with the file upload control, and clicks on a confirmation button when the file has been selected (1320).

11. eleven.
El hijo notifica a la madre que el archivo está preparado para hacerlo rebotar y proporcionar la ID de canal a la madre (etapa 1322). The child notifies the mother that the file is prepared to bounce it and provide the mother's channel ID (step 1322).

12. 12.
Tras haber recibido una notificación por parte del hijo, la madre usa un canal de comunicación gestionado para iniciar una solicitud GET con el fin de recuperar el archivo desde el dispositivo integrado. El dispositivo integrado coloca esta solicitud en espera y aguarda a los datos de archivo del hijo (etapa 1324). After receiving a notification from the child, the mother uses a managed communication channel to initiate a GET request in order to recover the file from the integrated device. The integrated device places this request on hold and awaits the child's file data (step 1324).

13. 13.
El hijo usa una solicitud POST convencional (es decir, no se requiere un canal de comunicación gestionado) para iniciar la presentación del formulario (debe observarse que, debido al control de carga de archivos basado en formularios HTML, la presentación del formulario incluye el archivo). Debe observarse que el dispositivo integrado coloca los datos del archivo (es decir, contenido, no metadatos) incluidos en este POST en una memoria intermedia asociada a la ID de canal especificada (etapa 1326). The child uses a conventional POST request (that is, a managed communication channel is not required) to initiate the submission of the form (it should be noted that, due to file upload control based on HTML forms, the submission of the form includes the file ). It should be noted that the integrated device places the data in the file (ie, content, not metadata) included in this POST in a buffer associated with the specified channel ID (step 1326).

14. 14.
El dispositivo integrado transmite los encabezamientos HTTP apropiados hacia la madre en respuesta a la solicitud GET del punto 12 anterior. En este momento el dispositivo integrado también puede transmitir la The integrated device transmits the appropriate HTTP headers to the mother in response to the GET request of item 12 above. At this time the integrated device can also transmit the

primera parte del archivo. Consúltese el uso de la memoria intermedia según se describe en los puntos 15 y 16 a continuación (etapa 1328). First part of the file. Refer to the use of the buffer as described in points 15 and 16 below (step 1328).

15. fifteen.
Como consecuencia de la solicitud POST iniciada en el punto 13 anterior, el dispositivo integrado recibe datos equivalentes hasta a una ventana de TCP, desde el hijo, y los coloca en una memoria intermedia asociada a la ID de canal especificada (etapa 1330). As a consequence of the POST request initiated in item 13 above, the integrated device receives data equivalent to a TCP window, from the child, and places it in a buffer associated with the specified channel ID (step 1330).

16. 16.
El dispositivo integrado extrae datos (es decir, contenido del archivo) de la memoria intermedia asociada a la ID de canal especificada (véase el punto 15 anterior) y los transmite a la madre (etapa 1332). The integrated device extracts data (ie, file contents) from the buffer associated with the specified channel ID (see item 15 above) and transmits it to the mother (step 1332).

17. 17.
Los puntos 15 y 16 anteriores se repiten hasta que se haya “hecho rebotar” el archivo completo, momento en el cual el archivo completo ha sido cargado en la madre, donde el motor de procesado del cliente puede acceder a y manipular el mismo libremente (etapa 1334). Points 15 and 16 above are repeated until the entire file has been "bounced", at which time the complete file has been loaded into the mother, where the client's processing engine can access and manipulate it freely (stage 1334).

18. 18.
El dispositivo integrado marca la ID de canal como libre (etapa 1336). The integrated device marks the channel ID as free (step 1336).

19. 19.
El dispositivo integrado envía una respuesta apropiada (específica de aplicación) al hijo para confirmar que se ha completado la solicitud POST del punto 13 anterior (etapa 1338). The integrated device sends an appropriate response (application specific) to the child to confirm that the POST request of item 13 above (step 1338) has been completed.

Debe observarse que en ambos ejemplos descritos anteriormente en líneas generales, únicamente es necesario que resida en el dispositivo integrado una parte muy pequeña del archivo en cualquier momento. Por ejemplo, usando el rebote de archivos, se puede leer o escribir un archivo de 10 MB (o mayor) con solo una memoria intermedia RAM de 10 KB (o menor) en el dispositivo integrado, ofreciendo una reducción de 1.000 veces (o mayor) de la memoria requerida para el dispositivo integrado. It should be noted that in both examples described above in general, it is only necessary that a very small part of the file reside at the integrated device at any time. For example, using file bouncing, you can read or write a file of 10 MB (or larger) with only a RAM buffer of 10 KB (or less) on the integrated device, offering a reduction of 1,000 times (or greater) ) of the memory required for the integrated device.

El rebote de archivos puede usar la ventana de TCP (que controla el número de bytes de datos que se pueden transmitir a través de una conexión dada sin un acuse de recibo desde el receptor) para proporcionar un control de flujo automático y un grado de sincronización entre dos conexiones cooperativas usadas para implementar un canal de rebote de archivos. A medida que se cargan datos en el dispositivo integrado, se llena la ventana TCP de la conexión POST del dispositivo integrado, y a medida que se descargan datos en el cliente a través de la conexión GET, se vacía la ventana TCP de la conexión POST del dispositivo integrado. De esta manera, la ventana TCP de la conexión POST se puede usar para “marcar el ritmo” del rebote del archivo. Esto permite una vinculación moderada entre las dos conexiones HTTP asociadas a un canal de rebote de archivos en el dispositivo integrado. El cliente únicamente transmitirá datos al dispositivo integrado (a través de la conexión POST) si el dispositivo integrado tiene espacio de memoria intermedia dentro de su ventana TCP de la conexión POST, y el dispositivo integrado simplemente transmitirá datos al cliente (a través de la conexión GET) todo lo rápido que pueda (según lo permita la ventana TCP análoga del cliente). The file bounce can use the TCP window (which controls the number of bytes of data that can be transmitted over a given connection without an acknowledgment from the receiver) to provide automatic flow control and a degree of synchronization between two cooperative connections used to implement a file bounce channel. As data is loaded into the integrated device, the TCP window of the POST connection of the integrated device is filled, and as data is downloaded to the client through the GET connection, the TCP window of the POST connection of the integrated device is emptied. integrated device In this way, the TCP window of the POST connection can be used to “set the pace” of the file bounce. This allows a moderate link between the two HTTP connections associated with a file bounce channel on the integrated device. The client will only transmit data to the integrated device (through the POST connection) if the integrated device has intermediate memory space within its TCP window of the POST connection, and the integrated device will simply transmit data to the client (through the connection GET) as fast as you can (as allowed by the client's analog TCP window).

Este uso de dos conexiones HTTP cooperativas hace que el rebote de archivos resulte algo inusual. Por ejemplo, los servidores HTTP normalmente gestionan cada conexión de manera independiente; mientras que el rebote de archivos utiliza un grado de coordinación y cooperación entre las dos conexiones HTTP que participan en un canal dado de rebote de archivos (esencialmente están “emparejadas”). Debe observarse que, debido a que las dos conexiones HTTP usadas en el rebote de archivos funcionan simultáneamente, los canales de comunicación gestionados descritos en esta sección usan una comunicación asíncrona. This use of two cooperative HTTP connections makes file bouncing somewhat unusual. For example, HTTP servers typically manage each connection independently; while file bouncing uses a degree of coordination and cooperation between the two HTTP connections that participate in a given file bounce channel (they are essentially "paired"). It should be noted that, because the two HTTP connections used in file bounce work simultaneously, the managed communication channels described in this section use asynchronous communication.

Otro aspecto inusual del rebote de archivos es cómo trata el contenido (los archivos). Normalmente, los archivos se almacenan en su totalidad dentro del servidor HTTP. Incluso los archivos generados dinámicamente se pueden considerar en general que tienen una existencia continua, en el sentido de que el servidor puede generar una copia del archivo según se necesite. No obstante, con el rebote de archivos, los archivos rebotados son completamente transitorios desde la perspectiva del servidor (es decir, del dispositivo integrado). Una vez que se ha transmitido un paquete dado desde el dispositivo integrado (y el cliente ha acusado su recibo), el mismo desaparece desde la perspectiva del dispositivo integrado (ya no es necesario). Another unusual aspect of file bouncing is how it treats content (files). Normally, the files are stored entirely within the HTTP server. Even dynamically generated files can generally be considered to have a continuous existence, in the sense that the server can generate a copy of the file as needed. However, with bouncing files, bounced files are completely transient from the perspective of the server (that is, the integrated device). Once a given packet has been transmitted from the integrated device (and the customer has acknowledged its receipt), it disappears from the perspective of the integrated device (it is no longer necessary).

Los ejemplos dados usan pares de conexiones HTTP; no obstante, es también posible usar conexiones FTP para el rebote de archivos. Los expertos en la materia percibirán que son posibles varias combinaciones de tipos de conexión. The examples given use pairs of HTTP connections; however, it is also possible to use FTP connections for file bouncing. Those skilled in the art will perceive that various combinations of connection types are possible.

Es interesante echar una mirada a resultados basados en el tiempo registrados a partir de una implementación de prueba de generación de contenido del lado del cliente combinada con rebote de archivos. Un ordenador anfitrión (con un procesador Pentium® D de 3 GHz de Intel Corporation) y un dispositivo integrado (con un núcleo ARM920T® de 200 MHz de ARM Limited) se conectaron a través de una red de área local (Ethernet de 100 Mbps). El cliente (navegador web Internet Explorer® 6 de Microsoft Corporation) recuperó una página de arranque, un motor de procesado del cliente, un archivo de plantillas estáticas (para generar un informe de Formato de Texto Enriquecido) y un conjunto de datos dinámicos del dispositivo integrado, usando canales de comunicación gestionados, según resultó apropiado, en aproximadamente 4 segundos, después de lo cual el cliente generó un informe de 1.000 páginas (3,6 MB) en aproximadamente 35 segundos, seguido por la participación del cliente y del dispositivo integrado en una sesión de rebote de archivos para memorizar el informe en el sistema de archivos del ordenador anfitrión en aproximadamente 8 segundos. It is interesting to take a look at the time-based results recorded from a client-side content generation test implementation combined with file bounce. A host computer (with a Pentium® D 3 GHz processor from Intel Corporation) and an integrated device (with an ARM920T® 200 MHz core from ARM Limited) were connected through a local area network (100 Mbps Ethernet) . The client (Internet Explorer® 6 web browser from Microsoft Corporation) retrieved a startup page, a client processing engine, a static template file (to generate a Rich Text Format report) and a set of dynamic device data integrated, using managed communication channels, as appropriate, in approximately 4 seconds, after which the client generated a 1,000-page report (3.6 MB) in approximately 35 seconds, followed by the participation of the client and the integrated device in a file bounce session to memorize the report in the file system of the host computer in approximately 8 seconds.

Una de las ventajas del sistema descrito es la escalabilidad mejorada. Por ejemplo: One of the advantages of the described system is the improved scalability. For example:

El motor de procesado del cliente se puede carga en un número cualquiera de clientes, convirtiéndose cada uno de ellos en otra entidad de procesado en el sistema. Por ejemplo, un dispositivo integrado puede tener 100 clientes, cada uno de los cuales usa el motor de procesado del cliente para transferir trabajo desde el dispositivo integrado. The client's processing engine can be loaded into any number of clients, each of them becoming another processing entity in the system. For example, an integrated device can have 100 clients, each of which uses the client's processing engine to transfer work from the integrated device.

Se puede usar un archivo de plantillas estáticas para generar contenido que se actualiza repetidamente (es decir, elementos dinámicos del contenido se renuevan repetidamente) en periodos de tiempo arbitrarios. Por ejemplo, el motor de procesado del cliente puede usar un archivo de plantillas estáticas para generar una página web que se renueva en tiempo real (por ejemplo, diez veces por segundo) con datos nuevos del dispositivo integrado, al mismo tiempo que se impone una carga mínima sobre el dispositivo integrado. Usando el ejemplo de la FIG. 4 (un conjunto de datos dinámicos de aproximadamente 74 caracteres), la FIG. 5 (un archivo de plantillas estáticas de aproximadamente 817 caracteres), y la FIG. 6 (un documento generado de aproximadamente 2.093 caracteres), y suponiendo que la página web se renueva diez veces por segundo durante un minuto (600 actualizaciones), se puede realizar una comparación entre el motor de procesado del cliente que genera contenido y que requiere aproximadamente 45.000 bytes para ser transmitidos desde el dispositivo integrado al cliente (817 bytes para el archivo de plantillas estáticas y 74 bytes por cada conjunto de datos dinámicos multiplicado por 600 actualizaciones) con el dispositivo integrado que genera el mismo contenido y que requiere la transmisión aproximadamente de 1.256.000 bytes desde el dispositivo integrado al cliente (2.093 caracteres por página multiplicado por 600 actualización). A static template file can be used to generate content that is updated repeatedly (that is, dynamic elements of the content are renewed repeatedly) in arbitrary periods of time. For example, the client's processing engine can use a static template file to generate a web page that is renewed in real time (for example, ten times per second) with new data from the integrated device, while imposing a minimum load on the integrated device. Using the example of FIG. 4 (a set of dynamic data of approximately 74 characters), FIG. 5 (a static template file of approximately 817 characters), and FIG. 6 (a document generated of approximately 2,093 characters), and assuming that the web page is renewed ten times per second for one minute (600 updates), a comparison can be made between the client's processing engine that generates content and that requires approximately 45,000 bytes to be transmitted from the integrated device to the client (817 bytes for the static template file and 74 bytes for each dynamic data set multiplied by 600 updates) with the integrated device that generates the same content and requires the transmission of approximately 1,256,000 bytes from the device integrated to the client (2,093 characters per page multiplied by 600 update).

Se puede usar un archivo de plantillas estáticas para generar contenido de “profundidad” arbitraria, que actúa esencialmente como un “molde de producción en serie” de contenido. Por ejemplo, el motor de procesado del cliente puede usar un archivo de plantillas estáticas para generar cien o incluso mil informes de páginas, donde cada página se genera a partir del archivo de plantillas estáticas y un registro de un conjunto de datos dinámicos de múltiples registro. A static template file can be used to generate arbitrary "depth" content, which essentially acts as a "serial production template" of content. For example, the client's processing engine can use a static template file to generate a hundred or even a thousand page reports, where each page is generated from the static template file and a record of a multi-record dynamic data set. .

La división de recursos estáticos (por ejemplo, el motor de procesado del cliente y los archivos de plantillas estáticas) con respecto a recursos dinámicos (los conjuntos de datos dinámicos), maximiza la cantidad de información almacenable en memoria caché. En general, los únicos recursos que no se pueden almacenar en memoria caché son conjuntos de datos dinámicos, que están compuestos en su totalidad por datos dinámicos The division of static resources (for example, the client's processing engine and static template files) with respect to dynamic resources (dynamic data sets), maximizes the amount of information that can be cached. In general, the only resources that cannot be cached are dynamic data sets, which are entirely composed of dynamic data

– la totalidad del resto de recursos puede ser almacenada típicamente en memoria caché por el cliente. Esto proporciona una ventaja muy significativa con respecto a páginas web dinámicas generadas por el lado del servidor (es decir, por el dispositivo integrado), que no se pueden almacenar en memoria caché pero que todavía podrían contener una gran cantidad de contenido estático. Esto significa también que el dispositivo integrado consume la mayor parte de su tiempo en la tarea central de servir datos dinámicos (a través de conjuntos de datos dinámicos). Esta ventaja se ve amplificada adicionalmente por el uso de datos (casi) puros en el conjunto de datos dinámicos según se ejemplifica en la forma de realización preferida. - All other resources can typically be cached by the client. This provides a very significant advantage over dynamic web pages generated by the server side (that is, by the integrated device), which cannot be cached but could still contain a large amount of static content. This also means that the integrated device consumes most of its time in the central task of serving dynamic data (through dynamic data sets). This advantage is further amplified by the use of (almost) pure data in the dynamic data set as exemplified in the preferred embodiment.

La división entre recursos estáticos y recursos dinámicos proporciona además otras ventajas. Por ejemplo, separa claramente la información de presentación y de estilo (que se halla dentro del archivo de plantillas estáticas) con respecto a los datos (que se hallan dentro del conjunto de datos dinámicos). Esto permite que los dos varíen de manera independiente – los datos de varios conjuntos de datos dinámicos se pueden presentar con el mismo estilo, y un único conjunto de datos dinámicos se puede presentar con varios estilos diferentes. Puede verse un ejemplo de esto último en una comparación entre la FIG. 6 y la FIG. 9, que ilustra cómo se puede usar el mismo conjunto de datos dinámicos (mostrado en la FIG. 4), en combinación con dos archivos diferentes de plantillas estáticas (FIG. 5 y FIG. 8), para generar una salida notablemente diferente (la página web de la FIG. 7 y el informe RTF de la FIG. 10); o, alternativamente, cómo se puede usar el mismo conjunto de datos dinámicos (FIG. 4) y archivo de plantillas estáticas (FIG. 5) para generar una salida notablemente diferente (la página web de la FIG. 7 y el informe RTF de la FIG. 10) meramente ordenando al motor de procesado del cliente que genere un tipo diferente de contenido. The division between static resources and dynamic resources also provides other advantages. For example, it clearly separates the presentation and style information (found within the static template file) with respect to the data (found within the dynamic data set). This allows the two to vary independently - data from several dynamic data sets can be presented with the same style, and a single dynamic data set can be presented with several different styles. An example of the latter can be seen in a comparison between FIG. 6 and FIG. 9, which illustrates how the same set of dynamic data can be used (shown in FIG. 4), in combination with two different files of static templates (FIG. 5 and FIG. 8), to generate a noticeably different output (the web page of FIG. 7 and the RTF report of FIG. 10); or, alternatively, how the same set of dynamic data (FIG. 4) and static template file (FIG. 5) can be used to generate a remarkably different output (the web page of FIG. 7 and the RTF report of the FIG. 10) merely ordering the client's processing engine to generate a different type of content.

Además, esta división entre recursos estáticos y recursos dinámicos puede reducir considerablemente el procesado y los recursos requeridos para el cifrado de datos. La seguridad de los datos se puede proporcionar simplemente cifrando los conjuntos de datos dinámicos. Los recursos estáticos típicamente no contienen información privada y se pueden transferir libremente sin cifrado. Por lo tanto, el sistema descrito puede reducir considerablemente la cantidad de información a cifrar. Una vez más, esta ventaja se ve amplificada adicionalmente por el uso de datos (casi) puros en el conjunto de datos dinámicos según se ejemplifica en la forma de realización preferida. In addition, this division between static resources and dynamic resources can significantly reduce the processing and resources required for data encryption. Data security can be provided simply by encrypting dynamic data sets. Static resources typically do not contain private information and can be freely transferred without encryption. Therefore, the described system can considerably reduce the amount of information to be encrypted. Again, this advantage is further amplified by the use of (almost) pure data in the dynamic data set as exemplified in the preferred embodiment.

El sistema descrito mantiene también muy bajos los requisitos de RAM del dispositivo integrado. Por ejemplo, los archivos de recursos estáticos, tales como el motor de procesado del cliente, y los archivos de plantillas estáticas se pueden almacenar en memoria flash u otros medios de almacenamiento de bajo coste, limitándose el uso de la RAM a un número pequeño de “paquetes” excepcionales cuando se está transmitiendo un archivo a un cliente. Además, la separación de recursos estáticos y recursos dinámicos minimiza la cantidad de RAM requerida para construir y almacenar un conjunto de datos dinámicos mientras el mismo está siendo transmitido a un cliente, puesto que los conjuntos de datos dinámicos son en su totalidad datos dinámicos en lugar de una mezcla de contenido estático y dinámico. Además, el uso de rebote de archivos minimiza la memoria (típicamente RAM) requerida por el dispositivo integrado para leer y escribir archivos desde y en el ordenador anfitrión. The described system also keeps the RAM requirements of the integrated device very low. For example, static resource files, such as the client's processing engine, and static template files can be stored in flash memory or other low-cost storage media, limiting the use of RAM to a small number of Exceptional "packets" when a file is being transmitted to a client. In addition, the separation of static resources and dynamic resources minimizes the amount of RAM required to build and store a dynamic data set while it is being transmitted to a client, since the dynamic data sets are entirely dynamic data instead of a mixture of static and dynamic content. In addition, the use of file bouncing minimizes the memory (typically RAM) required by the integrated device to read and write files to and from the host computer.

Aunque el sistema descrito requiere solamente recursos mínimos del dispositivo integrado, la transferencia de la generación de contenido y otro procesado al ordenador anfitrión significa que ello no va en detrimento de la experiencia del usuario. Todo lo contrario, debido a que los ordenadores anfitriones están en general órdenes de magnitud por encima de los dispositivos integrados en términos de memoria y poder de procesado, son capaces de generar contenido que es mucho mayor y más sofisticado que el que sería posible para el dispositivo integrado por sí solo. Although the system described requires only minimal resources from the integrated device, the transfer of content generation and other processing to the host computer means that this is not detrimental to the user experience. On the contrary, because the host computers are generally orders of magnitude above the integrated devices in terms of memory and processing power, they are capable of generating content that is much larger and more sophisticated than what would be possible for the integrated device alone.

Debería indicarse explícitamente que las formas de realización descritas no dependen de empresas, productos, o herramientas de desarrollo específicos, de terceros; y no requieren la instalación de ningún software personalizado, incluyendo ningún módulo plug-in de navegador especial, en el ordenador anfitrión. Son “genéricas” en cuanto a sus requisitos -la totalidad de los archivos requeridos (por ejemplo, el motor de procesado del cliente y el archivo de plantillas estáticas) se puede crear con un simple editor de texto (tal como el editor de texto Bloc de Notas de Microsoft Corporation) y no se imponen requisitos “especiales” sobre el ordenador anfitrión. Por ejemplo, los elementos principales de las formas de realización descritas se han sometido satisfactoriamente a prueba pasando por una gama de clientes HTTP populares, incluyendo los navegadores web Internet Explorer® 6 e Internet Explorer® 7 de Microsoft Corporation, los navegadores web Firefox® 1.5 y Firefox® 2 de Mozilla Corporation, el navegador web Safari™ 2 de Apple Inc., y el navegador web Opera™ 9 de Opera Software ASA. It should be explicitly stated that the described embodiments do not depend on specific companies, products, or development tools, of third parties; and do not require the installation of any custom software, including any special browser plug-in module, on the host computer. They are "generic" in terms of their requirements - all the required files (for example, the client's processing engine and the static template file) can be created with a simple text editor (such as the Bloc text editor from Microsoft Corporation Notes) and "special" requirements are not imposed on the host computer. For example, the main elements of the described embodiments have been successfully tested by passing through a range of popular HTTP clients, including Internet Explorer® 6 and Internet Explorer® 7 web browsers of Microsoft Corporation, Firefox® 1.5 web browsers and Firefox® 2 from Mozilla Corporation, the Safari ™ 2 web browser from Apple Inc., and the Opera ™ 9 web browser from Opera Software ASA.

Además, debería observarse que las formas de realización descritas requieren solamente un soporte HTTP muy básico del dispositivo integrado, lo cual es una consideración importante para dispositivos integrados de recursos limitados. Nada de las formas de realización descritas en la presente memoria requiere soporte para tecnologías adicionales del lado del servidor tales como PHP, CGI, o ASP.NET. Esto ayuda a mantener bajos los requisitos de recursos, permitiendo el uso de varias formas de realización de la invención incluso en sistemas integrados muy “pequeños”. In addition, it should be noted that the described embodiments require only very basic HTTP support of the integrated device, which is an important consideration for integrated devices with limited resources. None of the embodiments described herein require support for additional server-side technologies such as PHP, CGI, or ASP.NET. This helps to keep resource requirements low, allowing the use of various embodiments of the invention even in very "small" integrated systems.

Claims (14)

REIVINDICACIONES 1. Método para permitir que un dispositivo integrado (102) funcione conjuntamente con un cliente (104) en un ordenador anfitrión (106), para acceder a contenido de un archivo accesible para el ordenador anfitrión (106), aunque no directamente accesible para el cliente (104), que comprende las etapas siguientes: 1. Method to allow an integrated device (102) to work together with a client (104) on a host computer (106), to access content from a file accessible to the host computer (106), although not directly accessible to the host customer (104), which comprises the following stages: seleccionar un archivo en el cliente (104); establecer un enlace de comunicaciones entre el cliente (104) y el dispositivo integrado (106); enviar una parte del archivo desde el cliente al dispositivo integrado de un tamaño que encaje dentro de las select a file on the client (104); establish a communication link between the client (104) and the integrated device (106); send a part of the file from the client to the integrated device of a size that fits within the limitaciones de recursos del dispositivo integrado, el cual, a continuación, devuelve la parte al cliente; añadir la parte devuelta a cualesquiera partes previas recibidas en el cliente (104); y repetir las etapas previas de envío y adición hasta que el archivo se haya reconstruido completamente en el cliente resource limitations of the integrated device, which then returns the part to the client; add the returned part to any previous parts received in the customer (104); Y repeat the previous stages of sending and adding until the file has been completely rebuilt on the client (104); en donde el cliente (104) accede al archivo reconstruido como un proxy para el dispositivo integrado. (104); where the client (104) accesses the reconstructed file as a proxy for the integrated device.
2. 2.
Método según la reivindicación 1, en el que los protocolos de enlace de comunicaciones se seleccionan del grupo consistente en HTTP, FTP, y cualquier combinación de los mismos. Method according to claim 1, wherein the communication link protocols are selected from the group consisting of HTTP, FTP, and any combination thereof.
3. 3.
Método según la reivindicación 1, en el que el archivo reconstruido comprende contenido que es por lo menos uno de procesado, transformado, manipulado, y acumulado en el cliente. Method according to claim 1, wherein the reconstructed file comprises content that is at least one of processed, transformed, manipulated, and accumulated on the client.
4. Four.
Método según la reivindicación 1, que comprende además la etapa de usar una pluralidad de enlaces de comunicación para acceder simultáneamente a contenido de múltiples archivos. Method according to claim 1, further comprising the step of using a plurality of communication links to simultaneously access content from multiple files.
5. 5.
Método según la reivindicación 1, en el que el enlace de comunicaciones comprende una primera conexión que envía la parte del archivo y una segunda conexión que devuelve la parte. Method according to claim 1, wherein the communication link comprises a first connection that sends the part of the file and a second connection that returns the part.
6. 6.
Método según la reivindicación 5, que comprende además la etapa de usar una ventana de TCP para proporcionar un control de flujo automático entre la primera conexión y la segunda conexión. Method according to claim 5, further comprising the step of using a TCP window to provide automatic flow control between the first connection and the second connection.
7. 7.
Método según la reivindicación 1, en el que el método se utiliza para aplicaciones de gestión de rendimientos de fabricación. Method according to claim 1, wherein the method is used for manufacturing performance management applications.
8. 8.
Método para permitir que un dispositivo integrado (102) funcione conjuntamente con un cliente (104) en un ordenador anfitrión (106), en donde el cliente tiene acceso limitado a sistemas de archivos accesibles para el ordenador anfitrión, con el fin de generar un archivo en el cliente (104) a almacenar o abrir a través del ordenador anfitrión (106), que comprende las etapas siguientes: Method to allow an integrated device (102) to work together with a client (104) on a host computer (106), where the client has limited access to file systems accessible to the host computer, in order to generate a file in the client (104) to be stored or opened through the host computer (106), which comprises the following steps:
generar contenido de un archivo en una memoria del cliente (104); generate content of a file in a client memory (104); establecer un enlace de comunicaciones entre el cliente (104) y el dispositivo integrado (102); establish a communication link between the client (104) and the integrated device (102); determinar una de las siguientes opciones en el cliente (104): dónde se almacenará el archivo en el sistema de archivos accesible para el ordenador anfitrión y si se abrirá el archivo; determine one of the following options on the client (104): where the file will be stored in the file system accessible to the host computer and if the file will be opened; enviar una parte del archivo desde el cliente al dispositivo integrado de un tamaño que encaje dentro de las limitaciones de recursos del dispositivo integrado (102), el cual devuelve la parte de nuevo al cliente (104), send a part of the file from the client to the integrated device of a size that fits within the resource limitations of the integrated device (102), which returns the part back to the client (104), añadir la parte devuelta a cualesquiera partes previas recibidas en el ordenador anfitrión, y repetir las etapas previas de envío y adición hasta que el archivo completo se haya enviado y devuelto completamente; y, add the returned part to any previous parts received on the host computer, and repeat the previous stages of sending and adding until the complete file has been sent and completely returned; Y, o bien almacenar o bien abrir el archivo completo en concordancia con la etapa de determinación. either store or open the entire file in accordance with the determination stage.
9. 9.
Método según la reivindicación 8, en el que los protocolos de enlace de comunicaciones se seleccionan del grupo consistente en HTTP, FTP, y cualquier combinación de los mismos. Method according to claim 8, wherein the communication link protocols are selected from the group consisting of HTTP, FTP, and any combination thereof.
10. 10.
Método según la reivindicación 8, en el que la etapa de generar contenido comprende generar contenido en tiempo real a partir de datos a medida que esos datos son proporcionados por el dispositivo integrado (102). Method according to claim 8, wherein the step of generating content comprises generating content in real time from data as that data is provided by the integrated device (102).
11. eleven.
Método según la reivindicación 8, en el que la etapa de generar contenido comprende procesar información recibida por el cliente (104) desde el dispositivo integrado (102) de una de las siguientes maneras: transformación, manipulación, acumulación, y cualquier combinación de las mismas. Method according to claim 8, wherein the step of generating content comprises processing information received by the customer (104) from the integrated device (102) in one of the following ways: transformation, manipulation, accumulation, and any combination thereof .
5 12. Método según la reivindicación 8, que comprende además la etapa de usar una pluralidad de enlaces de comunicación para enviar y devolver simultáneamente múltiples archivos. A method according to claim 8, further comprising the step of using a plurality of communication links to simultaneously send and return multiple files.
13. Método según la reivindicación 8, en el que el enlace de comunicaciones comprende una primera conexión que 13. The method of claim 8, wherein the communication link comprises a first connection that envía la parte del archivo y una segunda conexión que devuelve la parte. 10 send the part of the file and a second connection that the part returns. 10 14. Método según la reivindicación 13, que comprende además la etapa de usar una ventana de TCP para proporcionar un control de flujo automático entre la primera conexión y la segunda conexión. 14. The method of claim 13, further comprising the step of using a TCP window to provide automatic flow control between the first connection and the second connection. 15. Método según la reivindicación 8, en el que el método se utiliza para aplicaciones de gestión de rendimientos de 15 fabricación. 15. The method of claim 8, wherein the method is used for manufacturing performance management applications.
ES08767554T 2007-05-07 2008-05-05 METHOD AND SYSTEM TO EXPAND THE CAPACITIES OF INTEGRATED DEVICES THROUGH NETWORK CUSTOMERS. Active ES2368366T3 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US92797807P 2007-05-07 2007-05-07
US927978P 2007-05-07

Publications (1)

Publication Number Publication Date
ES2368366T3 true ES2368366T3 (en) 2011-11-16

Family

ID=39944171

Family Applications (2)

Application Number Title Priority Date Filing Date
ES08767554T Active ES2368366T3 (en) 2007-05-07 2008-05-05 METHOD AND SYSTEM TO EXPAND THE CAPACITIES OF INTEGRATED DEVICES THROUGH NETWORK CUSTOMERS.
ES11174944.6T Active ES2524311T3 (en) 2007-05-07 2008-05-05 Method and system to expand the capabilities of integrated devices through network clients

Family Applications After (1)

Application Number Title Priority Date Filing Date
ES11174944.6T Active ES2524311T3 (en) 2007-05-07 2008-05-05 Method and system to expand the capabilities of integrated devices through network clients

Country Status (7)

Country Link
US (2) US9100248B2 (en)
EP (2) EP2381649B1 (en)
AT (1) ATE519320T1 (en)
CA (2) CA2786004C (en)
ES (2) ES2368366T3 (en)
PL (1) PL2381649T3 (en)
WO (1) WO2008137117A2 (en)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
CN101662460B (en) 2008-08-25 2015-07-15 阿里巴巴集团控股有限公司 Method, system and device for cross-domain communication
US8516361B2 (en) * 2008-12-14 2013-08-20 International Business Machines Corporation Offloading filling of template parameters to client from server
US8219598B1 (en) * 2009-05-11 2012-07-10 Google Inc. Cross-domain communicating using data files
US8239824B2 (en) * 2009-05-18 2012-08-07 National Instruments Corporation Developing a graphical data flow program with multiple models of computation in a web browser
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
WO2011054024A1 (en) * 2009-11-06 2011-05-12 Toby Biddle A usability testing tool
US10721269B1 (en) 2009-11-06 2020-07-21 F5 Networks, Inc. Methods and system for returning requests with javascript for clients before passing a request to a server
KR101083311B1 (en) * 2010-03-29 2011-11-15 한국전자통신연구원 System for detecting malicious script and method for detecting malicious script using the same
US9420049B1 (en) 2010-06-30 2016-08-16 F5 Networks, Inc. Client side human user indicator
US9503375B1 (en) 2010-06-30 2016-11-22 F5 Networks, Inc. Methods for managing traffic in a multi-service environment and devices thereof
US8516364B2 (en) * 2010-08-30 2013-08-20 Sap Ag View model aspects of component objects
US20120151321A1 (en) * 2010-12-09 2012-06-14 Schneider Electric USA, Inc. System for Generating Websites for Products with an Embedded Processor
US9037963B1 (en) 2011-04-22 2015-05-19 Amazon Technologies, Inc. Secure cross-domain web browser communications
EP2710784B1 (en) 2011-05-16 2017-12-06 F5 Networks, Inc A method for load balancing of requests' processing of diameter servers
US8595752B1 (en) * 2011-06-13 2013-11-26 Google Inc. Hybrid application message passing
US8954492B1 (en) * 2011-11-30 2015-02-10 F5 Networks, Inc. Methods for inlining content externally referenced in a web page prior to providing the web page to a requestor and devices thereof
US9386114B2 (en) * 2011-12-28 2016-07-05 Google Inc. Systems and methods for accessing an update server
US8977704B2 (en) * 2011-12-29 2015-03-10 Nokia Corporation Method and apparatus for flexible caching of delivered media
US9417998B2 (en) * 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US10230566B1 (en) 2012-02-17 2019-03-12 F5 Networks, Inc. Methods for dynamically constructing a service principal name and devices thereof
US9020912B1 (en) 2012-02-20 2015-04-28 F5 Networks, Inc. Methods for accessing data in a compressed file system and devices thereof
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US10097616B2 (en) 2012-04-27 2018-10-09 F5 Networks, Inc. Methods for optimizing service of content requests and devices thereof
US9164804B2 (en) 2012-06-20 2015-10-20 Memory Technologies Llc Virtual memory module
US9116820B2 (en) 2012-08-28 2015-08-25 Memory Technologies Llc Dynamic central cache memory
US10033837B1 (en) 2012-09-29 2018-07-24 F5 Networks, Inc. System and method for utilizing a data reducing module for dictionary compression of encoded data
US9578090B1 (en) 2012-11-07 2017-02-21 F5 Networks, Inc. Methods for provisioning application delivery service and devices thereof
US9053085B2 (en) * 2012-12-10 2015-06-09 International Business Machines Corporation Electronic document source ingestion for natural language processing systems
US9497614B1 (en) 2013-02-28 2016-11-15 F5 Networks, Inc. National traffic steering device for a better control of a specific wireless/LTE network
WO2014209255A1 (en) * 2013-06-24 2014-12-31 Empire Technology Development Llc User interface delegation to a delegated device
US9602576B2 (en) 2013-10-16 2017-03-21 Empire Technology Development Llc Control redistribution among multiple devices
US10187317B1 (en) 2013-11-15 2019-01-22 F5 Networks, Inc. Methods for traffic rate control and devices thereof
US9529572B1 (en) 2013-12-20 2016-12-27 Emc Corporation Composable application session parameters
US9170786B1 (en) 2013-12-20 2015-10-27 Emc Corporation Composable context menus
US9756147B1 (en) * 2013-12-20 2017-09-05 Open Text Corporation Dynamic discovery and management of page fragments
US10466872B1 (en) 2013-12-20 2019-11-05 Open Text Corporation Composable events for dynamic user interface composition
US9851951B1 (en) 2013-12-20 2017-12-26 Emc Corporation Composable action flows
US9407697B2 (en) * 2014-06-11 2016-08-02 Wipro Limited System and method for automating identification and download of web assets or web artifacts
US11838851B1 (en) 2014-07-15 2023-12-05 F5, Inc. Methods for managing L7 traffic classification and devices thereof
US10182013B1 (en) 2014-12-01 2019-01-15 F5 Networks, Inc. Methods for managing progressive image delivery and devices thereof
US11895138B1 (en) 2015-02-02 2024-02-06 F5, Inc. Methods for improving web scanner accuracy and devices thereof
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US10505818B1 (en) 2015-05-05 2019-12-10 F5 Networks. Inc. Methods for analyzing and load balancing based on server health and devices thereof
US11350254B1 (en) 2015-05-05 2022-05-31 F5, Inc. Methods for enforcing compliance policies and devices thereof
US10313468B2 (en) * 2015-06-16 2019-06-04 Comcast Cable Communications, Llc Caching of metadata objects
US11757946B1 (en) 2015-12-22 2023-09-12 F5, Inc. Methods for analyzing network traffic and enforcing network policies and devices thereof
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US11178150B1 (en) 2016-01-20 2021-11-16 F5 Networks, Inc. Methods for enforcing access control list based on managed application and devices thereof
US10635160B2 (en) * 2016-05-16 2020-04-28 Tibco Software Inc. Stepback mechanism to develop and diagnose process applications
US11063758B1 (en) 2016-11-01 2021-07-13 F5 Networks, Inc. Methods for facilitating cipher selection and devices thereof
US10505792B1 (en) 2016-11-02 2019-12-10 F5 Networks, Inc. Methods for facilitating network traffic analytics and devices thereof
GB2558876A (en) * 2016-12-02 2018-07-25 Eseye Ltd Provision and retrieval of device status information
US10725799B2 (en) * 2017-02-22 2020-07-28 Microsoft Technology Licensing, Llc Big data pipeline management within spreadsheet applications
US11157690B2 (en) * 2017-02-22 2021-10-26 Microsoft Technology Licensing, Llc Techniques for asynchronous execution of computationally expensive local spreadsheet tasks
US10812266B1 (en) 2017-03-17 2020-10-20 F5 Networks, Inc. Methods for managing security tokens based on security violations and devices thereof
US11122042B1 (en) 2017-05-12 2021-09-14 F5 Networks, Inc. Methods for dynamically managing user access control and devices thereof
US11343237B1 (en) 2017-05-12 2022-05-24 F5, Inc. Methods for managing a federated identity environment using security and access control data and devices thereof
US11720541B2 (en) * 2021-01-05 2023-08-08 Morgan Stanley Services Group Inc. Document content extraction and regression testing
US20230185954A1 (en) * 2021-12-15 2023-06-15 Bank Of America Corporation Transmission of Sensitive Data in a Communication Network
CN114385957A (en) * 2022-03-24 2022-04-22 北京搜狐新媒体信息技术有限公司 Landing page creation method and station building platform
CN115221453B (en) * 2022-09-20 2023-03-10 太平金融科技服务(上海)有限公司深圳分公司 Media resource management method, device, server and medium

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6363164B1 (en) * 1996-05-13 2002-03-26 Cummins-Allison Corp. Automated document processing system using full image scanning
US20030093522A1 (en) * 1995-06-05 2003-05-15 Tetsuro Motoyama Method and system for diagnosis or control of machines
US6092018A (en) * 1996-02-05 2000-07-18 Ford Global Technologies, Inc. Trained neural network engine idle speed control system
US5796633A (en) * 1996-07-12 1998-08-18 Electronic Data Systems Corporation Method and system for performance monitoring in computer networks
JP4046804B2 (en) * 1997-06-26 2008-02-13 富士通株式会社 Server information providing apparatus, computer readable recording medium storing server information providing program, and server information providing method
US20030009563A1 (en) * 1997-07-31 2003-01-09 At&T Corp. Method for client-side inclusion of data elements
US6067558A (en) * 1997-09-18 2000-05-23 Wendt; James Gordon Method and apparatus for providing increased content from a resource constrained device
US6370141B1 (en) 1998-04-29 2002-04-09 Cisco Technology, Inc. Method and apparatus for configuring an internet appliance
US6363422B1 (en) 1998-06-24 2002-03-26 Robert R. Hunter Multi-capability facilities monitoring and control intranet for facilities management system
JP2000020122A (en) 1998-07-06 2000-01-21 Toshiba Corp Plant monitor and control device and computer readable storage medium
US6292801B1 (en) 1998-10-02 2001-09-18 Rene L. Campbell System and method for managing computer and phone network resources
US6446192B1 (en) * 1999-06-04 2002-09-03 Embrace Networks, Inc. Remote monitoring and control of equipment over computer networks using a single web interfacing chip
US6453259B1 (en) * 1999-06-18 2002-09-17 Rockwell Collins, Inc. Vehicle entertainment system having built-in test environment server
US6606665B2 (en) * 1999-09-27 2003-08-12 Rockwell Automation Technologies, Inc. Multiple connection architecture for communication with a computer numerical control resident in a workstation and other networked computer numerical controls
US6871112B1 (en) 2000-01-07 2005-03-22 Advanced Micro Devices, Inc. Method for requesting trace data reports from FDC semiconductor fabrication processes
MXPA02008426A (en) * 2000-02-29 2002-12-13 Pcc Spec Prod Inc Smart machine tool system.
US6918084B1 (en) * 2000-05-09 2005-07-12 Sun Microsystems, Inc. Spawning new repository spaces using information provided in advertisement schema messages
US7065574B1 (en) * 2000-05-09 2006-06-20 Sun Microsystems, Inc. Messaging system using pairs of message gates in a distributed computing environment
US7210099B2 (en) * 2000-06-12 2007-04-24 Softview Llc Resolution independent vector display of internet content
US20020099829A1 (en) * 2000-11-27 2002-07-25 Richards Kenneth W. Filter proxy system and method
US7139814B2 (en) * 2000-12-01 2006-11-21 Intel Corporation Dynamic content delivery to static page in non-application capable environment
US20020083172A1 (en) * 2000-12-21 2002-06-27 Knowles Gregory T. Systems, methods and computer program products for responding to client requests directed to networked embedded devices via proxy services
MY138476A (en) * 2001-02-01 2009-06-30 Honda Motor Co Ltd Apparatus for and method of controlling plant
US20020169871A1 (en) * 2001-05-11 2002-11-14 Cravo De Almeida Marcio Remote monitoring
DE10152765B4 (en) * 2001-07-13 2015-11-12 Siemens Aktiengesellschaft A method for electronically providing services to machines via a data communication link
EP1308810B1 (en) * 2001-09-05 2005-11-16 Mikron Comp-Tec AG A method and an operator support system for assisting an operator in setting machine parameters
US7054847B2 (en) 2001-09-05 2006-05-30 Pavilion Technologies, Inc. System and method for on-line training of a support vector machine
JP3839295B2 (en) * 2001-10-09 2006-11-01 株式会社ジェイテクト Equipment monitoring device
US7219140B2 (en) * 2001-12-05 2007-05-15 Dennis Craig Marl Configuration and management systems for mobile and embedded devices
US7089549B2 (en) * 2002-04-01 2006-08-08 International Business Machines Corp. Updating flash memory
US8074201B2 (en) * 2002-07-10 2011-12-06 National Instruments Corporation Deployment and execution of a program on an embedded device
US7092771B2 (en) * 2002-11-14 2006-08-15 Rockwell Automation Technologies, Inc. Industrial control and monitoring method and system
JP4007452B2 (en) * 2003-10-10 2007-11-14 株式会社Access System and program for displaying device information using browser
US7110918B2 (en) * 2003-11-05 2006-09-19 Shoplogix Inc. Self-contained system and method for remotely monitoring machines
CA2445790C (en) 2003-11-05 2004-11-23 Shoplogix Inc. Self-contained system and method for remotely monitoring machines
WO2005045713A1 (en) 2003-11-05 2005-05-19 Shoplogix, Inc. Self-contained system and method for remotely monitoring machines
US8291309B2 (en) * 2003-11-14 2012-10-16 Rockwell Automation Technologies, Inc. Systems and methods that utilize scalable vector graphics to provide web-based visualization of a device
US7590726B2 (en) * 2003-11-25 2009-09-15 Microsoft Corporation Systems and methods for unifying and/or utilizing state information for managing networked systems
WO2005072405A2 (en) * 2004-01-27 2005-08-11 Transpose, Llc Enabling recommendations and community by massively-distributed nearest-neighbor searching
US7860582B2 (en) * 2004-06-23 2010-12-28 National Instruments Corporation Compact modular embedded device
JP4355639B2 (en) * 2004-09-15 2009-11-04 キヤノン株式会社 Image processing apparatus and control method thereof
US20070028227A1 (en) * 2005-07-26 2007-02-01 Lebowitz Kenneth J Code development system and method
TWI263901B (en) * 2005-07-28 2006-10-11 Lite On Technology Corp Program initiation methods and embedded systems utilizing the same
JP4661574B2 (en) * 2005-12-14 2011-03-30 セイコーエプソン株式会社 Embedded device, electronic device, embedded device control method, control program, and recording medium
US8281386B2 (en) * 2005-12-21 2012-10-02 Panasonic Corporation Systems and methods for automatic secret generation and distribution for secure systems
US20070300150A1 (en) * 2006-06-22 2007-12-27 Lantronix, Inc. Building rich web site applications with an embedded device
US20080002760A1 (en) * 2006-06-28 2008-01-03 John Wallace Nasielski Method and apparatus for automatic distribution of device drivers
US8014308B2 (en) * 2006-09-28 2011-09-06 Microsoft Corporation Hardware architecture for cloud services
US20080104699A1 (en) * 2006-09-28 2008-05-01 Microsoft Corporation Secure service computation
US7853669B2 (en) * 2007-05-04 2010-12-14 Microsoft Corporation Mesh-managing data across a distributed set of devices

Also Published As

Publication number Publication date
US20080281944A1 (en) 2008-11-13
EP2145452A2 (en) 2010-01-20
US9633135B2 (en) 2017-04-25
WO2008137117A2 (en) 2008-11-13
WO2008137117A3 (en) 2009-07-09
CA2686313A1 (en) 2008-11-13
US20150269273A1 (en) 2015-09-24
ATE519320T1 (en) 2011-08-15
CA2786004A1 (en) 2008-11-13
EP2381649A1 (en) 2011-10-26
PL2381649T3 (en) 2015-02-27
EP2145452B1 (en) 2011-08-03
CA2686313C (en) 2012-10-02
ES2524311T3 (en) 2014-12-05
CA2786004C (en) 2015-06-30
EP2381649B1 (en) 2014-08-20
US9100248B2 (en) 2015-08-04

Similar Documents

Publication Publication Date Title
ES2368366T3 (en) METHOD AND SYSTEM TO EXPAND THE CAPACITIES OF INTEGRATED DEVICES THROUGH NETWORK CUSTOMERS.
Souders High-performance web sites
US7958232B1 (en) Dashboard for on-the-fly AJAX monitoring
US8285813B1 (en) System and method for emulating different user agents on a server
US8335982B1 (en) System and method for binding a document object model through JavaScript callbacks
US8849985B1 (en) On-the-fly instrumentation of Web applications, Web-pages or Web-sites
US8954989B1 (en) Flexible, event-driven JavaScript server architecture
US8914774B1 (en) System and method for tagging code to determine where the code runs
US9798524B1 (en) System and method for exposing the dynamic web server-side
Gray Comparison of Web Services, Java-RMI, and CORBA service implementations
CA2506064A1 (en) A system and method for client side rendering of a web page
US8819539B1 (en) On-the-fly rewriting of uniform resource locators in a web-page
US20070083533A1 (en) System and method for designing web sites that perform like conventional software applications
US8566807B1 (en) System and method for accessibility of document object model and JavaScript by other platforms
US20020107917A1 (en) Rapid development in a distributed application environment
US8938491B1 (en) System and method for secure binding of client calls and server functions
Crane et al. Ajax in Practice
US10244020B1 (en) System and method for auto-generating meta-proxies
JP2012128516A (en) Information processing apparatus, data update method and program
Buchanan Developing an Extendable Web-Based Architecture for Honey Bee Data Visualization
Puglisi RESTful Rails Development: Building Open Applications and Services
Frécon Web (-like) Protocols for the Internet of Things
Bueno Development of Unity 3D Module For REST API Integration: Unity 3D and REST API Technology
Srinivasan Web Technology
Homer et al. Distributed data applications with ASP. NET