Nested Request-Response Protocol Network Communication
The nested request-response protocol adapts existing protocols for transactional communication, addressing inefficiencies in coordinating device functions, thereby enhancing software application and data management across networked devices.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- SERVICENOW INC
- Filing Date
- 2022-12-09
- Publication Date
- 2026-06-18
Smart Images

Figure 0007875971000002 
Figure 0007875971000003 
Figure 0007875971000004
Abstract
Description
【Technical Field】 【0001】 Cross - reference to Related Applications This application claims the priority of U.S. Patent Application No. 17 / 579,964, filed on January 20, 2022, and incorporates all of its contents herein by reference. 【Background Art】 【0002】 The form of the remote network management platform may be in the form of a hosted environment that provides service - type application platform (aPaaS) services to users, especially operators of managed networks such as enterprises. Such a service form may be in the form of a web - based portal and / or software application that can be accessed by enterprises and both internal and external users thereof through the computing instances of the remote network management platform. 【0003】 In a managed network environment, the management of the services and interfaces of the remote network management platform usually involves the coordination and maintenance of software applications and related data across multiple computer devices and systems. One aspect of this coordination and maintenance is related to version management and updates that help promote compatibility between network devices where the services are executed, provided, and consumed. 【Summary of the Invention】 【0004】 The exemplary embodiments herein provide systems and methods for enhancing the coordination and maintenance of version and / or update information for software applications and data across multiple computer devices and systems in a managed network. More specifically, when an application or service runs across two or more networked computer devices or systems, proper execution may depend, at least in part, on the compatibility of software versions and / or associated data. For example, incompatibility may arise due to differing update or upgrade schedules between two or more computer devices. To address possible instances of unsynchronized software versions and / or associated data between two or more devices, these devices may, through various forms of communication, detect each other's version status and take measures to ensure and / or coordinate compatibility. Such communication may function as a form of detection that enables two or more devices to establish a baseline of compatible application functionality and / or associated data. Communication may involve, for example, the exchange of functional data and / or other indicators of each device's functionality with respect to an identified set of applications or services. Typical scenarios for network-based applications may include communication between a client and a server, but other configurations are also possible, such as communication between two or more servers or between a controller and an agent. 【0005】 In managed networks, and generally in the context of network-based applications, communication protocols used to support software applications and associated data are widely adopted and implemented. However, these same protocols can also be constraints on operations involving the coordination of functions between computer equipment and systems responsible for the execution of software applications and / or the use / application of associated data. More specifically, web-based and other network-based applications can typically transmit instructions and / or data asynchronously by using individual instances of request-response protocols. In operations such as the coordination of functions between two devices, the asynchronous nature of processes on the devices can make it difficult for these two devices to determine whether the coordination of their respective functional states is correct and / or successful. 【0006】 A common and widely adopted architectural style for non-transactional protocols is the well-known "REST" ("Representational State Transfer") model. A non-exclusive example of a protocol following REST is the widely used "Hypertext Transfer Protocol" ("HTTP"). While individual instances of requests and responses are generally suitable for supporting the operation of web-based and network-based applications (for example, REST and HTTP have considerable "built-in" functionality), single-instance request-response communication may not be suitable for transactional tasks involving the coordination of functionality. These shortcomings can lead to inefficiencies such as operational delays in the detection and coordination of functionality. 【0007】 One approach to address the shortcomings of existing, widely adopted protocols is to design and / or develop a new protocol specifically targeting the transactional nature of coordinating the functions of two or more networked computer devices. However, the inventors recognized that, despite aiming to address the shortcomings of existing protocols, the replacement approach could be impractical or undesirable due to the potentially high barriers to acceptance of replacing existing, widely adopted industry-standard communication protocols with newly identified, unverified protocols. Instead, the inventors devised a novel technique to ensure compatible operation by adapting existing request-response protocols to support transactional communication that is well-suited for coordinating and / or synchronizing the functions of networked devices. Accordingly, exemplary embodiments herein provide a system and method for nesting request-response communications such that stateful transactions are introduced into non-transactional communications. 【0008】 The exemplary embodiments described herein relate to network-based applications and services executed by two computer devices or systems connected by a network or communication system. Network-based applications may include web-based applications, but may also include other types of applications executed through coordination and / or communication between two computer devices. Non-exclusive examples of communication computer devices include client and server, and / or controller and agent computer devices. In some scenarios, the controller computer device may also be a server, and the agent computer device may also be a client. However, other configurations are equally possible, such as between two servers or network devices, two clients, and other peer-to-peer configurations. For illustrative purposes only, in this specification, the two computer devices included in an exemplary embodiment of nested request-response protocol communication are designated as a controller computer device and an agent computer device. This should not be taken as a limitation on other possible configurations of two or more computer devices. 【0009】 Accordingly, a first exemplary embodiment may include a controller computer device comprising one or more processors configured to: send a controller request to an agent computer device on a first instance of a request-response protocol, the controller request including controller data; receive an agent request from the agent computer device on a second instance of the request-response protocol, the agent request including agent data representing the functionality of the agent computer device; store at least a portion of the agent data in memory; and send a controller response to the agent request to the agent computer device on a second instance of the request-response protocol, the controller response acknowledging receipt of the agent request; and receive an agent response from the agent computer device on a first instance of the request-response protocol, the agent response acknowledging receipt of the controller request. 【0010】 A second exemplary embodiment may include an agent computer device comprising: a memory containing agent data representing the functionality of the agent computer device; and one or more processors configured to receive a controller request from a controller computer device on a first instance of a request-response protocol, the controller request containing controller data representing the functionality of the controller computer device; store at least a portion of the controller data in memory; and, after receiving the controller request, send an agent request to the controller computer device on a second instance of the request-response protocol, the agent request containing at least a portion of the agent data; and receive a controller response to the agent request from the controller computer device on a second instance of the request-response protocol, the controller response acknowledging receipt of the agent request; and, after receiving the controller response, send an agent response to the controller computer device on a first instance of the request-response protocol, the agent response acknowledging receipt of the controller request; and send an agent response. 【0011】 A third exemplary embodiment may include a method comprising: sending a controller request from a controller computer device to an agent computer device on a first instance of the request-response protocol, the controller request including controller data representing the functionality of the controller computer device; receiving an agent request from an agent computer device on a second instance of the request-response protocol, the agent request including agent data representing the functionality of the agent computer device, and storing at least a portion of the agent data in the memory of the controller computer device; and sending a controller response to the agent request from the controller computer device to the agent computer device on a second instance of the request-response protocol, the controller response including sending an acknowledgment of receipt of the agent request; and receiving an agent response from an agent computer device on a first instance of the request-response protocol, the agent response including an acknowledgment of receipt of the controller request. 【0012】 In a fourth exemplary embodiment, the product may include a non-temporary computer-readable medium containing program instructions that, when executed by a controller computer device of the computer system, cause the computer system to perform the operations described in the first and / or second exemplary embodiments. 【0013】 In a fourth exemplary embodiment, the computer system may include, in addition to at least one processor, memory and program instructions. The program instructions may be stored in memory and, when executed by at least one processor, cause the computer system to perform the operations described in the first and / or second exemplary embodiment. 【0014】 In a fifth exemplary embodiment, the system may include various means for performing each of the operations of the first, second, and / or third exemplary embodiments. 【0015】 Those skilled in the art will find the above and other embodiments, aspects, advantages, and alternatives apparent by reading the following detailed description, with reference to the accompanying drawings as necessary. Furthermore, since this abstract and other descriptions and drawings contained herein are intended to illustrate embodiments only as examples, many modifications are possible. For example, structural elements and process steps can be rearranged, combined, distributed, removed, or modified while remaining within the scope of embodiments such as those claimed. [Brief explanation of the drawing] 【0016】 [Figure 1] This is a schematic diagram of computer equipment according to an exemplary embodiment. [Figure 2] This is a schematic diagram of a server equipment cluster according to an exemplary embodiment. [Figure 3] This diagram shows a remote network management architecture according to an exemplary embodiment. [Figure 4] This diagram shows a communication environment including a remote network management architecture according to an exemplary embodiment. [Figure 5A] This diagram shows another communication environment, including a remote network management architecture, according to an exemplary embodiment. [Figure 5B] This is a flowchart according to an exemplary embodiment. [Figure 6] This figure shows exemplary device function data and compatibility configurations for two exemplary devices according to an exemplary embodiment. [Figure 7] This figure shows an example of conventional request-response protocol communication between two exemplary devices. [Figure 8]FIG. is a diagram showing an example of nested request-response protocol communication between two exemplary devices according to an exemplary embodiment. [Figure 9] FIG. is a flowchart according to an exemplary embodiment. DETAILED DESCRIPTION OF THE INVENTION 【0017】 This specification describes exemplary methods, devices, and systems. In this specification, it is to be understood that the words "example" and "exemplary" are used to mean "functioning as an example, instance, or illustration". Any embodiment or feature described herein as "example" or "exemplary" is not necessarily construed as being more preferred or advantageous than other embodiments or features, unless otherwise stated. Thus, other embodiments can be utilized and other changes can be made without departing from the scope of the subject matter presented herein. 【0018】 Therefore, the exemplary embodiments described herein are not meant to be limiting. It will be readily understood that the aspects of the present disclosure as described throughout this specification and shown in the drawings can be arranged, substituted, combined, separated, and designed in a wide variety of different configurations. For example, the separation of functions into "client" and "server" components can be implemented in many ways. 【0019】 Furthermore, unless otherwise indicated by context, the features shown in each of the drawings can be used in combination with one another. For this reason, the drawings should generally be understood as depicting aspects of the components of one or more overall embodiments, and it is understood that not all of the features illustrated are necessary for each embodiment. 【0020】 Also, any enumeration of elements, blocks, or steps in this specification or the claims is for purposes of clarification. Thus, such enumeration should not be construed as requiring or implying compliance with a particular arrangement of these elements, blocks, or steps or execution in a particular order. 【0021】 I. Introduction The following discussion is presented as an example in the context of large enterprises. It is to be understood that the various principles of the architecture and operation of the exemplary embodiments herein are not limited by this exemplary context. Also, the various principles of the architecture and operation of the exemplary embodiments are not limited to application to large enterprises. Rather, the exemplary embodiments are applicable and / or extensible to any usage scenario involving client devices, server devices, and other computer devices that can implement services and resources including common and / or adapted software and data components. 【0022】 Large enterprises are complex entities with many interrelated operations. Among these are those found throughout the enterprise, such as human resources (HR), supply chain, information technology (IT), and finance. However, each enterprise also has its own unique operations that lead to the provision of essential capabilities and / or the building of competitive advantages. 【0023】 To support widely implemented operations, enterprises typically use off-the-shelf software applications such as customer relationship management (CRM) and human capital management (HCM) packages. However, custom software applications may also be required to meet the enterprise's own unique requirements. Large enterprises often have dozens or hundreds of these custom software applications. In contrast, the advantages provided by the embodiments herein are not limited to large enterprises and are considered applicable to enterprises or other types of organizations of any size. 【0024】 Many of these software applications are developed by individual departments within a company. These range from simple spreadsheets to custom software tools and databases. However, the proliferation of custom software applications without collaboration with other departments has many drawbacks. This negatively impacts a company's ability to operate and grow, innovate, and meet regulatory requirements. Companies may find it difficult to integrate, streamline, and enhance their operations due to the lack of a single system to integrate their subsystems and data. 【0025】 To efficiently generate custom applications, businesses will benefit from remote-hosted application platforms that eliminate unnecessary development complexities. The goal of such platforms is to reduce time-consuming, iterative application development tasks, allowing software engineers and other individuals to focus on developing high-value, unique features. 【0026】 To achieve this goal, the concept of aPaaS (Application Platform as a Service) will be introduced to intelligently automate enterprise-wide workflows. While the aPaaS system is hosted remotely from the enterprise, it provides secure connectivity to enterprise data, applications, and services. Such aPaaS system offers numerous advantages and characteristics. These advantages and characteristics are expected to improve enterprise operations and workflows in IT, HR, CRM, customer service, application development, and security. 【0027】 aPaaS systems can support the development and execution of Model-View-Controller (MVC) applications. MVC applications enable efficient code reuse and parallel development by separating the representation of information from how it is presented to the user, by dividing each function into three interconnected parts (model, view, and controller). These applications can be web-based and provide create, read, update, and delete (CRUD) functionality. This allows new applications to be built on a common application infrastructure. 【0028】 an aPaaS system can support standardized application components, such as a standardized set of widgets for graphical user interface (GUI) development. Thus, applications built using an aPaaS system will have a common look and feel. Other software components and modules may also be standardized. In some cases, this look and feel can be branded or skinned with a company's custom logo and / or color scheme. 【0029】 aPaaS systems can support the ability to configure application behavior using metadata. This allows for quick adaptation of application behavior to meet specific needs. This approach reduces development time and increases flexibility. Furthermore, aPaaS systems can support GUI tools that simplify metadata creation and management, thereby reducing metadata errors. 【0030】 Because aPaaS systems can support clearly defined interfaces between applications, software developers can avoid unnecessary inter-application dependencies. Therefore, aPaaS systems can implement a service layer where persistent state information and other data are stored. 【0031】 Because aPaaS systems can support a rich set of integration capabilities, applications on the system can interact with legacy and third-party applications. For example, an aPaaS system could support a custom employee training system that integrates with legacy HR, IT, and accounting systems. 【0032】 aPaaS systems can support enterprise-level security. Furthermore, because aPaaS systems can be hosted remotely, security procedures should also be utilized when interacting with enterprise systems or third-party networks and services hosted outside the enterprise. For example, aPaaS systems may be configured to detect and identify common security threats by sharing data among parties such as enterprises. 【0033】 Furthermore, other features, functions, and advantages of aPaaS systems may exist. This description is illustrative and not intended to be limiting in any way. 【0034】 As an example of the aPaaS development process, a software developer might be instructed to create a new application using an aPaaS system. The developer might first define a data model specifying the types of data the application will use and the relationships between them. The developer then inputs (for example, uploads) the data model through the aPaaS system's GUI. The aPaaS system automatically creates all the corresponding database tables, fields, and relationships, which are accessible via an object-oriented service layer. 【0035】 Furthermore, aPaaS systems enable the creation of fully functional applications with client-side interfaces and server-side CRUD logic. These generated applications can serve as a foundation for further user development. This is convenient for developers as they do not need to spend much time on the application's basic functionality. Additionally, since the application can be web-based, it is accessible from any internet-enabled client device. Alternatively or additionally, access to a local copy of the application may be provided, for example, when internet services are unavailable. 【0036】 The MVC architecture discussed as an example in this specification should not be considered limiting in any way to its exemplary embodiments. Other architectural paradigms, such as unidirectional data flow, are similarly possible. 【0037】 Furthermore, aPaaS systems can support a rich set of predetermined functions that can be added to applications. These functions include support for search, email, templates, workflow design, reporting, analytics, social media, scripting, mobile output, and customizable GUIs. 【0038】 Such aPaaS system can represent a GUI in various ways. For example, the server equipment of the aPaaS system may generate a representation of the GUI using a combination of HTML and JAVASCRIPT®. JAVASCRIPT® may include client-side executable code, server-side executable code, or both. The server equipment may transmit or provide this representation to the client equipment so that the client equipment displays it on its screen according to a locally defined appearance and feel. Alternatively, the representation of the GUI may take other forms, such as an intermediate form (e.g., JAVA® bytecode) that the client equipment can use to directly generate graphic output. Other possibilities exist as well. 【0039】 Furthermore, user interactions with GUI elements such as buttons, menus, tabs, sliders, checkboxes, and toggles may also be referred to as "selection," "activation," or "operation," respectively. These terms can be used regardless of whether the interaction with the GUI element is via keyboard, pointing device, touchscreen, or other mechanism. 【0040】 The aPaaS architecture is particularly effective when integrated with an enterprise network and used for managing such networks. The following embodiments describe exemplary aPaaS system architectures and functional aspects, as well as their respective features and advantages. 【0041】 II. Exemplary Computer Equipment and Cloud-Based Computing Environments Figure 1 is a simplified block diagram illustrating computer equipment 100, showing some of the components included in the computer equipment and configured to operate according to the embodiments herein. Computer equipment 100 can be a client device (for example, a device actively operated by a user), a server device (for example, a device that provides computing services to client devices), or any other type of computing platform. Some server devices may occasionally operate as client devices to perform specific operations, and some client devices may have server functionality built in. 【0042】 In this example, the computer device 100 comprises a processor 102, memory 104, a network interface 106, and an input / output unit 108, all of which may be coupled by a system bus 110 or a similar mechanism. In some embodiments, the computer device 100 may also comprise other components and / or peripherals (e.g., removable storage, printer, etc.). 【0043】 The processor 102 may be one or more of any type of computer processing element, such as a central processing unit (CPU), a coprocessor (e.g., a mathematical, graphics, or cryptographic coprocessor), a digital signal processor (DSP), a network processor, and / or an integrated circuit or controller that performs processor operations. In some cases, the processor 102 may be one or more single-core processors. In other cases, the processor 102 may be one or more multi-core processors with multiple independent processing units. The processor 102 may also include register memory for temporarily storing instructions to be executed and associated data, as well as cache memory for temporarily storing recently used instructions and data. 【0044】 Memory 104 may be any form of computer-usable memory, including but not limited to random access memory (RAM), read-only memory (ROM), and non-volatile memory (e.g., flash memory, hard disk drives, semiconductor drives, compact discs (CDs), digital video discs (DVDs), and / or tape storage). Therefore, memory 104 represents both the main memory unit and long-term storage. Other types of memory include biological memory. 【0045】 Memory 104 may store program instructions and / or data on which the program instructions can be executed. For example, memory 104 may store these program instructions in a non-temporary computer-readable medium so that they can be executed by the processor 102 to perform any of the methods, processes, or operations disclosed herein or in the accompanying drawings. 【0046】 As shown in Figure 1, memory 104 may include firmware 104A, kernel 104B, and / or application 104C. Firmware 104A may be program code used to start or begin some or all of the computer equipment 100. Kernel 104B may be an operating system including modules for memory management, processor scheduling and management, input / output, and communication. Kernel 104B may also include device drivers that enable the operating system to communicate with hardware modules of the computer equipment 100 (e.g., memory units, network interfaces, ports, and buses). Application 104C may be one or more user-space software programs such as a web browser or email client, as well as any software libraries used by these programs. Memory 104 may also store data used by the above and other programs and applications. 【0047】 The network interface 106 may be in the form of one or more wired interfaces, such as Ethernet (e.g., Fast Ethernet, Gigabit Ethernet). The network interface 106 may also support communication over one or more non-Ethernet media, such as coaxial cable or power lines, or wide-area media, such as Synchronous Optical Networking (SONET) or Digital Subscriber Line (DSL) technology. Furthermore, the network interface 106 may be in the form of one or more wireless interfaces, such as IEEE 802.11 (Wi-Fi), Bluetooth®, Global Positioning System (GPS), or wide-area wireless interfaces. However, other forms of physical layer interfaces and other types of standard or proprietary communication protocols may be used via the network interface 106. In addition, the network interface 106 may include multiple physical interfaces. For example, some embodiments of the computer device 100 may include Ethernet, Bluetooth®, and Wi-Fi interfaces. 【0048】 The input / output unit 108 can facilitate interaction between the user and peripheral devices with the computer equipment 100. The input / output unit 108 may include one or more types of input devices (keyboard, mouse, touchscreen, etc.). Similarly, the input / output unit 108 may include one or more types of output devices (screen, monitor, printer, and / or one or more light-emitting diodes (LEDs), etc.). As an addition or alternative, the computer equipment 100 can communicate with other devices, for example, by using a Universal Serial Bus (USB) or High Definition Multimedia Interface (HDMI) port interface. 【0049】 In some embodiments, the aPaaS architecture may be supported by the deployment of one or more computer devices, such as computer device 100. The exact physical location, connectivity, and configuration of these computer devices may be known and / or irrelevant to the client devices. Thus, the computer devices may be referred to as “cloud-based” devices that can be housed in various remote data center locations. 【0050】 Figure 2 shows a cloud-based server cluster 200 according to an exemplary embodiment. In Figure 2, the operation of computer equipment (e.g., computer equipment 100) may be distributed among server equipment 202, data storage 204, and router 206, all of which may be connected by a local cluster network 208. The number of server equipment 202, data storage 204, and router 206 in the server cluster 200 may depend on the computing tasks and / or applications assigned to the server cluster 200. 【0051】 For example, server device 202 can be configured to perform various computational tasks of computer device 100. Therefore, computational tasks can be distributed among one or more server devices 202. Such task distribution can reduce the total time required to complete these tasks and return results, as long as these tasks can be executed in parallel. For simplicity, both the server cluster 200 and individual server devices 202 may be referred to as "server devices." This naming is understood to imply that one or more different server devices, data storage devices, and cluster routers may be involved in the operation of the server devices. 【0052】 The data storage 204 may be a data storage array including a drive array controller configured to manage read / write access to multiple groups of hard disk drives and / or semiconductor drives. The drive array controller may also be configured, either alone or in conjunction with the server equipment 202, to manage backups or redundant copies of the data stored in the data storage 204, as protection against drive failures or other types of failures that would prevent one or more server equipment 202 from accessing the data storage 204 units. Other types of memory besides drives may be used. 【0053】 Router 206 may include network equipment configured to provide internal and external communications to the server cluster 200. For example, Router 206 may include one or more packet switching and / or routing devices (including switches and / or gateways) configured to provide (i) network communications between server equipment 202 and data storage 204 via the local cluster network 208, and / or (ii) network communications between the server cluster 200 and other equipment via a communication link 210 to network 212. 【0054】 Furthermore, the configuration of router 206 may be based at least in part on the data communication requirements of server equipment 202 and data storage 204, the latency and throughput of local cluster network 208, the latency, throughput, and cost of communication link 210, and / or other factors that may contribute to the cost, speed, fault tolerance, resilience, efficiency, and / or other design objectives of the system architecture. 【0055】 One possible example is that data storage 204 may include any form of database, such as a Structured Query Language (SQL) database. In such a database, various types of data structures can store information, including, but not limited to, tables, arrays, lists, trees, and tuples. Furthermore, any database in data storage 204 may be monolithic or distributed across multiple physical devices. 【0056】 The server device 202 may be configured to send data to and / or receive data from the data storage 204. This transmission and retrieval may be in the form of SQL queries or other types of database queries, or the output of such queries. Similarly, text, images, videos, and / or audio may be additionally included. Furthermore, the server device 202 may organize the received data as a representation of a web page or web application. Such a representation may be in the form of a markup language such as Hypertext Markup Language (HTML), Extended Markup Language (XML), or any other standardized or proprietary format. Furthermore, the server device 202 may be capable of executing various types of computerized scripting languages, including but not limited to Perl, Python, PHP Hypertext Preprocessor (PHP), Active Server Pages (ASP), and JAVASCRIPT®. Computer program code written in these languages can provide web pages to client devices and facilitate interaction with web pages on client devices. As an alternative or addition, Java® may be used to facilitate the generation of web pages and / or to provide web application functionality. 【0057】 III. Exemplary Remote Network Management Architecture Figure 3 shows a remote network management architecture according to an exemplary embodiment. This architecture includes three main components: a managed network 300, a remote network management platform 320, and a public cloud network 340, all connected by the Internet 350. 【0058】 A. Managed Network The managed network 300 may be an enterprise network used by entities for data storage, as well as for computing and communication tasks. For this purpose, the managed network 300 may comprise client devices 302, server devices 304, a router 306, a virtual machine 308, a firewall 310, and / or a proxy server 312. The client devices 302 may be embodied by computer devices 100, the server devices 304 may be embodied by computer devices 100 or a server cluster 200, and the router 306 may be any type of router, switch, or gateway. 【0059】 A virtual machine 308 may be embodied by one or more of the computer equipment 100 and the server cluster 200. Generally, a virtual machine is an emulation of a computer system that mimics the functions of a physical computer (e.g., processor, memory, and communication resources). A single physical computer system, such as a server cluster 200, can support up to several thousand individual virtual machines. In some embodiments, the virtual machine 308 may be managed by a centralized server equipment or application that facilitates performance and error reporting, in addition to allocating physical computing resources to individual virtual machines. Enterprises often adopt virtual machines to efficiently allocate computing resources as needed. Providers of virtualized computer systems include VMware® and Microsoft®. 【0060】 The firewall 310 may be one or more dedicated routers or server devices that protect the managed network 300 from unauthorized access attempts to internal devices, applications, and services while allowing legitimate communications originating from the managed network 300. The firewall 310 may also provide intrusion detection, web filtering, virus scanning, application layer gateways, and other applications or services. In some embodiments not shown in Figure 3, the managed network 300 may include one or more virtual private network (VPN) gateways for communicating with a remote network management platform 320 (see below). 【0061】 Furthermore, the managed network 300 may comprise one or more proxy servers 312. One embodiment of the proxy server 312 may be a server application that facilitates the communication and movement of data between the managed network 300, the remote network management platform 320, and the public cloud network 340. In particular, the proxy server 312 may be capable of establishing and maintaining a secure communication session with one or more compute instances of the remote network management platform 320. Such a session may enable the remote network management platform 320 to discover and manage the architecture and configuration of the managed network 300 and its components. In some cases, with the assistance of the proxy server 312, the remote network management platform 320 may also be capable of discovering and managing the configuration of the public cloud network 340 used by the managed network 300. 【0062】 Firewalls such as firewall 310 typically reject all incoming communication sessions via the Internet 350 unless the session ultimately originates behind the firewall (i.e., on a device on the managed network 300) and the firewall is explicitly configured to support the session. By placing the proxy server 312 behind firewall 310 (for example, by placing it within the managed network 300 and protecting it with firewall 310), the proxy server 312 may be able to initiate these communication sessions through firewall 310. This may eliminate the need for firewall 310 to be specially configured to support incoming sessions from the remote network management platform 320, thus avoiding a potential security risk to the managed network 300. 【0063】 In some cases, the managed network 300 may consist of a small number of devices and networks. In other deployments, the managed network 300 may extend to multiple physical locations and include hundreds of networks and hundreds of thousands of devices. Therefore, the architecture shown in Figure 3 can be scaled up or down by orders of magnitude. 【0064】 Furthermore, the number of proxy servers 312 deployed internally can be varied depending on the size, architecture, and connectivity of the managed network 300. For example, each proxy server 312 may be responsible for communication with the remote network management platform 320 for a portion of the managed network 300. Alternatively or additionally, load balancing, redundancy, and / or availability can be improved by assigning multiple sets of two or more proxy servers to such portions of the managed network 300. 【0065】 B. Remote Network Management Platform The remote network management platform 320 is a hosted environment that provides aPaaS services to users, particularly operators of the managed network 300. These services may take the form of a web-based portal using, for example, the web-based technologies described above. This allows users to securely access the remote network management platform 320 from, for example, client equipment 302 or potentially client equipment outside the managed network 300. The web-based portal enables users to design, test, and deploy applications, generate reports, review analyses, and perform other tasks. The remote network management platform 320 may also be referred to as a multi-application platform. 【0066】 As shown in Figure 3, the remote network management platform 320 includes four compute instances 322, 324, 326, and 328. Each of these compute instances may represent one or more nodes and / or one or more database nodes operating a dedicated copy of the aPaaS software. On physical server equipment and / or virtual machines, the servers and databases can be flexibly positioned and may be modified based on the enterprise's needs. In combination, these nodes can provide a set of web portals, services, and applications (e.g., a fully functional aPaaS system) available to a particular enterprise. In some cases, a single enterprise may use multiple compute instances. 【0067】 For example, the managed network 300 may be an enterprise customer of the remote network management platform 320, and may also use compute instances 322, 324, and 326. One reason for providing multiple compute instances to a single customer is that the customer may want independent development, testing, and deployment of their applications and services. For this reason, compute instance 322 may be dedicated to application development associated with the managed network 300, compute instance 324 may be dedicated to testing these applications, and compute instance 326 may be dedicated to the live operation of the tested applications and services. Compute instances may also be referred to as hosted instances, remote instances, customer instances, or any other designation. Any application deployed on a compute instance is considered a scoped application in that access to the database within the compute instance may be restricted to certain internal elements (e.g., one or more specific database tables or specific rows within one or more database tables). 【0068】 For simplicity, in this disclosure, the configuration of application nodes, database nodes, aPaaS software running on them, and the underlying hardware is referred to as a “computation instance.” Users may colloquially refer to the graphical user interface provided thereunder as an “instance.” Unless otherwise defined herein, a “computation instance” is a computer system located within the remote network management platform 320. 【0069】 The multi-instance architecture of the Remote Network Management Platform 320 offers several advantages in contrast to traditional multi-tenant architectures. In a multi-tenant architecture, data from different customers (e.g., corporations) is mixed in a single database. While these customer data are isolated from each other, this isolation is enforced by the software operating the single database. As a result, a security breach in this system affects all customer data, posing an additional risk, especially for entities subject to government, healthcare, and / or financial regulations. Furthermore, any database operation affecting one customer can potentially affect all customers sharing that database. Therefore, in the event of an outage due to a hardware or software error, this outage will affect all such customers. Similarly, if the database is upgraded to meet the needs of one customer, all customers will be unavailable during the upgrade process. Such maintenance timeframes are often lengthy due to the size of the shared database. 【0070】 In contrast, the multi-instance architecture provides each customer with its own database on a dedicated compute instance. This prevents the mixing of customer data and allows for independent management of each instance. For example, if one customer's instance goes down due to an error or upgrade, other compute instances remain unaffected. Because each database contains data for only one customer, maintenance downtime is limited. Furthermore, the simpler design of the multi-instance architecture allows redundant copies of each customer's database and instance to be deployed geographically diversified. This promotes high availability and allows for the migration of a live version of a customer's instance when failure detection or maintenance is performed. 【0071】 In some embodiments, the remote network management platform 320 may include one or more central instances controlled by the entity operating the platform. Similar to compute instances, the central instances may include several application and database nodes deployed on several physical server devices or virtual machines. Such a central instance may function as a repository for a specific configuration of data that may be shared by compute instances, as well as at least some of them. For example, a central instance may contain definitions of common security threats that may occur on compute instances, software packages commonly found on compute instances, and / or an application store for applications deployable to compute instances. Compute instances may communicate with the central instance through a clearly defined interface to obtain this data. 【0072】 To efficiently support multiple computing instances, the remote network management platform 320 may configure multiple such instances to run on a single hardware platform. For example, if the aPaaS system is running on a server cluster such as server cluster 200, it may run virtual machines that allocate varying amounts of computing, storage, and communication resources to instances. However, full virtualization of server cluster 200 is not required, and instances may be isolated by other mechanisms. In some examples, each instance may have a dedicated account and one or more dedicated databases on server cluster 200. Alternatively, computing instances such as computing instance 322 may span multiple physical devices. 【0073】 In some cases, a single server cluster of the remote network management platform 320 may support multiple independent enterprises. Furthermore, as described below, the remote network management platform 320 may comprise multiple server clusters deployed in geographically diverse data centers to facilitate load balancing, redundancy, and / or high availability. 【0074】 C. Public Cloud Network The public cloud network 340 may be remote server equipment (e.g., multiple server clusters such as server cluster 200) available for outsourced computing, data storage, communications, and service hosting operations. These servers may be virtualized (i.e., virtual machines). Examples of the public cloud network 340 include AMAZON WEB SERVICES® and MICROSOFT® AZURE®. Similar to the remote network management platform 320, multiple server clusters supporting the public cloud network 340 may be deployed in geographically diverse locations for load balancing, redundancy, and / or high availability. 【0075】 The managed network 300 may use one or more public cloud networks 340 to deploy applications and services to its clients and customers. For example, if the managed network 300 provides an online music streaming service, the public cloud network 340 may store the music files and provide a web interface and streaming functionality. In this way, the company in the managed network 300 does not need to build and maintain its own servers for these operations. 【0076】 The remote network management platform 320 may include modules that, through integration with the public cloud network 340, expose its internal virtual machines and managed services to the managed network 300. These modules may enable users to request virtual resources, discover allocated resources, and report flexibly to the public cloud network 340. To establish this functionality, users of the managed network 300 may first create an account in the public cloud network 340 and request a set of relevant resources. The user may then enter their account information into an appropriate module of the remote network management platform 320. These modules may then automatically discover the manageable resources for the account and provide usage, performance, and billing-related reports. 【0077】 D. Communications support and other operations Internet 350 may represent a portion of the global internet. However, Internet 350 may also represent different types of networks, such as private wide-area or local area packet-switched networks. 【0078】 Figure 4 further illustrates the communication environment between the managed network 300 and the compute instance 322, and introduces additional features and alternative embodiments. In Figure 4, all or part of the compute instance 322 is replicated in both data centers 400A and 400B. These data centers may be geographically separated from each other, possibly in different cities or countries. Each data center is equipped with the managed network 300 as well as support facilities to facilitate communication with remote users. 【0079】 In data center 400A, network traffic to external devices flows through VPN gateway 402A or firewall 404A. VPN gateway 402A may peer with VPN gateway 412 of managed network 300 using a security protocol such as Internet Protocol Security (IPSEC) or Transport Layer Security (TLS). Firewall 404A may be configured to allow access from legitimate users such as user 414 and remote user 416, and to deny access from unauthorized users. Firewall 404A allows these users to access compute instance 322 and optionally other compute instances. Load balancer 406A may be used to distribute traffic among one or more physical or virtual server devices hosting compute instance 322. Load balancer 406A can simplify user access by hiding the internal configuration of data center 400A (e.g., compute instance 322) from client devices. For example, if the compute instance 322 includes multiple physical or virtual computer devices that share access to multiple databases, the load balancer 406A may distribute network traffic and processing tasks among these computer devices and databases so that no computer device or database is significantly busier than others. In some embodiments, the compute instance 322 may include a VPN gateway 402A, a firewall 404A, and a load balancer 406A. 【0080】 Data center 400B may have its own version of the components of data center 400A. Therefore, VPN gateway 402B, firewall 404B, and load balancer 406B may perform the same or similar operations as VPN gateway 402A, firewall 404A, and load balancer 406A, respectively. Furthermore, computing instances 322 may exist simultaneously in data centers 400A and 400B through real-time or near-real-time database replication and / or other operations. 【0081】 As shown in Figure 4, data centers 400A and 400B can facilitate redundancy and high availability. In the configuration of Figure 4, data center 400A is active and data center 400B is passive. Therefore, data center 400A serves all traffic to managed network 300, while the version of compute instance 322 in data center 400B is updated in near real-time. Other configurations, such as a configuration in which both data centers are active, may be supported. 【0082】 If data center 400A experiences any failure or becomes unavailable to users, data center 400B can take over as the active data center. For example, a Domain Name System (DNS) server that associates the domain name of compute instance 322 with one or more Internet Protocol (IP) addresses of data center 400A may reassociate the domain name with one or more IP addresses of data center 400B. After this reassociation is complete (which is thought to take less than a second or a few seconds), users can access compute instance 322 through data center 400B. 【0083】 Figure 4 also shows a possible configuration of the managed network 300. As mentioned above, the proxy server 312 and user 414 can access the compute instance 322 through the firewall 310. The proxy server 312 can also access the configuration item 410. In Figure 4, the configuration item 410 may represent any or all of the client device 302, server device 304, router 306, and virtual machine 308, any applications or services running on them, as well as the relationships between devices, applications, and services. Therefore, the term "configuration item" may be an abbreviation representing any physical or virtual device, any application or service that can be remotely discovered or managed by the compute instance 322, or the relationships between discovered devices, applications, and services. The configuration item may be represented in the configuration management database (CMDB) of the compute instance 322. 【0084】 As described above, VPN gateway 412 may provide a dedicated VPN to VPN gateway 402A. Such a VPN may be useful when there is a large amount of traffic between managed network 300 and compute instance 322, or when security policies suggest or require the use of a VPN between these sites. In some embodiments, any equipment in managed network 300 and / or compute instance 322 that communicates directly over the VPN is assigned a public IP address. Other equipment in managed network 300 and / or compute instance 322 may be assigned a private IP address (for example, an IP address selected from the ranges 10.0.0.0 to 10.255.255.255 or 192.168.0.0 to 192.168.255.255, respectively, abbreviated as subnets 10.0.0.0 / 8 and 192.168.0.0 / 16). 【0085】 IV. Discovery of Exemplary Devices, Applications, and Services The remote network management platform 320 may first determine the devices, applications, and services present in the managed network 300, their configurations and operating states, the applications and services they provide, and the relationships between discovered devices, applications, and services, in order to manage the devices, applications, and services of the managed network 300. As described above, each device, application, service, and relationship may be referred to as a configuration item. The process of defining the configuration items within the managed network 300 is called discovery, which can be facilitated, at least partially, by the proxy server 312. 【0086】 For the purposes of this specification, “Application” may represent one or more processes, threads, programs, client modules, server modules, or any other software running on a device or group of devices. “Service” may represent an advanced function provided by multiple applications running on one or more devices that work together. For example, an advanced web service may include multiple web application server threads running on one device that access information from a database application running on another device. 【0087】 Figure 5A is a logical depiction of how configuration items may be detected and how the detected configuration items and related information may be stored. For simplicity, the remote network management platform 320, the public cloud network 340, and the internet 350 are not shown. 【0088】 In Figure 5A, the CMDB 500 and task list 502 are stored in the compute instance 322. The compute instance 322 may send a discovery command to the proxy server 312. In response, the proxy server 312 may send probes to various devices, applications, and services in the managed network 300. These devices, applications, and services may send responses to the proxy server 312, which may then provide information about the discovered configuration items to the CMDB 500 for storage. The configuration items stored in the CMDB 500 represent the environment of the managed network 300. 【0089】 Task list 502 represents a list of actions that the proxy server 312 will perform on behalf of the computation instance 322. When detection occurs, input is made to task list 502. The proxy server 312 repeatedly queries task list 502, retrieves the next task from it, and executes this task until task list 502 becomes empty or another termination condition is met. 【0090】 To facilitate detection, the proxy server 312 may be configured with information about one or more subnets in the managed network 300 that are reachable by the proxy server 312. For example, the proxy server 312 may be given the IP address range 192.168.0 / 24 as a subnet. The compute instance 322 may then store this information in the CMDB 500 and place tasks in the task list 502 for the detection of devices at each of these addresses. 【0091】 Furthermore, Figure 5A shows the devices, applications, and services in the managed network 300 as configuration items 504, 506, 508, 510, and 512. As described above, these configuration items represent a set of physical and / or virtual devices (e.g., client devices, server devices, routers, or virtual machines), applications running on them (e.g., web servers, email servers, databases, or storage arrays), the relationships between them, and services that include multiple individual configuration items. 【0092】 Placing a task in task list 502 can trigger or initiate detection by the proxy server 312. Alternatively or additionally, detection may be triggered manually or automatically based on a trigger event (for example, detection may start automatically once a day at a specific time). 【0093】 Generally, detection can involve four logical stages: scanning, classification, identification, and exploration. Each stage of detection includes various types of probe messages that the proxy server 312 sends to one or more devices in the managed network 300. Responses to these probes may be received and processed by the proxy server 312, and their respective representations may be sent to the CMDB 500. In this way, each stage can detect and store more configuration items in the CMDB 500. 【0094】 During the scanning phase, the proxy server 312 may determine the general type of device by probing each IP address within a specified range of IP addresses for open Transmission Control Protocol (TCP) and / or User Datagram Protocol (UDP) ports. The presence of such open ports at an IP address indicates that a particular application is running on the device assigned to that IP address, thereby allowing identification of the operating system used by that device. For example, if TCP port 135 is open, the device is likely running the WINDOWS® operating system. Similarly, if TCP port 22 is open, the device is likely running a UNIX® operating system such as LINUX®. If UDP port 161 is open, the device may be identifiable separately through Simple Network Management Protocol (SNMP). Other possibilities exist. Once the presence of a device and its open ports at a particular IP address is detected, these configuration items are stored in the CMDB 500. 【0095】 During the classification stage, the proxy server 312 may further probe each detected device to determine its operating system version. The probes used for a particular device are based on the information collected about that device during the scanning stage. For example, if a device with TCP port 22 open is found, a set of UNIX®-specific probes may be used. Similarly, if a device with TCP port 135 open is found, a set of WINDOWS®-specific probes may be used. In either case, a suitable set of tasks may be placed in the task list 502 for the proxy server 312 to execute. These tasks enable the proxy server 312 to log on to or access information from a particular device. For example, if TCP port 22 is open, the proxy server 312 may be instructed to initiate a Secure Shell (SSH) connection to the particular device and retrieve information about the operating system on the device from a specific location in the file system. Based on this information, the operating system may be determined. For example, UNIX® devices with TCP port 22 open are classified as AIX®, HPUX, LINUX®, MACOS®, or SOLARIS®. This classification information may be stored in CMDB500 as one or more configuration items. 【0096】 During the identification stage, the proxy server 312 may determine specific details about the classified device. The probes used in this stage may be based on information collected about the specific device during the classification stage. For example, if the device is classified as LINUX®, a set of LINUX®-specific probes may be used. Similarly, if the device is classified as WINDOWS® 2012, a set of WINDOWS® 2012-specific probes may be used. As in the classification stage, a suitable set of tasks may be placed in the task list 502 for the proxy server 312 to execute. These tasks enable the proxy server 312 to read information from the specific device, such as basic input / output system (BIOS) information, serial number, network interface information, media access control addresses assigned to these network interfaces, and IP addresses used by the specific device. This identification information may be stored in the CMDB 500 as one or more configuration items. 【0097】 During the discovery phase, the proxy server 312 may determine additional details regarding the operating status of the classified devices. The probes used in this phase may be based on information collected about specific devices during the classification and / or identification phases. In this case as well, a suitable set of tasks may be placed in the task list 502 for the proxy server 312 to execute. These tasks enable the proxy server 312 to read additional information from the specific device, such as processor information, memory information, and a list of running processes (applications). Again, the discovery information may be stored in the CMDB 500 as one or more configuration items. 【0098】 When performing discovery on network devices such as routers, SNMP may be used. As an alternative to or addition to determining a list of running processes or other application-related information, discovery may involve the router determining known additional subnets and the operational status of the router's network interfaces (e.g., active, inactive, queue length, number of dropped packets, etc.). The IP addresses of the additional subnets may be candidates for other discovery procedures. For this reason, discovery may proceed iteratively or recursively. 【0099】 Once detection is complete, snapshot representations of each detected device, application, and / or service become available in CMDB500. For example, after detection, it may store the operating system versions, hardware configurations, and network configuration details of client devices, server devices, and routers in the managed network 300, as well as the applications running on them. This collected information can be presented to the user in various ways, allowing them to verify the hardware configuration and operating status of devices, as well as the characteristics of services spanning multiple devices and applications. 【0100】 Furthermore, CMDB500 may include entries relating to dependencies and relationships between configuration items. More specifically, applications running on a particular server device, as well as services that depend on this application, may be represented in CMDB500 in this way. For example, suppose a database application runs on a server device, and this database application is used for a new employee training service as well as a payroll service. Therefore, if the server device is shut down for maintenance, the employee training service and the payroll service will clearly be affected. Similarly, dependencies and relationships between configuration items can represent services that would be affected if a particular router fails. 【0101】 Generally, dependencies and relationships between configuration items can be displayed in a web-based interface and represented hierarchically. Therefore, adding, modifying, or deleting such dependencies and relationships can be achieved through this interface. 【0102】 Furthermore, users of Managed Network 300 can develop workflows that enable the execution of specific coordinated actions across multiple detected devices. For example, an IT workflow could allow a user to change the common administrator password for all detected LINUX® devices in a single operation. 【0103】 To enable the detection described above, the proxy server 312, CMDB 500, and / or one or more authentication information stores may be configured with authentication information for one or more of the devices to be detected. The authentication information may include any type of information necessary to access the device. This may include user ID / password pairs, certificates, etc. In some embodiments, this authentication information may be stored in an encrypted field of CMDB 500. The proxy server 312 may include a decryption key for this authentication information so that logon to or access to the devices to be detected using the authentication information is possible. 【0104】 Figure 5B shows the detection process as a flowchart. In block 520, the task list in the computation instance is populated with, for example, various IP addresses. In block 522, the scanning phase occurs. The proxy server probes these IP addresses for devices that use them and attempts to determine the operating systems running on these devices. In block 524, the classification phase occurs. The proxy server attempts to determine the version of the operating system of the detected devices. In block 526, the identification phase occurs. The proxy server attempts to determine the hardware and / or software configuration of the detected devices. In block 526, the exploration phase occurs. The proxy server attempts to determine the operational state and the applications running on the detected devices. In block 530, separate editing of configuration items representing the detected devices and applications may occur. This editing can be automated and / or performed manually. 【0105】 The blocks shown in Figure 5B are examples. The detection may be a highly configurable procedure, with the number of steps being either increased or decreased, and the operation of each step may differ. In some cases, one or more steps may be customized or deviate from the exemplary description above. 【0106】 Thus, a remote network management platform can discover and list the hardware, software, and services deployed and provided on a managed network. As mentioned above, this data may be stored as configuration items in the CMDB of the relevant compute instance. For example, individual hardware components (e.g., computer equipment, virtual servers, databases, routers, etc.) may be represented as hardware configuration items, while applications installed and / or run on them may be represented as software configuration items. 【0107】 The relationships between hardware configuration items and software configuration items that are installed or executed can take various forms, such as hosting, execution, or dependency. For example, a database application installed on a server device may indicate that it is hosted on the server device by having a "hosting" relationship with it. In some embodiments, a server device may indicate that it is used by a database application by having a "use" relationship with it. These relationships may be automatically discovered using the detection procedures described above, but they can also be configured manually. 【0108】 Furthermore, the relationship between a service and one or more software configuration items can take various forms. For example, a web service may include web server software configuration items and database application software configuration items, each installed on different hardware configuration items. While a web service may have a “dependence” relationship with both of these software configuration items, the software configuration items have a “usage” relationship with the web service. A service may not be determined entirely by discovery procedures, but instead may rely on service mapping (e.g., probing configuration files and / or performing network traffic analysis to determine service level relationships between configuration items) and, if applicable, some degree of manual configuration. 【0109】 Relevant information, regardless of how it is obtained, can be beneficial to the operation of a managed network. In particular, IT personnel can quickly determine where a specific software application is deployed and the configuration items that make up the service. This allows them to quickly pinpoint the root cause of service outages or degradation. For example, if two different services are slow to respond, a query to the CMDB (among many possible actions) can determine that the root cause is high processor utilization of the database applications used by both services. This allows IT personnel to address the database application without wasting time examining the health and performance of other configuration items that make up the service. 【0110】 V. Nesting of Request-Response Protocol Communication Network-based applications are examples of programs that operate across two or more computer devices. For example, in the context of a managed network, a typical configuration may include a controller-agent application that can be distributed across two (or more) servers. Other examples include client-server programs, such as web-based applications. Before an application program distributed across two or more servers can communicate, it may first be necessary to establish connections between the dependent application components and the servers, which may involve coordinating the application's characteristics and / or functionality. This may inevitably involve two servers or other computer devices establishing a continuous, secure communication channel using, for example, a predetermined negotiated protocol. 【0111】 More generally, the proper operation of a distributed application may depend, at least in part, on the synchronization and / or coordination of application program versions installed and / or running on various computer devices connected to each other. Synchronization and coordination allow identical and / or compatible versions of software functions and / or associated application-related data to run and / or reside on two or more computer devices involved in distributed program execution. Dissynchronized program versions and / or incompatible functions with respect to distributed software may arise, for example, from upgrades to a particular computer device or system, or from the application of common upgrades at different times. 【0112】 In this specification, exemplary embodiments are described as an example, with the configuration of a controller computer and an agent computer as the background. The controller computer may be a server, and the agent computer may be a client. However, other configurations are also possible. For example, both the controller computer and the agent computer may be network computer devices or systems such as servers, or both may be client devices that run controller and agent components of an application program. In any case, it is understood that the generality of the exemplary embodiments is not lost by considering the controller-agent configuration. 【0113】 In typical use cases or other operating scenarios, the controller computer may initiate a feature discovery procedure with the agent computer to ensure that both devices are, or can be made, operationally compatible with respect to one or more application programs. Compatibility may relate to program features and functions, and / or associated data. Feature and function compatibility may be determined, for example, by matching version numbers, and associated data compatibility may be determined, for example, by the minimum commonality of some form of data definition in both devices. Other actions may be involved in coordinating compatibility, for example, by performing a setup initialization operation on one or both devices. Several examples of device function compatibility are discussed below. 【0114】 In the discussion herein concerning the synchronization and / or coordination of the functions of two or more devices and the determination of functional compatibility, the term “discovery” and related processes are applied somewhat more specifically to the context of remotely managed networks and compute instances than to the discovery described above. More specifically, in the context of remotely manageable network resources such as devices, applications, and services, discovery broadly includes the process of learning about the availability, location, and configuration of network resources. In the context of device functions, discovery includes the process of learning about the inter-device compatibility of distributed application programs and related data. It should also be noted that functional discovery is just one exemplary context in which exemplary embodiments of nested request-response protocols may be used. 【0115】 In a typical use case or another example of an operating scenario, software applications may be upgraded at different times across servers on a network, resulting in controllers and agents having different capabilities at each point in time. As a result, existing connections may require renegotiation. To use new (e.g., upgraded) capabilities, both the controller and agent must be able to update their respective connections and ensure they can support features that were not previously supported. In traditional asynchronous processing and network communication, a local controller computer (or simply a server) can initiate an asynchronous process that sends a request over the network to a remote agent computer (or simply another server), and the latter can initiate another asynchronous process. Both the local and remote processes can execute to completion, resulting in an outcome such as success or error. However, due to the nature of asynchronous processing, one process may complete before the other, and the outcome of one process may depend on the outcome of the other. In some cases, the fault tolerance of the processes may be very low. If each server is independently responsible for generating and activating connections, or selecting and enabling the features used in those connections, one server may complete the process successfully while another terminates with an error state or incomplete information. As a result, one server may have active connections that support a particular set of features or functions, while the other server may show connections in an error state. This inconsistency in states can lead to improper operation of distributed applications and / or other incorrect or undesirable functions. 【0116】 Traditional methods for coordinating functionality allow for checking the status or progress of a remote asynchronous process by polling a remote server. However, this method may fail to account for errors that do not indicate a remotely detectable success or error termination status, and polling could potentially continue indefinitely. In other examples, an asynchronous remote process may include a final step of initializing and establishing a connection while simultaneously switching the connection state to active. If executed asynchronously and without coordination, one system may begin using the connection before it has completed its initialization process and switched the state to active, and the other system has finished initialization and is ready to accept commands over the connection. These are just a few examples of the shortcomings of the prior art in the context of managed networks. This problem may be more commonly understood in relation to stateless request-response communication protocols that apply to transactional operations between two computer devices. 【0117】 A. Exemplary network communication protocol for distributed applications In many, and perhaps most, network-based applications today (e.g., web-based applications), communication between application instances or components distributed across different devices is typically supported by individual instances of a stateless request-response communication protocol. A well-known example is HTTP, which largely follows the REST model. These protocols are mature and widely adopted, and may be de facto standards, if not industry standards, for many applications and / or managed networks running distributed software applications. Protocols that follow or conform to REST are sometimes referred to as "RESTful" protocols. 【0118】 For explanatory purposes, the REST architectural model can be understood in relation to the client-server model as follows: A REST server can provide access to (web) resources, and a REST client can access and modify the obtained resources. Communication between the client and the server can be supported by "methods" that are typically issued as requests from the client to the server. Depending on the action taken in response to the request (e.g., method), the server may send a response that may contain resources provided in a representation format such as JSON and / or XML. 【0119】 In a client-server context, the roles of client and server are associated with entities that send requests and entities that send responses to those requests. However, it is understood that the roles of client and server do not need to be limited to specific types of devices that are typically expected to perform such roles. For example, two typical client devices, such as end-user devices (desktop computers, smartphones, etc.), may act as clients and servers by engaging with a RESTful protocol for a particular distributed application program. Similarly, in the context of any other distributed application program, two typical server devices, such as two servers in a remote network management system, may similarly act as clients and servers, one and the other. Other configurations are also possible. 【0120】 REST can be implemented using standard application programming interfaces (APIs), with HTTP being perhaps the most common (though not the only possibility). In some embodiments, REST may only use the four HTTP methods listed below in table form. [Table 1] 【0121】 In some embodiments, REST may use additional methods such as PATCH and / or OPTIONS. In other embodiments, there may be even fewer methods used than the four listed here. 【0122】 When a method is sent as an HTTP request from a first computer device (e.g., a controller computer device) to a second computer device (e.g., an agent computer device), the second computer device may respond by sending an HTTP response to the first computer device. Each request-response pair is executed as a separate instance. As described above, the RESTful protocol can be implemented with various types of device pairs, such as client-client or server-server, which may correspond to the controller-agent configuration example considered in the exemplary embodiments herein. The above client-server example is merely an example of the roles of the requester and responder in the request-response protocol and is not intended to be limiting in any way. 【0123】 Feature discovery procedures may inevitably involve stateful transactional communication between controller and agent computer devices, but the request-response nature of REST, HTTP, and other similar models and protocols is not well-suited for transactional communication. As a result, for many, if not all, web-based (and network-based) applications, feature discovery procedures may be constrained, resulting in delays and / or other performance and / or operational inefficiencies. Therefore, exemplary embodiments herein provide systems and methods for addressing these constraints in transactional communication by nesting request-response protocols. More specifically, the nesting of request-response communication protocols described herein as an example introduces stateful transactional communication into protocols that do not possess it. This is convenient because it addresses the shortcomings of widely used request-response communication protocols without the need for replacement and / or starting over from scratch. 【0124】 While the exemplary embodiments described herein address the shortcomings of request-response communication protocols for feature discovery procedures, it should be understood that novel and advantageous techniques for nesting request-response communications may be more generally applicable to any scenario or situation where a stateless request-response communication protocol imposes constraints on a procedure or process that can be expected to benefit from superior support or advantages of stateful transactional communications. Therefore, the exemplary embodiments described herein should not be considered as limitations on other applications of nesting request-response communications. 【0125】 It should be noted that individual instances of request-response protocol communication may be described as either unidirectional or half-duplex. This description does not negate the bidirectional nature of requests and subsequent responses. Rather, it focuses on the stateless nature of the protocol used for communication between two asynchronous processes. Another characteristic of half-duplex communication in the context of request-response protocol communication between two computing instances (e.g., two computer devices) is that only one of the instances can provide request data to a given request-response instance. 【0126】 Before describing examples of conventional operation with separate instances of request-response communication and examples of nested instances of request-response communication, we will present a brief example of coordinating and synchronizing the functional compatibility of two devices. 【0127】 B. Adjustment and Compatibility of Functions Figure 6 shows exemplary device function data and compatibility configuration for two exemplary devices according to an exemplary embodiment. As shown, the controller computer device 602 may have associated controller function data 601, and the agent computer device 604 may have associated agent function data 603. The function data shown for each device is primarily conceptual, and the functions are expressed literally. In practice, the function data may be in a more abstract form when stored and / or transmitted. The character representation of the function data in Figure 6 is not intended to limit the exemplary embodiment. As an example, the function data for both devices includes a list of user and device data, including at least one data version number, as well as a list of supported applications, including application version numbers. 【0128】 The definition of compatible functions is considered to be the common part of controller function data 601 and agent function data 603. This common part is represented as a kind of Venn diagram, shown as superimposed and / or synchronized functions 607. As shown in the diagram, the superimposed or common part generates compatible function data 605, while the function data excluded from the common part is shown as controller function incompatible data 601-X and agent function incompatible data 603-X. 【0129】 In the specific example in Figure 6, compatible user data includes "Last Name, First Name," while excluding the middle initials ("MI") and "Report To," which are part of agent function data 603. Compatible device data includes "OS" and "Config Version 9.001," while excluding "Config Version 9.104" and "ID" from controller function data 601. Compatible applications are "UserSetUp Version 3.959," "DeviceSetUp Version 5.700," and "WebDocLib Version 3.2.15," while excluding "UserSetUp Version 4.002" from controller function data 601 and "DeviceSetUp Version 5.741" and "WebDocLib Version 3.2.18" from agent function data. In this example, later versions of software applications and data configurations are assumed to be backward compatible with previous versions, ensuring compatibility between two or more computer devices using the previous version. 【0130】 The exemplary compatibility function data 605 in Figure 6 is thought to represent the synchronization function state of the controller computer device 602 and the agent computer device 604. According to the exemplary embodiment, the synchronization function state can be achieved by a procedure for adjusting the function. As mentioned above, the use of a single instance of the conventional request-response communication protocol is inefficient and, in some cases, may not be able to achieve a proper synchronization function state. Next, an example of a conventional method is described, followed by an exemplary embodiment of nested request-response communication. 【0131】 C. Conventional operation Figure 7 shows a conventional use case of a request-response communication protocol for function coordination in the form of a message flow diagram between controller computer device 702 and agent computer device 704. The message flow is shown as a general request-response protocol and can also be implemented using, for example, HTTP or another REST-like protocol. In the message flow diagram, messages are represented by horizontal arrows between controller computer devices 702 and 704, and time flows downwards in the diagram. A specific time scale is not suggested, but the typical time between a request and the associated response may be, for example, on the order of 1-2 seconds. Longer and / or shorter time periods are also possible. 【0132】 The basic flow of communication includes individual instances of request-response message pairs. In Figure 7, the individual instances are identified by dashed rectangles 721, 723, 725, and 727. Furthermore, each individual instance of a request-response message pair may be executed by separate execution threads on two computer devices. Execution threads are represented by short rectangular segments on the lower vertical timelines of the controller computer device 702 and the agent computer device 704. Specifically, instance 721 is shown as being executed by thread C7-1 on the controller computer device 702 and thread A7-1 on the agent computer device 704. Similarly, instance 723 is shown as being run by thread C7-2 on controller computer device 702 and thread A7-2 on agent computer device 704; instance 725 is shown as being run by thread C7-3 on controller computer device 702 and thread A7-3 on agent computer device 704; and instance 727 is shown as being run by thread C7-4 on controller computer device 702 and thread A7-4 on agent computer device 704. In other configurations, a single thread on each device can run all instances. 【0133】 In the illustrated example, in instance 721, the controller computer device 702 sends a controller request message S-701-rqst, which is a controller request containing at least some of the controller function data, to the agent computer device 704. Upon receiving S-701-rqst, the agent computer device 704 may call thread A7-1. This thread may generate and send an agent response message S-107-rsp, which is an agent response acknowledging the controller request message S-701-rqst. 【0134】 Furthermore, upon receiving the controller request message S-701-rqst, the agent computer device 704 may perform one or more initialization operations, such as selecting compatible functions and setting the connection status, in addition to one or more operations related to determining the functions of the common parts, as described above as an example. Similarly, as described above, the controller computer device 702 may perform one or more initialization and / or state setting operations, such as notifying other application programs that may be running on the controller computer device of the functions. Similar processes may be performed on the agent computer device, or in conventional operation, the controller computer device may at least assume that they are being performed. However, the controller computer device 702 may not necessarily be able to determine its own and the functional synchronization state of the agent computer device based on a single request-response instance 721 alone. 【0135】 Continuing from the example in Figure 7, the controller computer device 702 then determines, through a series of polling attempts, whether the agent computer device 704 has succeeded in determining a compatible function and whether it has succeeded in transitioning to the corresponding state. For this reason, in instance 723, the polling may include a controller request message S-703-rqst, which is a controller request for status, followed by an agent response message S-703-rsp, which is an agent response that confirms the controller request message S-703-rqst with only an indicator that the operation to respond to the request is incomplete. The second polling may include a controller request message S-705-rqst, which is another controller request for status, followed by an agent response message S-705-rsp, which is another agent response that confirms the controller request message S-705-rqst, but similarly can only indicate that the operation to respond to the request is incomplete. In this example, after the final controller request message S-707-rqst for polling the status, the agent computer device responds with an agent response message S-707-rsp that acknowledges the agent request message S-707-rqst with an indicator that the operation is complete and / or status update information. 【0136】 This polling method can be inefficient and / or result in significant delays. Furthermore, in some cases, polling may continue indefinitely or for several cycles or more. This is illustrated in Figure 7 by the vertical ellipsis between polling instances. One of the main drawbacks of conventional methods is the statelessness of individual instances of the request-response communication protocol and its application to procedures that are inherently transactional. By nesting request-response instances, statefulness can be introduced into the request-response protocol, allowing for natural and efficient support of functional coordination transactions while preserving existing communication protocols already applied to inter-device communication in distributed applications. 【0137】 D. Enhanced operation through nesting Figure 8 shows an example of nested request-response protocol communication between two exemplary devices according to an exemplary embodiment. Similar to the example in Figure 7, the exemplary operation in Figure 8 shows a message flow diagram between controller computer device 802 and agent computer device 804. The basic format of Figure 8 is the same as in Figure 7, with messages represented by horizontal arrows between controller computer devices 802 and 804, and time flowing downwards in the diagram. 【0138】 In the example shown in Figure 8, the basic communication flow includes only two instances of request-response message pairs, with one instance pair 823 nested within another instance pair 821. The two instances of request-response message pairs may be executed mostly concurrently by execution threads on the two computer devices. Specifically, instance 821 is shown as being executed by thread C8-1 on controller computer device 802 and thread A8-1 on agent computer device 804. In nested operation, instance 823 is shown as being executed within instance 821 by thread C8-2 on controller computer device 702 and thread A8-2 on agent computer device 804. 【0139】 In the illustrated example, in instance 821, the controller computer device 802 sends a controller request message S-801-rqst, which is a controller request containing at least a portion of the controller function data, to the agent computer device 804. Upon receiving S-801-rqst, the agent computer device 804 may call thread A8-1. This thread may perform one or more initialization operations, such as selecting compatible functions and setting the connection state, in addition to one or more operations related to determining the functions of the common parts, as described above as an example. Alternatively, one or more initialization and / or state setting operations may be performed by executing thread C8-1 on the controller computer device 802. 【0140】 In contrast to conventional operation, agent computer device 804 does not immediately send a response to controller request message S-801-rqst, but instead calls thread A8-2 simultaneously with thread A8-1 (for example, in parallel execution). Then, in step S-803, thread A8-2 may determine compatibility data such as compatibility function data 605 shown in Figure 6. Next, thread A8-2 sends agent request message S-805-rqst. According to an exemplary embodiment, if agent request message S-805-rqst is sent while a response to controller request message S-801-rqst is pending, agent request message S-805-rqst is effectively nested, which ultimately becomes a request-response pair initiated by controller request message S-801-rqst. In this way, the state is maintained in both controller computer device 802 and agent computer device 804 over the duration. 【0141】 The initiation of the second request-response pair by agent request message S-805-rqst also corresponds to the establishment of instance pair 823, which, as mentioned above, is nested into instance pair 821. 【0142】 The controller computer device 802 may call thread C8-2 upon receiving the agent request message S-805-rqst. This thread may synchronize its functions with those of the agent computer device 804 reported in the agent request message S-805-rqst by performing one or more operations S-807. Thread C8-2 may then confirm the agent request message S-805-rqst by sending a controller response message S-805-rsp to the agent computer device 804. This confirms the synchronization by the controller computer device 802 and terminates instance 823, as well as threads A8-2 and C8-2 of the agent computer device 804 and controller computer device 802, respectively. 【0143】 An agent computer device that has received a controller response message S-805-rsp may then send an agent response message S-801-rsp as an acknowledgment of the controller request message S-801-rqst. This may confirm synchronization by agent computer device 804 and terminate instance 821 and threads A8-1 and C8-1 of agent computer device 804 and controller computer device 802, respectively. 【0144】 The implementation by two threads each for the controller computer device 802 and the agent computer device 804 is just one possible example and is not intended to be limiting; other embodiments (e.g., single-threaded) are equally possible. In the illustrated example, thread A8-1 may also block operations such as returning a response to the controller request message S-801-rqst and / or other initialization operations. In other embodiments, the operations of threads A8-1 and A8-2 can also be performed by a single thread. 【0145】 In an exemplary embodiment, this nesting technique ensures that, as long as the second connection established by instance 823 is open, the first connection established by instance 821 between controller computer device 802 and agent computer device 804 remains open. This effectively introduces statefulness throughout the lifetime of both instances, allowing for functional coordination within a single complete transaction. The result of this coordination does not necessarily have to be successful synchronization and / or the achievement of compatible functionality. For example, one or both of the controller computer device 802 and agent computer device 804 may fail to achieve functional synchronization for some reason. However, since the entire procedure is executed within a stateful transaction, any such error condition may be detected as part of the completed transaction, at which point actions related to the failure or error condition may be invoked. However, attempts by the computer devices to proceed as if no error had occurred may be avoided or prevented. 【0146】 For computer devices or systems that communicate using request-response protocols to run distributed application programs and / or other forms of multi-component application programs configured to operate across two or more computer devices, stateful transactions can be enabled for the required operations, as exemplified by the nesting techniques described herein. The coordination of functions shown herein is an example of such operations. In conjunction with the near-ubiquitous use of RESTful protocols (e.g., HTTP) for inter-device communication supporting distributed applications, considering the widespread deployment of distributed application programs and systems, the adaptation of these communication protocols to handling stateful transactions brings benefits and advantages in terms of both functional versatility and flexibility, as well as the practicality and feasibility of execution and deployment. 【0147】 VI. Exemplary Operation Figure 9 is a flowchart illustrating an exemplary embodiment. The process shown in Figure 9 may be executed by one or more computer devices, such as computer device 100, and / or a cluster of computer devices, such as a server cluster 200. However, this process can also be executed by other types of devices or device subsystems. For example, this process can also be executed by a remote network management platform or a computing instance of a portable computer, such as a laptop or tablet device. 【0148】 According to exemplary embodiments, the exemplary method may be implemented as a computer-readable instruction stored in a computer-readable medium such as a semiconductor memory, an optical and / or magnetic disk, or other tangible product. In some cases and / or embodiments, the computer-readable medium may be non-temporary. The computer-readable medium may be used to store the computer-readable instruction in a manner suitable for transfer and deployment to one or more computer devices. As an addition or alternative, the computer-readable medium may be accessible to one or more processors of one or more computer devices (for example, as internal memory) to access the instruction and perform an operation accordingly. When the computer-readable instruction is executed by one or more processors of one or more computer devices, it may cause one or more computer devices to perform an operation of the exemplary method. For this reason, it is considered that one or more computer devices are configured to perform the exemplary method. 【0149】 The embodiment shown in Figure 9 can be simplified by removing one or more of the features shown therein. Furthermore, these embodiments may be combined with any of the features, aspects, and / or embodiments described in the earlier drawings or herein. 【0150】 According to an exemplary embodiment, in the exemplary method shown in Figure 9, the controller computer device may be connected to the agent computer device in a communication manner. This connection may be, for example, via a network or other communication system. 【0151】 In block 902, an exemplary method may include sending a controller request from the controller computer device to the agent computer device on a first instance of the request-response protocol. The controller request may include controller data representing the functionality of the controller computer device. An exemplary and non-exclusive example of controller data is the controller functionality data 601 shown in Figure 6. 【0152】 In block 904, an exemplary method may include, after sending a controller request, receiving an agent request from the agent computer device on a second instance of the request-response protocol. The agent request may include agent data representing the functionality of the agent computer device. 【0153】 In block 906, the exemplary method may include storing at least a portion of the agent data in the memory of the controller computer device. An exemplary and non-exclusive example of agent data is the agent function data 603, also shown in Figure 6. 【0154】 In block 908, an exemplary method may include the controller computer device sending a controller response to an agent request to the agent computer device on a second instance of the request-response protocol. The controller response may follow the request-response protocol, as it is considered an acknowledgment of receipt of the agent request. 【0155】 Finally, in block 910, the exemplary method may include, after sending a controller response, receiving an agent response from the agent computer device on a first instance of the request-response protocol. The agent response, since it is considered an acknowledgment of receipt of the controller request, may also follow the request-response protocol. 【0156】 According to an exemplary embodiment, the exemplary method may further include receiving a controller request on an agent computer device and storing at least a portion of the controller data in the memory of the agent computer device. Another operation of the exemplary method may further include, in response to receiving a controller request, the agent computer device determining a subset of the agent computer device's functions that are compatible with and / or synchronized with the functions of the controller computer device, and the agent computer device sending an agent request to the controller computer device on a second instance of the request-response protocol. The agent request is the determined subset of the agent computer device's functions. Instructions ( Indication ) It may further include the following. An exemplary and non-limiting subset of agent computer equipment functions that are compatible with and / or synchronize with the functions of the controller computer equipment is a subset of agent function data in compatibility function data 605 shown in Figure 6. 【0157】 Furthermore, according to exemplary embodiments, at least a portion of the agent data stored in the memory of the controller computer device may include data associated with a determined subset of the functions of the agent computer device. Similarly, at least a portion of the controller data stored in the memory of the agent computer device may include data associated with a subset of the functions of the controller computer device corresponding to a subset of the functions of the agent computer device. An exemplary and non-exclusive example of a subset of the functions of the controller computer device corresponding to a subset of the functions of the agent computer device is a subset of the controller function data in the compatibility function data 605 shown in Figure 6. 【0158】 According to an exemplary embodiment, the exemplary method may further include the controller computer device synchronizing a corresponding subset of the controller computer device's functions with a subset of the agent computer device's functions in the agent request. Instructions ( Indication ) It may be based on this. 【0159】 According to an exemplary embodiment, the exemplary method may further include receiving a controller response on an agent computer device, and, after receiving the controller response on the agent computer device, sending the agent response from the agent computer device to the controller computer device on a first instance of the request-response protocol. 【0160】 According to an exemplary embodiment, the exemplary method may further include a controller computer device performing the operation of a first instance of the request-response protocol on a first controller execution thread and the operation of a second instance of the request-response protocol on a second controller execution thread. Similarly, the exemplary method may further include an agent computer device performing the operation of a first instance of the request-response protocol on a first agent execution thread and the operation of a second instance of the request-response protocol on a second agent execution thread. 【0161】 In exemplary embodiments, the request-response protocol may be a communication protocol compliant with REST (Representational State Transfer) and / or a communication protocol modeled on REST. HTTP is a non-exclusive example of such a protocol. 【0162】 VII. Conclusion This disclosure is not limited in terms of the specific embodiments described herein, which are intended to illustrate various aspects. As will be apparent to those skilled in the art, many improvements and modifications are possible without departing from its scope. From the foregoing description, functionally equivalent methods and apparatus within the scope of this disclosure, in addition to those described herein, will be apparent to those skilled in the art. Such improvements and modifications will also be included in the appended claims. 【0163】 The above detailed description, with reference to the accompanying drawings, describes various features and operations of the disclosed systems, equipment, and methods. The exemplary embodiments described herein and in the drawings are not limiting in any way. Other embodiments are available and other modifications can be made without departing from the scope of the subject matter presented herein. It will be readily apparent that the aspects of this disclosure described throughout this specification and shown in the drawings can be arranged, substituted, combined, separated, and designed in a wide variety of different configurations. 【0164】 With respect to any or all of the message flow diagrams, scenarios, and flowcharts in the figures, as discussed herein, each step, block, and / or communication may represent the processing and / or transmission of information in an exemplary embodiment. The scope of these exemplary embodiments includes alternative embodiments. In these alternative embodiments, for example, actions described as steps, blocks, transmissions, communications, requests, responses, and / or messages may be performed out of the order shown or described (including substantially concurrently or in reverse order), depending on the function involved. Furthermore, in any of the message flow diagrams, scenarios, and flowcharts discussed herein, the number of blocks and / or actions used may be increased or decreased, and some or all of these message flow diagrams, scenarios, and flowcharts can be combined with one another. 【0165】 Steps or blocks representing the processing of information can correspond to circuits that can be configured to perform specific logical functions of the method or technique described herein. Alternatively or in addition, steps or blocks representing the processing of information can correspond to modules, segments, or portions of program code (including associated data). The program code may include one or more instructions that can be executed by a processor to perform specific logical operations or actions in the method or technique described above. The program code and / or associated data can be stored in any type of computer-readable medium, such as a memory device including RAM, disk drives, semiconductor drives, or other storage media. 【0166】 Furthermore, computer-readable media may include non-temporary computer-readable media such as register memory and processor cache, which store data for short periods. Non-temporary computer-readable media may further include non-temporary computer-readable media that store program code and / or data for long periods. Therefore, non-temporary computer-readable media may include secondary or persistent long-term storage such as ROM, optical or magnetic disks, semiconductor drives, or compact disk read-only memory (CD-ROM). Other volatile or non-volatile storage systems are also possible as non-temporary computer-readable media. Non-temporary computer-readable media can be thought of as, for example, computer-readable storage media or tangible storage devices. 【0167】 Furthermore, a step or block representing one or more information transmissions may correspond to information transmissions between software and / or hardware modules within the same physical device. However, other information transmissions are also possible between software and / or hardware modules in different physical devices. 【0168】 The specific arrangement shown in the drawings should not be considered limiting in any way. It should be understood that in other embodiments, the number of each element shown in the drawings may be increased or decreased. Furthermore, some of the illustrated elements may be combined or omitted. Moreover, an exemplary embodiment may include elements not shown in the drawings. 【0169】 While various aspects and embodiments are disclosed herein, other aspects and embodiments will be apparent to those skilled in the art. The various aspects and embodiments disclosed herein are for illustrative purposes only and are not intended to limit in any way; the true scope is given by the following claims.
Claims
[Claim 1] A controller computer device, A memory containing controller data representing the functions of the aforementioned controller computer device, The first instance of the request-response protocol involves sending a controller request to an agent computer device, wherein the controller request includes the controller data. After sending the controller request, the agent computer device receives an agent request on a second instance of the request-response protocol, the agent request includes agent data representing the functions of the agent computer device, and the agent request is received. To store at least a portion of the agent data in the memory, On the second instance of the request-response protocol, the controller response to the agent request is sent to the agent computer device, and the controller response confirms and transmits the receipt of the agent request. After sending the controller response, the agent computer device receives an agent response on the first instance of the request-response protocol, and the agent response confirms that the controller request has been received. One or more processors configured to perform the following: A controller computer device equipped with the following features. [Claim 2] The one or more processors Establish a first execution thread for operations related to sending the controller request and receiving the agent response, Establish a second execution thread for operations related to receiving the agent request and sending the controller response, The controller computer device according to claim 1, further configured to perform the following: [Claim 3] The controller request further includes instructions to the agent computer device in order to perform agent operations related to the controller data, The controller computer device according to claim 1, wherein the agent request further includes the status of the agent operation. [Claim 4] The controller computer device according to claim 1, wherein the controller request is configured to cause the agent computer device to determine a subset of the functions of the agent computer device that are compatible with and / or synchronized with the functions of the controller computer device. [Claim 5] The controller computer device according to claim 1, wherein the agent request further includes an instruction for a subset of the functions of the agent computer device that are compatible with and / or synchronize with the functions of the controller computer device. [Claim 6] The controller computer device according to claim 5, wherein at least a portion of the agent data stored in the memory includes data associated with the subset of functions of the agent computer device. [Claim 7] The one or more processors The controller computer device according to claim 5, further configured to synchronize and / or make compatible a corresponding subset of the functions of the controller computer device with the subset of the functions of the agent computer device, based on the instructions in the agent request. [Claim 8] Agent computer equipment, A memory containing agent data representing the functions of the agent computer device, Receiving a controller request from a controller computer device on a first instance of a request-response protocol, wherein the controller request includes controller data representing the functions of the controller computer device. To store at least a portion of the controller data in the memory, After receiving the controller request, the agent sends an agent request to the controller computer device on a second instance of the request-response protocol, the agent request including at least a portion of the agent data. The controller computer device receives a controller response to the agent request on the second instance of the request-response protocol, and the controller response confirms that the agent request has been received. After receiving the controller response, the agent sends an agent response to the controller computer device on the first instance of the request-response protocol, the agent response confirming and transmitting the receipt of the controller request. One or more processors configured to perform the following: An agent computer device equipped with the necessary components. [Claim 9] The one or more processors Establish a first execution thread for operations related to receiving the controller request and sending the agent response, Establish a second execution thread for operations related to sending the agent request and receiving the controller response, The agent computer device according to claim 8, further configured to perform the following: [Claim 10] The controller request further includes an instruction for the agent computer device to perform an agent operation related to the controller data, The one or more processors are further configured to perform the agent operation, The agent computer device according to claim 8, wherein the agent request further includes the status of the agent operation. [Claim 11] The agent computer device according to claim 8, wherein the controller request is configured to cause the agent computer device to determine a subset of the functions of the agent computer device that are compatible with and / or synchronized with the functions of the controller computer device. [Claim 12] The agent computer device according to claim 8, wherein the agent request further includes an instruction for a subset of the functions of the agent computer device that are compatible with and / or synchronize with the functions of the controller computer device. [Claim 13] The agent computer device according to claim 12, wherein at least a portion of the controller data stored in the memory includes data associated with a subset of the functions of the controller computer device corresponding to the subset of the functions of the agent computer device. [Claim 14] The agent computer device according to claim 12, wherein the instruction in the agent request is configured to cause the controller computer device to synchronize and / or make compatible a corresponding subset of the functions of the controller computer device with the subset of the functions of the agent computer device. [Claim 15] The controller computer device sends a controller request to the agent computer device on a first instance of the request-response protocol, wherein the controller request includes controller data representing the functions of the controller computer device. After sending the controller request, the controller computer device receives an agent request from the agent computer device on a second instance of the request-response protocol, wherein the agent request includes agent data representing the functions of the agent computer device. To store at least a portion of the agent data in the memory of the controller computer device, The controller computer device transmits a controller response to the agent request to the agent computer device on the second instance of the request-response protocol, and the controller response confirms and transmits the receipt of the agent request. After sending the controller response, the controller computer receives an agent response from the agent computer device on the first instance of the request-response protocol, and the agent response confirms that the controller request has been received. Methods that include... [Claim 16] The controller request is received by the agent computer device, To store at least a portion of the controller data in the memory of the agent computer device, In response to receiving the controller request, the agent computer device determines a subset of the agent computer device's functions that are compatible with and / or synchronized with the functions of the controller computer device, The agent computer device transmits the agent request to the controller computer device on the second instance of the request-response protocol, It further includes, The method of claim 15, wherein the agent request further includes an instruction for the determined subset of the functions of the agent computer device. [Claim 17] At least a portion of the agent data stored in the memory of the controller computer device includes data associated with the determined subset of the functions of the agent computer device, At least a portion of the controller data stored in the memory of the agent computer device includes data associated with a subset of the functions of the controller computer device corresponding to the subset of the functions of the agent computer device, The method described above is The method according to claim 16, further comprising the controller computer device synchronizing a corresponding subset of the functions of the controller computer device with the subset of the functions of the agent computer device based on the instructions in the agent request. [Claim 18] The controller response is received by the agent computer device, After the agent computer device receives the controller response, the agent computer device transmits the agent response to the controller computer device on the first instance of the request-response protocol. The method according to claim 15, further comprising: [Claim 19] The controller computer device executes the operation of the first instance of the request-response protocol on the first controller execution thread, and executes the operation of the second instance of the request-response protocol on the second controller execution thread. The agent computer device executes the operation of the first instance of the request-response protocol on the first agent execution thread, and executes the operation of the second instance of the request-response protocol on the second agent execution thread. The method according to claim 15, further comprising: [Claim 20] The method according to claim 15, wherein the request-response protocol includes a communication protocol compliant with REST (Representational State Transfer) and / or a communication protocol modeled on REST.