Cloud-based composable data layer
By introducing data plug-in components in a single-page application, allowing client devices to interact with services implemented by multiple computers and breaking down composite requests, the problem of SPA startup and switching delay is solved, achieving more efficient user experience and system performance.
Patent Information
- Application Number
- CN201980060746.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2018-09-21
- Filing Date
- 2019-06-26
- Publication Date
- 2025-02-18
- Estimated Expiration
- 2039-06-26
AI Technical Summary
Single-page applications (SPAs) require downloading a large number of architectural and code resources during startup or switching, resulting in significant latency and high upfront costs, increasing user-aware latency and system load.
By introducing data plug-in components into the system, the client device allows interaction with services implemented by multiple computers, receive composite requests and decompose them into multiple actions, execute and respond separately, to reduce the startup and switching delay of a single page application.
This method significantly reduces SPA startup and handover delays by decomposing composite requests and parallel execution actions, improves user experience, and reduces system load.
Smart Images

Figure CN112740182B_ABST
Abstract
Description
Background Art
[0001] For web applications, single-page application design features that do not execute new browser pages are loaded when the user interacts with it. Once the user is within the SPA, this design paradigm provides a very responsive experience with low end-user perceived latency (EUPL). However, the upfront costs involved in launching a SPA or changing from one SPA to another are high, including downloading a large amount of architecture and other code resources, retrieving data from services used to generate the initial view, and executing code resources, including processing data from the service and presenting the corresponding view. This results in some noticeable delays when launching the SPA, which greatly increases the EUPL. Conventional solutions involve adding more and more (and increasingly decentralized) functionality to the SPA, resulting in large, monolithic applications, resulting in unnecessary dependencies in software development and management, and increasing size and memory consumption for large applications. Summary of the invention
[0002] According to a first aspect of the present disclosure, a system for interacting with one or more remote client devices, the system comprising: one or more processors; and one or more machine-readable media storing instructions, the instructions, when executed by the one or more processors, cause the one or more processors to: establish a first network connection with a first client device; and identify a first plurality of data plug-in components for a first application, each data plug-in component being configured to provide access to one or more computer-implemented services, wherein the first plurality of data plug-in components include a first data plug-in component and a different second data plug-in component. The instructions also cause the one or more processors to: receive a first composite request from the first client device via the first network connection, the first composite request identifying a first plurality of actions, including a first action associated with the first data plug-in component and a second action associated with the second data plug-in component. In addition, the instructions also cause the one or more processors to: in response to determining that the first composite request identifies a first action, execute the first action by executing a portion of the first data plug-in component to perform a first transaction using a first computer-implemented service, and obtain first response data based on the first transaction; and in a first transmission and in response to the first composite request, transmit the first response data to the first client device via the first network connection. The instructions also cause the one or more processors to: in response to determining that the first composite request identifies a second action, perform the second action by executing a portion of the second data plug-in component to perform a second transaction using a second computer-implemented service, and obtain second response data based on the second transaction, wherein the second computer-implemented service is different from the first computer-implemented service; and transmit the second response data to the first client device via the first network connection in a second transmission separate from the first transmission and in response to the first composite request.
[0003] According to a second aspect of the present disclosure, a method for interacting with one or more remote client devices, the method comprising: establishing a first network connection with a first client device; and identifying a first plurality of data plug-in components for a first application, each data plug-in component being configured to provide access to one or more computer-implemented services, wherein the first plurality of data plug-in components comprises a first data plug-in component and a different second data plug-in component. The method further comprises: receiving a first composite request from the first client device via the first network connection, the first composite request identifying a first plurality of actions, including a first action associated with the first data plug-in component and a second action associated with the second data plug-in component. In addition, the method comprises: in response to determining that the first composite request identifies a first action, executing the first action by executing a portion of the first data plug-in component to perform a first transaction using a first computer-implemented service, and obtaining first response data based on the first transaction; and transmitting the first response data to the first client device via the first network connection in a first transmission and in response to the first composite request. The method also includes: in response to determining that the first composite request identifies a second action, performing the second action by executing a portion of the second data plug-in component to perform a second transaction using a second computer-implemented service, and obtaining second response data based on the second transaction, wherein the second computer-implemented service is different from the first computer-implemented service; and transmitting the second response data to the first client device via the first network connection in a second transmission separate from the first transmission and in response to the first composite request.
[0004] This summary is provided to introduce some concepts in a simplified form, which are further described in the detailed description below. This summary is neither intended to identify key features or essential features of the claimed subject matter nor to be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure. BRIEF DESCRIPTION OF THE DRAWINGS
[0005] The accompanying drawings depict one or more implementations according to the present teachings by way of example only and not limitation. In the accompanying drawings, like reference numerals refer to the same or similar elements. In addition, it should be understood that the accompanying drawings are not necessarily drawn to scale.
[0006] Figure 1 An exemplary system is illustrated in which various client devices utilize data services to interact with various computer-implemented services.
[0007] Figure 2 The diagram shows the client device and the Figure 1 An example of the interaction between the various data service instances provided by the data service shown in .
[0008] Figure 3 The diagram shows Figure 2 An example of a data service instance shown in FIG. 1 processing a composite request received from a first SPA instance.
[0009] Figure 4 The diagram is similar to Figure 3 , but wherein the pending activity is cancelled in response to receiving a new composite request message from the first SPA instance while there is a currently pending composite request.
[0010] Figure 5 An example is illustrated in which a first SPA instance and a data service instance perform activities related to prefetching code and data for different SPAs.
[0011] Figure 6 The client device has been Figure 2-5 An example of executing a first SPA instance transitioning to executing a different second SPA instance while continuing to maintain the same network connection initially established for the first SPA instance is shown in FIG.
[0012] Figure 7 An example of operations performed between and within fabric and data service instances to offload a first SPA instance is illustrated.
[0013] Figure 8 is a block diagram illustrating an exemplary software architecture, portions of which may be used in conjunction with the various hardware architectures described herein.
[0014] Fig. 9 is a block diagram illustrating components of an example machine configured to read instructions from a machine-readable medium and perform any of the features described herein. DETAILED DESCRIPTION
[0015] In the detailed description below, many specific details are set forth by way of example in order to provide a thorough understanding of the relevant teachings. However, it should be understood that the present teachings can be practiced without such details. In other cases, in order to avoid unnecessary confusion of various aspects of the present teachings, known methods, processes, components and / or circuits have been described at a relatively high level without details. In the following materials, indications of direction (such as "top" or "left side") are only for providing a reference frame in the discussion below, and are not intended to indicate the required, desired or expected orientation of the described article, unless explicitly stated.
[0016] Figure 1 An exemplary system 100 is illustrated in which various client devices 110, 120, 130, and 190 utilize a data service 160 to interact with various computer-implemented services 170 and 180. Figure 1 In FIG. 1 , a client device 110 is used by a first user 102a. The client device 110 is executing a first application instance 112 of a first application (which may be simply referred to as an “application” and is Figure 1 102a) and a first user 102a is interacting with a first application instance 112 through a view 116 presented to the first user 102a via a display device 114. Display device 114 may be referred to as a "display". In some examples, display device 114 is included in client device 110, and in some examples, display device 114 is communicatively coupled to client device 110. First application instance 112 causes view 116 to be presented for display to first user 102a. For purposes of discussion, Figure 1 Other aspects of the client device 110 are not shown; examples of such aspects of the client device 110 are described below in conjunction with Figure 8 and Fig. 9 In some examples, the first user 102a is associated with the client device 110 and / or the first application instance 112. The first application instance 112 is configured to establish and has established a first network connection (at the time of the first network connection) with the data service 160 via one or more data communication networks 138. Figure 1 ) to utilize various computer-implemented services, such as one or more services 170 and / or external services 180.
[0017] In some implementations, the first application instance 112 is a web browser application (in Figure 1116 ). An instance of a first web application executed within an execution environment provided by a browser (not shown) or a similar execution environment. Exemplary web browser applications include, but are not limited to, Microsoft's Edge browser, Mozilla's Firefox browser (mobile or desktop), Apple's Safari browser (mobile or desktop), and Google's Chrome browser (mobile or desktop). For example, the web browser application can establish one or more network connections with a web server 140a via one or more networks 138, retrieve web application resources 142a including code resources 144a (such as, but not limited to, HTML, JavaScript, web assembly, and / or CSS resources) from the web server 140a, and execute the retrieved web application resources 142a as a first application instance 112. The web browser application can provide a canvas, which can be provided in conjunction with a tab or window presented via a display device 114 to render a view 116. In some examples, the first application instance 112 is a web application implemented as a single page application (SPA).
[0018] The second user 102b is using both the client device 120 and the client device 130. The client device 120 is executing the second application instance 122a and the third application instance 122b, which present respective views 126a and 126b via the display device 124. The client device 120, the display 124, the first and second application instances 122a and 122b, and the views 126a and 126b can be configured substantially the same as described for the client device 110, the display 114, the first application instance 112, and the view 116. The second application instance 122a is configured to establish and has established a second network connection with the data service 160, and the second application instance 122b is configured to establish and has established a third network connection with the data service 160 that is different from the first network connection.
[0019] In some examples, the second application instance 122a and / or the third application instance are web applications, as discussed for the first application instance 112. In some examples, a single web browser application instance can provide a first tab and / or window associated with the second application instance 122a, and a second tab and / or window associated with the third application instance 122b that is different from the first tab and / or window. In some examples, the second application instance 122a and the third application instance 122b are for the same web application; for example, the second user 102b can use multiple tabs and / or windows for the same web application simultaneously, resulting in corresponding application instances and corresponding network connections with the data service 160. In examples where the second and third application instances 122a and 122b are executed simultaneously within a single web browser application instance, the second and third application instances 122a and 122b are considered separate application instances in this description.
[0020] In some examples, a web browser application is located at a first domain ( Figure 1 DOMAIN1) to connect to the first web server 140a to retrieve the code resource 144a to execute the second application instance 122a, and the web browser application is in a second domain different from the first domain (in Figure 1 DOMAIN2") to retrieve a different code resource 144b to execute the third application instance 122b. For example, a web browser is provided with a domain name for the first domain, such as "www.foo.net", which is resolved via the Domain Name System (DNS) to a network address to which the web browser can connect to interact with the first web server 140a. The web browser application treats the first domain and the second domain as different "origins", resulting in certain browser-enforced restrictions on interactions between the second application instance 122a and the third application instance 122b. Similarly, the first user 102a can transition a web browser tab or window from the first application instance 112 to a different web application served from a different domain.
[0021] The client device 130 is executing a local application instance 132 of a local application, and the local application instance 132 is configured to connect via one or more networks 138 to establish and has established a fourth network connection with the data service 160 (at Figure 114 and 15). In some examples, client device 130 may utilize a display device to present a view of local application instance 132, similar to display device 114 and view 116 of client device 110. However, in some examples, local application instance 132 is not configured to utilize such a display device. Instead of being configured to be downloaded by a web browser application for execution within an execution environment provided by the web browser application, executable resources 133 for local applications are configured to be installed in a storage unit included in client device 130 and retrieved therefrom. Executable resources 133 for local applications may include, but are not limited to: one or more precompiled program modules in machine language, interpreted code (e.g., code written in the Python programming language), and / or bytecode. In some examples, the local application is obtained as a local application package 136 from a local application provider 134 via (one or more) networks 138. In some examples, local application provider 134 is implemented as an "app store" such as, but not limited to: Microsoft Store, Google Play (for Android or Chrome OS platforms), and Apple App Store (for iOS platforms). In some examples, the local application package 136 can be provided in a software installer package file format, such as, but not limited to, an APK file for Android, a PKG file for iOS, an RPM file for Fedora Linux, and an MSI file for Windows Installer. In some examples, client devices 110, 120, 130, and / or 190 are capable of executing both network applications and local applications.
[0022] The third user 102n is using the client device 190. Figure 2 Client devices 110, 120, 130, and / or 190 may also be referred to as "client computing devices" and are merely exemplary embodiments.
[0023] exist Figure 1 In the example shown in , a server cluster 150 is configured to provide a data service 160, in which a plurality of computer processors operate in a "cloud computing" environment or as "software as a service" (SaaS). In some examples, such as in Figure 1 As shown in , server cluster 150 is configured to provide a cache 174 used by data service 160 and / or computer-implemented service 170 (which may be referred to simply as a “service”) that utilizes the cache 174 to perform transactions. For example, Microsoft Azure cloud computing service or other cloud computing service is a suitable platform for server cluster 150.
[0024] Data service 160 provides Figure 1 The remote client devices of the client devices 110, 120, 130 and 190 shown in FIG. 1 provide services for utilizing various computer-implemented services, such as one or more services 170 and / or external services 180, according to a consistent interface for the client devices. Figure 1 In the example illustrated in , data service 160 is configured to receive network connections from application instances on remote client devices via network(s) 138 and instantiate an individual data service instance (such as data service instance 162a) for each established network connection to service a client transaction. Figure 1 In the example shown in , there are individual network connections between application instance 112 and data service instance 162a, between application instance 122a and data service instance 162b, between application instance 122b and data service instance 162c, between local application instance 132 and data service instance 162d, and between client device 190 and data service instance 162e. In some examples, data service instances 162a, 162b, 162c, 162d, and 162e operate in respective virtual machines that execute virtual machine images contained in data service component 164, thereby providing isolation and protection. Such virtual machines may be implemented using, for example, hypervisor-based virtualization and / or container-based virtualization.
[0025] In some examples, such as in Figure 1 As shown in , there may be more than one external computer-implemented service 180 that is not implemented within server cluster 150, and data service 160 can utilize service 180 to perform transactions very similar to service 170, but via (one or more) networks 138. In some examples, server cluster 150 can be managed by a first party, while external service 180 can be managed by a different party. In some examples, such as in Figure 1 As shown in , server computer system 182 may be configured to utilize data service 160 via network(s) 138 .
[0026] although Figure 1 Only a single instance of local application provider 134, data service 160, cache 174, external service 180, and server 182 is illustrated, but in some examples, multiple instances of one or more of these elements may exist. Similarly, additional network servers similar to network servers 140a and 140b may be provided.
[0027] Figure 2 The diagram shows the client device 190 and the Figure 1160. Client device 190 may include any of the features described for client devices 110, 120, and 130, and any of the features described for client device 190 may be included in client device 110, client device 120, and / or client device 130. Note that although Figure 2-7 The examples in the examples are discussed with respect to single page applications executed within a web browser application, but the described techniques can also be applied to providing web applications to a web browser application, a native application (such as in Figure 1 Local applications 132 in ), other network-enabled applications, and applications such as Figure 1 A multi-page web application executed in a server system of server 182 in provides access to computer-implemented services.
[0028] exist Figure 2 In the example, the client device 190 is executing the web browser application instance 210, which is different from the example in Figure 1102n for client devices 110 and 120. A first single page application (SPA) instance 216a is executing within the web browser application instance 210 and has a corresponding first view 222a presented to the user 102n via the display device 220. To execute the first SPA instance 216a, the web browser application instance 210 retrieves the architecture 212 and a first SPA code resource 214a configured to implement the first SPA instance 216a using the architecture 212. The architecture 214 and the first SPA code resource 214a each include code executable by the web browser application instance 210, such as, for example, HTML, scripts (e.g., according to the JavaScript language) and / or binary instructions (e.g., in the form of WebAssembly modules). The first SPA code resource 214a controls the rendering of the first SPA view 222a (e.g., generating a user interface (UI) including a selected UI element), actions performed via the data service instance 162e in response to events including user input events, and re-rendering of the page in response to new data. The architecture 212 provides code resources for establishing a network connection with the data service 160, maintaining such a network connection, serializing and transmitting action requests (including associated data) to the data service 160, receiving and deserializing data from the data service 160, and communicating application and connection states to the first SPA instance 216a and the data service 160. In some implementations, the first SPA instance 216a is configured to generate an initial view based on data retrieved from the data service instance 162e, perform transactions with one or more computer-implemented services via the data service instance 162e in response to detecting user interaction with the first SPA view 222a, and modify portions of the first SPA view 222a in response to data received from the data service instance 162e.
[0029] exist Figure 2In the example, the architecture 212 has established a network connection 230 with the data service instance 162e via the data service 160. A persistent network connection is maintained by interaction between the architecture 212 and a data center component 232 (which may be referred to as a "data center"). In this example, the network connection 230 is maintained until the tab or window for the first SPA instance 216a experiences a page reload, experiences a page load (e.g., due to navigation to a new starting point), or is closed. In some examples, the network connection is implemented using an ASP.NET SignalR connection. In some examples, the network connection can remain established despite the interruption of the automatically reestablished underlying transport connection; for example, according to logic that maintains the SignalR connection ID. In some examples, the network connection is implemented using a WebSocket connection (e.g., SignalR with a WebSocket transport) for low-latency bidirectional communication of data and messages between the first SPA instance 216a and the data service instance 162e. By implementing network connection management features in the architecture 212, the first SPA code resource 214a is simplified and obtains a robust communication channel with the data service 160. In some examples, as part of establishing the network connection 230, the infrastructure 212 and / or the first SPA instance 218a can authenticate with the data service 160 and / or one or more computer-implemented services with which the data service instance 162e interacts.
[0030] In response to establishing the network connection 230, a data connection controller component 234 (which may be referred to as a "data connection controller") is instantiated for the network connection 230. The data connection controller 234 is configured to respond to a plug-in service management request message received via the connection 230. A "request message" may also be referred to as a "request." For example, as part of an initialization phase for the first SPA instance 216a, the first SPA instance 216a may issue a "create plug-in service" request message, in response to which the data connection controller 234 instantiates a plug-in service component 240a (which may be referred to as a "plug-in service"). In some examples, the "create plug-in service" request message includes an application identifier, and the data connection controller 234 instantiates a single plug-in service only for the application identifier. In some implementations, a common plug-in service component is used for each plug-in service instance, as well as application-specific logic in the data plug-in component and / or the data source component.
[0031] In some examples, the "create plug-in service" request message may include a software version identifier to indicate a specific version of the plug-in service component 240a for retrieval and instantiation. The software version identifier allows control of code components instantiated for various deployments (such as for development, testing, and / or production). In some implementations, the data connection controller 234 utilizes a component retriever 236, which is configured to selectively retrieve components for dynamic instantiation, such as plug-in service components, plug-in components, and data source components associated with the SPA instance for instantiation. The component retriever 236 can be configured to retrieve such components from a local storage device contained in the data service instance 162e (if deployed to the storage device), from a data service component 164 maintained by the data service 160 (if deployed therein), or from elsewhere, and can be configured to select a version of the component based on the provided software version identifier.
[0032] The data connection controller 234 is also configured to receive plug-in service request messages (request messages executed by the plug-in service) and data plug-in request messages (request messages indicating actions to be performed by the plug-in, such as in Figure 2 In some examples, an application identifier or plug-in service identifier unique to each plug-in service instantiated by the data service instance 162e is associated with each plug-in service, the application identifier or plug-in service identifier is included in the plug-in service request message and the plug-in request message, and the data connection controller 234 is configured to route the received request message to the plug-in service associated with the application identifier or plug-in service identifier included in the received request message.
[0033] In some implementations, the plugin service 240a is configured to, in response to receiving a "create plugin" plugin service request message identifying a selected plugin, such as the export plugin 244a or the data plugin 250a, instantiate a plugin component corresponding to the identified plugin. In some examples, the "create plugin" plugin service request message includes one or more configuration parameters of the plugin application to be instantiated as part of an initialization phase of the plugin or for one or more actions performed by the plugin. In some examples, the first SPA instance 216a is configured to issue one or more "create plugin" request messages to instantiate the plugin to perform transactions with the selected service as part of an initialization phase for the first SPA instance 216a. In some examples, one or more data plugin components may be identified in the "create plugin service" request message and include corresponding configuration parameters and instantiated in a similar manner. Thus, the first SPA instance 216a is able to utilize the data service instance 162e as a "composable" data layer, wherein the selected composition of the instantiated plugin is used by the first SPA instance 216a. The plug-in service 240a is also configured to provide a set of code components that notify the plug-in instantiated for the plug-in service of the receipt of a new data plug-in request message. The plug-in service 240a is also configured to provide a set of code components that receive and transmit data generated by the data plug-in as a result of processing the data plug-in request message. These two sets of components are schematically illustrated as a first request bus 242a.
[0034] In some implementations, such as in Figure 2 As shown in , an export plug-in component (which may be referred to as an "export plug-in" or "aggregate plug-in") is instantiated for each plug-in service, such as a first export plug-in 244a associated with a first plug-in service 240a. The export plug-in 244a is configured to provide data generated by some or all data plug-ins to the plug-in service 240a for transmission to the first SPA instance 216a via the network connection 230. In some examples, the export plug-in 244a is configured to provide such data to the plug-in service 240a only for selected data plug-ins, and the data plug-in is selected based on identification or whitelisted and / or blacklisted data plug-ins. For example, the whitelisted and / or blacklisted data plug-ins may be included as a configuration parameter in a "create plug-in" plug-in service request message for the export plug-in 244a, or the export plug-in 244a may implement one or more actions to dynamically whitelist and / or blacklist the specified data plug-in. In some implementations, some or all of the features described for the export plug-in 244a may be implemented by the plug-in service 240a instead.
[0035] The DataPlugin component can be configured to do one or more of the following:
[0036] In response to the data plugin request message identifying the action, via a data source component (such as data source 252a, which is configured to interact with service 260a) by executing a command to interact with a computer-implemented service (such as Figure 2 Service 260a) in executes a transaction to perform an action (e.g., by executing a portion of a data plug-in component).
[0037] Utilizing one or more data source components, each configured to interact with one or more computer-implemented services. In some examples, the data plugin causes the data source component to be instantiated for the data plugin; for example, as part of an initialization phase for the data plugin.
[0038] Outputting one or more data portions as a result of performing an action in response to a data plugin request message identifying the action. In some examples, the output data portions merely indicate the action that has been performed. Such data portions may be transmitted to the client device in response to the data plugin request message.
[0039] Indicates when the DataPlugin component has completed all actions associated with the DataPlugin component in pending DataPlugin request messages.
[0040] • Performing an action in response to another data plugin outputting a data portion. In some examples, an action may be performed based on the content of a data portion.
[0041] Outputting one or more data portions as a result of performing an action in response to another data plugin outputting a data portion. The output data portions may be transmitted to the client device rather than in response to a pending data plugin request message.
[0042] • The transaction is performed without utilizing any data source component, and therefore without utilizing computer-implemented services.
[0043] Outputting one or more data portions in response to a service-initiated event indicated by a data source for the service and not corresponding to a pending data plugin request message. For example, an email service asynchronously reports that a new email has just been received, even though there is no pending transaction with the email service.
[0044] In response to a cache-initiated event indicated by a data source, output one or more data portions. For example, a data source may be subscribed to by a cache key value and receive asynchronous reports that a new value has been stored for the cache key value.
[0045] In response to some other event detected by the data plugin, output one or more data portions. The output data portions may be transmitted to the client device rather than in response to a pending data plugin request message. For example, the data plugin outputs the data portions in response to expiration of a timer.
[0046] The data source component is configured to interface with the data plug-in component and enable the data plug-in component to interact with a computer-implemented service, such as service 260a. The data source component is configured to interact with the service according to data formatting and protocol requirements for the service. In some examples, the data source component is configured to authenticate to the service. In some implementations, there are defined interfaces for interaction between the data plug-in component and the data source component to facilitate reuse of the data source component across different data plug-in components and / or replacement of the data source component with a different data source component.
[0047] In some examples, the data source component is configured to utilize a portion of the cache 274. For example, the data source component can be configured to use the cache 174 to accelerate data request operations (e.g., data requests from data plugins and / or requests for data from services) by determining whether the cache 174 has unexpired cacheable data stored in association with a key value. If so, the data source component retrieves the stored cacheable data. If not, the data source component performs a transaction with the service (e.g., requests data from the service), obtains cacheable data based on the transaction (which may include data generated based on data received from the service as a response to the transaction), and stores the obtained cacheable data in the cache 174 in association with the key value. As a result, data request operations can be performed later with significantly reduced latency.
[0048] exist Figure 2 In the example shown in , a first data plugin component 250a has been instantiated for a first SPA instance 216a. The first data plugin 250a is configured to utilize, and in some examples instantiate, a first data source component 252a for performing transactions with an associated first computer-implemented service 260a. The association with the service 260a is described in Figure 2 102n. In some examples, portion 270a corresponds to one or more key values used by first data source 252a to store and / or retrieve cacheable data utilizing cache 174. The association with cache portion 270a is described in detail in the accompanying drawings. Figure 2There is also a second data plugin 250b, which has a similar association with plugin service 240a, data source 252b, service 260b (illustrated by the "S2" symbol), and a second portion of cache 174 (illustrated by the "C2" symbol). Figure 2 Each of the services 260a, 260b, 260c, and 260d shown in FIG. Figure 1 The corresponding one of the services 170 in or the external services 180.
[0049] In some implementations, as shown in the figures, the data service instance 162e is configured to receive and process a composite data plugin request message (which may be referred to as a "composite request"), such as in Figure 2 and Figure 3 The composite request 280 shown in . The composite request identifies multiple actions to be performed by a total of one or more associated data plug-ins, wherein one or more actions are identified for each associated data plug-in. In some examples, the composite request identifies actions to be performed by a total of two or more data plug-ins. In some examples, the composite request identifies a first action and a second subordinate action automatically performed by the data service instance 162e based on data obtained as a result of performing the first action, thereby generating a "linked" request. In some implementations, the composite request includes a key / value dictionary, the key / value dictionary including a key and / or value identifying each action. In some examples, the key / value dictionary includes data for the action to be used by its associated data plug-in to perform the action (which may be referred to as "action data" or "action parameters").
[0050] Figure 3 The diagram shows Figure 2 , an example of the data service instance 162e processing a composite request 280 received from the first SPA instance 216a. At operation 300, the first SPA instance 216a generates the composite request 280 and transmits the composite request 280 to the data service instance 162e via the network connection 230. As a result, at operation 302, the data connection controller 234 routes the composite request 280 to the plug-in service 240a. In response to receiving the composite request 280, the plug-in service 240a starts a new composite response lifecycle, wherein the pending request 282 is for the composite request 280 for managing the composite response lifecycle. In some implementations, the data plug-ins 250a and 250b subscribe to the plug-in service 240a to receive notifications of new pending requests.
[0051] In this example, the composite request 280 identifies a first action associated with the first data plugin 250a and a second action associated with the second data plugin 250b. At operation 304, the first data plugin 250a detects the first action of the pending request 282 as being associated with the first data plugin 250a. In response to such detection of the first action in the pending request 282, the first data plugin 250a performs the first action, resulting in the first data plugin 250a issuing a data source request 306 to the data source 252a associated with the data plugin 250a, indicating a transaction to be performed by the data source 252a. At operation 308, in response to receiving the data source request 306, the data source 252a issues a corresponding service request 310 to the service 260a to perform the first transaction associated with the data source 252a using the service 260a. At operation 312, the service 260a receives the first transaction, which will ultimately result in a service response 324 indicating that the first transaction has been completed. A similar series of operations are performed with respect to the second action of pending request 282 at operations 314 , 318 , and 322 , which will ultimately result in a service response 344 from service 260 b indicating that the second transaction has been completed for service request 320 .
[0052] At operation 326, the data source 252a receives the service response 324 (or otherwise determines that the first transaction with the service 260a has completed), and indicates to the data plugin 250a that the data source request 306 has completed. In some examples, the data plugin 250a provides data based on the first transaction; for example, the data may indicate that the first transaction has completed, or may be generated based on data received from the service 260a in the service response 324. At operation 328, in response to the data source 252a completing the data source request 306, the data plugin 250a outputs plugin data 330. Additionally, in response to determining that all actions (in this example, the first action) of the pending request 282 associated with the first data plugin 250a have been performed, the first data plugin 250a generates a plugin completion indication 334. In some examples, the plugin data 330 is provided for the plugin completion indication 334.
[0053] At operation 332, the export plugin 244a obtains the plugin data 330, and determines at operation 336 that the first data plugin 250a has performed all actions associated with the pending request 282. Similarly, at operation 332, the export plugin 244a determines that the plugin data 330 is to be transmitted to the first SPA 216a in response to the pending request 282, and causes a data increment including the plugin data 330 to be transmitted at operation 338. For example, the export plugin 244a can execute a "transfer data increment" method provided by the plugin service 240a. In some implementations, depending on the timing of when the plugin data is provided, the export plugin 244a can collect data from multiple plugin data items (such as plugin data 330). For example, the export plugin 244a can be configured to transmit the data increment in response to a timer event, such as, but not limited to, within 50 milliseconds of receiving the first plugin data (such as plugin data 330) included in the data increment. At operation 340, the plug-in service 240a, in response to operation 338, calls a method on the data connection controller 234, which causes a data delta message 284 to be transmitted to the first SPA instance 216a via the network connection 230. Since this is the first data delta message transmitted in response to the pending request 282, which can be indicated by the export plug-in 244a at operation 338, the data delta message 284 can include a "first message" indication. At operation 342, the first SPA instance 216a responds to the data delta message 284; for example, the first SPA instance 216a can be configured to automatically update the model based on the data delta message 284 and make corresponding changes to the SPA view 222a presented on the display device 220.
[0054] At operation 346, the data source 252b receives the service response 344 (or otherwise determines that the second transaction with the service 260b has completed), and provides the corresponding data to the data plugin 250b in response to the data source request 316. As a result, as described with respect to operations 328, 336, 338, and 340, the corresponding operations 348, 352, 358, and 360 result in a second data delta message 362, which includes the plugin data 350 generated based on the service response 344 to be transmitted to the first SPA instance 216a via the network connection 230. At operation 364, the first SPA instance 216a responds to the second data delta message 362.
[0055] In this particular example, at operation 346, the data source 252b has not yet completed the data source request 316, and the data source 252b performs another transaction with the data source 252b, which is illustrated as a third service request 354. The third service request 354 ultimately results in a service response 366 from the service 260b, indicating that the third transaction has been completed. As a result, as described for operations 326, 328, 332, 338, and 340, corresponding operations 368, 370, 374, 380, and 382 cause a third data delta message 384 to be transmitted to the first SPA instance 386 via the first connection 230. As described for operation 328, at operation 370, in response to determining that all actions (in this example, the second action) of the pending request 282 associated with the second data plugin 250b have been performed, the second data plugin 250b generates a plugin completion indication 376. In some examples, the plugin data 372 is provided for the plugin completion indication 376. Since all data plugins have completed their actions for the pending request 282, the third data delta message 384 will be the last data delta message transmitted in response to the pending request 282, which can be indicated by the export plugin 244a at operation 380 in response to receiving the plugin completion indication 376 at operation 378, and the third data delta message 384 can include a "request completion" indication. In some implementations, additional request completion messages can be transmitted to the first SPA instance 216a. At operation 386, the first SPA instance 216a responds to the third data delta message 384. As a result, the first SPA instance 216a can transmit another composite request message (not shown) to the data service instance 162e, thereby starting another request life cycle.
[0056] Figure 4 The diagram is similar to Figure 3 , but in which the pending activity is cancelled in response to receiving a new composite request message 402 from the first SPA instance while there is a currently pending composite request 282. In this example, the Figure 3 The same operations 300, 302, 304, 308, 312, 314, 318, 322, 326, 328, 332, 336, 338, 340 and 342 as described in FIG. Figure 4 At operation 342 in FIG. 2 , the first action associated with the first data plugin 250a has been fully executed, and the data delta message 284 including the plugin data 330 has been transmitted to the first SPA instance 216a. In addition, the second action of the pending request 282 has not been fully executed, and the service 260b has not yet completed the request requested by Figure 4 The second transaction indicated by the service request 320 in .
[0057] At operation 400, the first SPA instance 216a generates a second composite request 402 and transmits the second composite request 402 to the data service instance 162e via the network connection 230 while the pending request 282 remains pending and not fully executed. For example, operation 400 may be performed in response to detecting user input (e.g., indicating that the user 102n wishes to perform a different action) or the expiration of a timer (e.g., a watchdog timer indicates that it took too long to complete the pending request 282).
[0058] As a result, as in operation 302, at operation 404, the second composite request 402 is routed to the plug-in service 240a. At operation 406, the plug-in service 240a determines that the previous pending request 282 for the composite request 280 remains pending when the second composite request 402 has been received. In some implementations, such as in Figure 4 As shown in , the plug-in service 240a is configured to terminate the current pending request and any related pending actions and service transactions in response to receiving a new composite request while the current pending request is still pending. Therefore, at operation 408, in response to determining at operation 406 that the pending request 282 is still pending, the plug-in service 250a indicates to the data plug-in the action of the pending request 282 that has not yet been fully executed to terminate the action associated with the pending request 282. At that time, only the second data plug-in 250b has not yet fully executed its action. At operation 410, the second data plug-in 250b responds to operation 408 to instruct the data source 252b to terminate the data source request 316 and / or any other activities performed for the pending request 282. At operation 412, the data source 252b responds to the instruction issued in operation 410 to terminate any activities that are being executed or scheduled to be executed for the data source request 316 and / or the pending request 282. In this example, data source 252b instructs service 260b to terminate the second transaction associated with the uncompleted service request 320. At operation 414, service 260b, in response to the instruction issued in operation 412, terminates the second transaction and / or any other activities being performed or scheduled to be performed for service request 420, data source request 316, and / or pending request 282.
[0059] At operation 416, the service 260b notifies the data source 252b that operation 414 has been or will be performed (e.g., the service 260b may acknowledge the instructions issued in operation 412, but complete activities related to termination after operation 416). At operation 418, the data source 252b notifies the second data plugin 250b that operation 412 has been or will be performed. At operation 420, the second data plugin 250a notifies the plugin service 240a that operation 410 has been or will be performed. At operation 422, in response to the notification at operation 420 (and other such notifications from other applicable data plugins), the plugin service 250a completes termination of the currently pending request 282. In some implementations, at operation 422, the plugin service 250a may cause a "compound request canceled" message (in Figure 4 280) is transmitted to the first SPA instance 216a via the network connection 230. The first SPA instance 216a may be configured to update the model to reflect the cancellation of the first pending request 282 for the composite request 280 before all actions indicated in the composite request 280 have been completed.
[0060] In response to receiving the second composite request 402 and completing the termination of the pending request 282 at operation 422, the plug-in service 240a begins a new composite response lifecycle, wherein a second pending request 430 for the second composite request 402 for managing the composite response lifecycle is similar to that described for the previous pending request 282. In this example, the second composite request 402 identifies one or more actions associated with the first data plug-in 250a and one or more actions associated with the second data plug-in 250b. As a result, as described for Figure 3 Operations 432, 436, 440, 442, 446, and 450 are performed similar to the previous description of corresponding operations 304, 308, 312, 314, 318, and 322 in FIG.
[0061] Figure 5An example is illustrated in which a first SPA instance 216a and a data service instance 162e perform activities related to prefetching code and data for a different SPA (referred to as a "second SPA"). In this example, a prefetch for a selected SPA is initiated by the first SPA instance 216a. For example, the first SPA instance 216a can be configured to identify a SPA application that has been recently or frequently used by the user 102n, and initiate a prefetch for the second SPA via the architecture 212. In some implementations, in response to a request for the first SPA instance 216a to perform a prefetch for the second SPA, the architecture 212 retrieves the second SPA code 214b, which is configured to create an instance of the second SPA. In addition, the first SPA instance 216a and / or the architecture 212 transmits a prefetch request message 520 via the network connection 230, resulting in a new pending request 522, which includes a prefetch action associated with a prefetch data plugin 510 (which can be referred to as a "prefetch plugin"). The prefetch data plugin 510 can be dynamically instantiated.
[0062] The pre-fetch data plugin utilizes a data source 512 configured to interact with services 260b, 260c, and 260d, as well as cache portions 270b and 270c also used by instances of the second SPA, as in Figure 6 In some examples, the pre-fetch data plug-in 510 can use multiple data sources; for example, two data sources can be used, much like in Figure 6 . In response to the prefetch action of the pending request 522, the data source 512 performs one or more transactions with the service 260c, as illustrated by the prefetch data service request 524, to obtain prefetch response data 526 from the service 260c. For example, "last known good" (LKG) data can be retrieved from the service 260c. In some examples, if the prefetch data 530 exists in the portion 270c of the cache 174 and the prefetch data 530 has not expired, the prefetch data service request 524 is not executed. The data source 512 is configured to obtain cacheable prefetch data 530 based on the prefetch response data 526 received from the service 260c. The obtained cacheable prefetch data 530 is stored in the portion 270c of the cache 174; for example, associated with one or more key values associated with the portion 270c. The result of these operations is that prefetch request message 520 causes portions of cache 174 associated with the second SPA (such as portions 270b and / or 270c) to be "filled" with fresh data, thereby increasing the probability of cache hits, which will speed up the initialization phase of the second SPA.
[0063] Figure 6The client device 190 has been Figure 2-5 An example of executing a first SPA instance 216a transitioning to executing a different second SPA instance 216b while continuing to maintain the same network connection originally established for the first SPA instance 216a is shown in FIG. Figure 6 In the example shown in FIG. 1 , cacheable prefetch data 530 is present in portion 270 c of cache 174, which is consistent with the Figure 5 Similar to what is described. Figure 6 In the example, the first SPA instance 216a has been de-instantiated, the first SPA code 214b has been uninstalled, and the second SPA instance 216b has been created using the second SPA code 214b. Figure 7 Similar to the instantiation and use of plug-in service 240a, in Figure 2 The export plug-in 244a, data plug-ins 250a and 250b, and data sources 252a and 252b for the first SPA instance 216a are described in the figure, and the plug-in service 240b, export plug-in 244b, data plug-ins 250c and 250d, and data sources 252c and 252b are instantiated and used for the second SPA instance 216b. Figure 6 In the example, the second SPA instance 216b is in the initialization phase and has transmitted a composite request 610 via the network connection 230 to retrieve data obtained from an associated computer-implemented service (e.g., services 260b, 260c, and / or 260d) for rendering an initial second SPA view 222b on the display device 220. Figure 3 As depicted, plugin service 240b begins a response lifecycle for pending request 612 of composite request 610. Pending request 612 includes an action associated with data plugin 252d, and when executing the action, data source 252b retrieves cached data 614 contained in prefetched data 530, resulting in data delta 616 including data based on cached data 614.
[0064] In some implementations, to transition from the first SPA instance 216a to the second SPA instance 216b, the framework 212 unloads the first SPA instance 216a, then executes the prerendering portion of the second SPA code 214b, which instantiates the second SPA instance 216b, then disposes of the first SPA instance 216a and its associated first SPA code 214a (which eliminates the first SPA view 222a), and then executes the rendering portion of the second SPA code 214b, resulting in the second SPA instance 216b providing the second SPA view 222b on the display device 220. Since the first SPA instance 216a and the second SPA instance 216b share the same persistent connection 230, the loading of the second SPA instance 216b is much faster than via a conventional full page load because the script components (such as the framework 212 and the second SPA code 214b) are already available, and the cache data 614 arrives from the cache 174 over the pre-established connection 230 with minimal overhead.
[0065] Figure 7 An example of operations performed between and within the architecture 212 and the data service instance 162e to uninstall a first SPA instance 216a is illustrated. Operations 700 to 726 relate to operations performed to uninstall the first SPA instance 216a. As part of an application uninstall process performed by the architecture 212, at operation 700, the architecture 212 transmits an uninstall application plug-in service management message 702 (which may be referred to as an "uninstall application message"). At operation 704, the data connection controller 234 instructs the plug-in service 240a to perform an uninstall operation. At operation 706, the plug-in service 240a for the first SPA instance 216a initiates the requested uninstall operation, which includes issuing an uninstall command 708 to the data plug-in. If there are pending requests that are still pending (such as pending request 282), the uninstall command 708 will terminate the pending request, such as in Figure 4 In this regard, operations 710, 712, 714, 716, 718, and 720 are similar to Figure 4, and corresponding operations 410, 412, 414, 416, 418, and 420 in . However, in response to receiving the uninstall command 708 by the data plugin 250b at operation 710, additional activities may be performed through operations 710, 712, and 714. For example, at operation 712, the data source 252b may close the session established with the service 260b, which would not be closed by operation 412. At operation 722, the plugin service 240a completes the uninstall operation started at operation 706. In response to the completion of operation 722, at operation 724, an uninstall completion message 726 is transmitted via the network connection 230 to the architecture 230. At step 728, in response to receiving the uninstall completion message 726, the architecture 212 continues to uninstall the first SPA instance 216a.
[0066] Combination Figure 1-7 Detailed examples of the described systems, devices, and techniques are presented below to illustrate the present disclosure and its benefits. Such usage examples should not be construed as limiting the logical process implementation of the present disclosure, nor should the user interface methods that vary from those described herein be considered outside the scope of the present disclosure. In some implementations, in Figure 1-7 The various features described in the can be implemented in corresponding modules, which can also be referred to as and / or include logic, components, units and / or mechanisms. The modules can constitute software modules (e.g., codes embodied on machine-readable media) or hardware modules.
[0067] In some examples, the hardware module can be implemented mechanically, electronically, or in any appropriate combination thereof. For example, the hardware module may include a dedicated circuit or logic configured to perform certain operations. For example, the hardware module may include a dedicated processor, such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC). The hardware module may also include a programmable logic or circuit temporarily configured by software to perform certain operations, and may include a portion of machine-readable medium data and / or instructions for such configuration. For example, the hardware module may include software contained within a programmable processor configured to execute a set of software instructions. It will be appreciated that, driven by cost, time, support, and engineering considerations, it is decided to mechanically implement the hardware module in a dedicated and permanently configured circuit or in a temporarily configured circuit (e.g., configured by software).
[0068] Therefore, the phrase "hardware module" should be understood as including a tangible entity that can perform certain operations, and can be configured or arranged in a certain physical manner, that is, an entity that is physically constructed, permanently configured (e.g., hardwired) and / or temporarily configured (e.g., programmed) to operate or perform certain operations described in this article in a certain way. As used in this article, "hardware-implemented module" refers to a hardware module. Considering an example in which a hardware module is temporarily configured (e.g., programmed), each hardware module does not need to be configured or instantiated at any one time. For example, in the case where a hardware module includes a programmable processor configured by software to become a special-purpose processor, the programmable processor can be configured as different special-purpose processors (e.g., including different hardware modules) at different times. Software can therefore configure one or more specific processors, for example, to constitute a specific hardware module at one time, and to constitute different hardware modules at different times. Hardware modules implemented using one or more processors can be referred to as "processor-implemented" or "computer-implemented".
[0069] Hardware modules can provide information to other hardware modules and receive information from other hardware modules. Therefore, the described hardware modules can be considered to be communicatively coupled. In the case of multiple hardware modules being present at the same time, communication can be achieved by signal transmission (e.g., through appropriate circuits and buses) between or among two or more hardware modules. In implementations in which multiple hardware modules are configured or instantiated at different times, for example, communication between such hardware modules can be achieved by storing and retrieving information in a memory device accessible to multiple hardware modules. For example, one hardware module can perform an operation and store the output in a memory device, and then another hardware module can access the memory device to retrieve and process the stored output.
[0070] In some examples, at least some operations of the method may be performed by one or more processors or processor-implemented modules. In addition, one or more processors may also support the performance of related operations in a "cloud computing" environment or as "software as a service" (SaaS). For example, at least some operations may be performed by multiple computers (as an example of a machine including a processor) and / or between multiple computers, where these operations may be accessed via a network (e.g., the Internet) and / or via one or more software interfaces (e.g., application program interface (API)). The execution of certain operations may be distributed between processors, not only residing within a single computer, but also deployed across multiple machines. A processor or a processor-implemented module may be located in a single geographic location (e.g., within a home or office environment or a server farm), or may be distributed across multiple geographic locations.
[0071] Figure 8is a block diagram 800 illustrating an exemplary software architecture 802, portions of which may be used in conjunction with the various hardware architectures described herein that may implement any of the features described above. Figure 8 is a non-limiting example of a software architecture, and it will be appreciated that many other architectures may be implemented to facilitate the functionality described herein. Software architecture 802 may be implemented in a system such as Figure 1 The hardware layer 804 is executed on hardware such as client devices 110, 120, 103 and 190, local application providers 134, network servers 140a and 140b, server cluster 150, external services 180 and server 182 in the system. A representative hardware layer 804 includes a processing unit 806 and associated executable instructions 808. The executable instructions 808 represent executable instructions of the software architecture 802, including implementations of methods, modules, etc. described herein. The hardware layer 804 also includes a memory / storage device 810, which also includes executable instructions 808 and accompanying data. The hardware layer 804 may also include other hardware modules 812. The instructions 808 maintained by the processing unit 808 may be part of the instructions 808 maintained by the memory / storage device 810.
[0072] Exemplary software architecture 802 can be conceptualized as layers, each providing various functions. For example, software architecture 802 may include various layers and components, such as operating system (OS) 814, library 816, architecture 818, application 820, and presentation layer 824. In operation, applications 820 and / or other components within these layers may call API calls 824 to other layers and receive corresponding results 826. The illustrated layers are representative in nature, and other software architectures may include additional layers or different layers. For example, some mobile or dedicated operating systems may not provide architecture / middleware 818.
[0073] OS 814 can manage hardware resources and provide public services. OS 814 may include, for example, kernel 828, service 830 and driver 832. Kernel 828 may serve as an abstraction layer between hardware layer 804 and other software layers. For example, kernel 828 may be responsible for memory management, processor management (e.g., scheduling), component management, networking, security settings, etc. Service 830 may provide other public services for other software layers. Driver 832 may be responsible for control or interface with underlying hardware layer 804. For example, driver 832 may include display driver, camera driver, memory / storage device driver, peripheral device driver (e.g., via universal serial bus (USB)), network and / or wireless communication driver, audio driver, etc., depending on hardware and / or software configuration.
[0074] The library 816 can provide a common infrastructure that can be used by the application 820 and / or other components and / or layers. The library 816 generally provides functions for use by other software modules to perform tasks, rather than directly interacting with the OS 814. The library 816 may include a system library 834 (e.g., a C standard library), which may provide functions such as memory allocation, string manipulation, and file operations. In addition, the library 816 may include an API library 836, such as a media library (e.g., supporting the presentation and manipulation of image, sound, and / or video data formats), a graphics library (e.g., an OpenGL library for rendering 2D and 3D graphics on a display), a database (e.g., SQLite or other relational database functions), and a network library (e.g., WebKit, which may provide network browsing functions). The library 816 may also include various other libraries 838, thereby providing many functions for the application 820 and other software modules.
[0075] The framework 818 (sometimes also referred to as middleware) provides a higher level common infrastructure that can be used by applications 820 and / or other software modules. For example, the framework 818 can provide various graphical user interface (GUI) functions, advanced resource management, or advanced location services. The framework 818 can provide a wide range of other APIs for applications 820 and / or other software modules.
[0076] Applications 820 include built-in applications 820 and / or third-party applications 822. Examples of built-in applications 820 may include, but are not limited to, contact applications, browser applications, location applications, media applications, messaging applications, and / or game applications. Third-party applications 822 may include any application developed by an entity other than the vendor of a particular platform. Applications 820 may use the functionality available via OS 814, library 816, architecture 818, and presentation layer 824 to create a user interface to interact with a user.
[0077] Some software architectures use virtual machines, such as virtual machine 828. Virtual machine 828 provides an execution environment in which applications / modules can run as if they were on a hardware machine (such as Fig. 9 The virtual machine 828 may be hosted by a host OS (e.g., OS 814) or a hypervisor and may have a virtual machine monitor 826 that manages the operation of the virtual machine 828 and interoperation with the host operating system. A software architecture different from the software architecture 802 external to the virtual machine is executed within the virtual machine 828, such as an OS 850, a library 852, an architecture 854, an application 856, and / or a presentation layer 858.
[0078] Fig. 9900 is a block diagram illustrating components of an exemplary machine 900, which is configured to read instructions from a machine-readable medium (e.g., a machine-readable storage medium) and perform any of the features described herein. The exemplary machine 900 is in the form of a computer system, within which instructions 916 (e.g., in the form of software components) can be executed to cause the machine 900 to perform any of the features described herein. In this way, the instructions 916 can be used to implement the modules or components described herein. The instructions 916 cause the unprogrammed and / or unconfigured machine 900 to operate as a specific machine configured to perform the described features. The machine 900 can be configured to operate as a standalone device, or can be coupled (e.g., networked) to other machines. In a network deployment, the machine 900 can operate in the capacity of a server machine or a client machine in a server-client network environment, or operate as a node in a peer-to-peer or distributed network environment. The machine 900 may be embodied as, for example, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a gaming and / or entertainment system, a smart phone, a mobile device, a wearable device (e.g., a smart watch), and an Internet of Things (IoT) device. Furthermore, although only a single machine 900 is illustrated, the term "machine" includes a collection of machines that individually or jointly execute instructions 916.
[0079] The machine 900 may include a processor 910, a memory 930, and I / O components 950, which may be communicatively coupled via, for example, a bus 902. The bus 902 may include multiple buses that couple various elements of the machine 900 via various bus technologies and protocols. In an example, the processor 910 (including, for example, a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), an ASIC, or a suitable combination thereof) may include one or more processors 912a to 912n, which may execute instructions 916 and process data. In some examples, one or more processors 910 may execute instructions provided or identified by one or more other processors 910. The term "processor" includes a multi-core processor that includes cores that can execute instructions simultaneously. Although Fig. 9 Multiple processors are shown, but machine 900 may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core processor), multiple processors each with a single core, multiple processors each with multiple cores, or any combination thereof. In some examples, machine 900 may include multiple processors distributed among multiple machines.
[0080] The memory / storage 930 may include a main memory 932, a static memory 934 or other memory, and a storage unit 936, both of which are accessible to the processor 902, such as via a bus. The storage unit 936 and the memory 932, 934 store instructions 916 that embody any one or more of the functions described herein. The memory / storage 930 may also store temporary, intermediate and / or long-term data for the processor 910. The instructions 916 may also reside, in whole or in part, in the memory 932, 934, in the storage unit 936, in at least one processor 910 (e.g., in a command buffer or cache memory), in a memory at at least one I / O component 950, or any suitable combination thereof during its execution. Therefore, the memory 932, 934, the storage unit 936, the memory in the processor 910, and the memory in the I / O component 950 are examples of machine-readable media.
[0081] As used herein, "machine-readable medium" refers to a device capable of temporarily or permanently storing instructions and data that cause the machine 900 to operate in a particular manner. As used herein, the term "machine-readable medium" itself does not include transient electrical or electromagnetic signals themselves (such as on a carrier wave propagating through the medium); therefore, the term "machine-readable medium" may be considered to be tangible and non-transitory. Non-limiting examples of non-transitory, tangible machine-readable media may include, but are not limited to: non-volatile memory (such as flash memory or read-only memory (ROM)), volatile memory (such as static random access memory (RAM) or dynamic RAM), cache memory, cache memory, optical storage media, magnetic storage media and devices, network accessible or cloud storage devices, other types of storage devices, and / or any suitable combination thereof. The term "machine-readable medium" applies to a single medium or a combination of multiple media that is used to store instructions (e.g., instructions 916) for execution by the machine 900, such that the instructions, when executed by one or more processors 910 of the machine 900, cause the machine 900 to perform one or more features described herein. Thus, a “machine-readable medium” may refer to a single storage device, as well as a “cloud-based” storage system or storage network that includes multiple storage devices or devices.
[0082] I / O components 950 may include various hardware components suitable for receiving input, providing output, generating output, transmitting information, exchanging information, capturing measurements, etc. The specific I / O components 950 included in a particular machine will depend on the type and / or function of the machine. For example, a mobile device such as a mobile phone may include a touch input device, while a headless server or IoT device may not include such a touch input device. Fig. 9The specific examples of I / O components illustrated in the figure are by no means limiting, and other types of components may be included in the machine 900. The grouping of the I / O components 950 is only to simplify the discussion, and the grouping is by no means limiting. In various examples, the I / O components 950 may include a user output component 952 and a user input component 954. The user output component 952 may include, for example, a display component (e.g., a liquid crystal display (LCD) or a projector) for displaying information, an acoustic component (e.g., a speaker), a tactile component (e.g., a vibration motor or a force feedback device), and / or other signal generators. The user input component 954 may include, for example, an alphanumeric input component (e.g., a keyboard or a touch screen), a pointing component (e.g., a mouse device, a touchpad, or another pointing tool), and / or a tactile input component (e.g., a physical button or touch screen that provides the location and / or force of a touch or touch gesture), which is configured to receive various user inputs, such as user commands and / or selections.
[0083] In some examples, I / O components 950 may include biometric components 956 and / or position components 962, as well as a variety of other environmental sensor components. Biometric components 956 may include, for example, components for detecting body expressions (e.g., facial expressions, vocal expressions, gestures or body postures or eye tracking), measuring biosignals (e.g., heart rate or brain waves), and identifying people (e.g., via voice-based, retinal and / or facial identification). Position components 962 may include, for example, position sensors (e.g., global positioning system (GPS) receivers), altitude sensors (e.g., barometric pressure sensors from which altitude can be derived), and / or orientation sensors (e.g., magnetometers).
[0084] The I / O components 950 may include a communication component 964 that implements a variety of techniques operable to couple the machine 900 to network(s) 970 and / or device(s) 980 via respective communication couplings 972 and 982. The communication component 964 may include one or more network interface components or other suitable devices to interface with the network(s) 970. The communication component 964 may include, for example, components suitable for providing wired communication, wireless communication, cellular communication, near field communication (NFC), Bluetooth communication, Wi-Fi, and / or communication via other modalities. The device(s) 980 may include other machines or various peripherals (e.g., via USB coupling).
[0085] In some examples, the communication component 964 can detect the identifier, or include a component suitable for detecting the identifier. For example, the communication component 964 can include a radio frequency identification (RFID) tag reader, an NFC detector, an optical sensor (e.g., a one-dimensional or multi-dimensional barcode or other optical code), and / or an acoustic detector (e.g., a microphone to identify a tagged audio signal). In some examples, location information can be determined based on information from the communication component 962, such as, but not limited to: a geographic location via an Internet Protocol (IP) address, a location via Wi-Fi, cellular, NFC, Bluetooth, or other wireless station identification and / or signal triangulation.
[0086] Although various embodiments have been described, the description is intended to be exemplary rather than restrictive, and it should be understood that within the scope of the embodiments, there may be more embodiments and implementations. Although many possible combinations of features are shown in the drawings and discussed in this detailed description, many other combinations of disclosed features are also possible. Unless specifically limited, any feature of any embodiment may be combined with or substituted with any other feature or element in any other embodiment. Therefore, it is understood that any feature shown and / or discussed in this disclosure may be implemented together in any suitable combination. Therefore, the embodiments are not limited except according to the attached claims and their equivalents. Similarly, various modifications and changes may be made within the scope of the attached claims.
[0087] Although what is considered to be the best mode and / or other examples have been described above, it should be understood that various modifications may be made therein, and the subject matter disclosed herein may be implemented in various forms and examples, and these teachings may be applied to many applications, only some of which are described herein. The appended claims are intended to claim any and all applications, modifications, and variations that fall within the true scope of the present teachings.
[0088] Unless otherwise specified, all measurements, values, levels, positions, amplitudes, dimensions and other specifications set forth in this specification (including the appended claims) are approximate and not exact. They are intended to have a reasonable range consistent with the functions involved and the customary practices in the art to which they belong.
[0089] The scope of protection is limited only by the appended claims. When interpreted in light of this specification and the subsequent prosecution, the scope is intended and should be interpreted to be as broad as consistent with the ordinary meaning of the language used in the claims and to encompass all structural and functional equivalents. Nevertheless, none of the claims is intended to cover subject matter that does not meet the requirements of Sections 101, 102, or 103 of the Patent Act, nor should it be interpreted in such a manner. Any unintended acceptance of such subject matter is hereby denied.
[0090] Except as described above, nothing stated or shown is intended or should be construed as causing any component, step, feature, object, benefit, advantage, or equivalent to be contributed to the public, whether or not recited in the claims.
[0091] It will be understood that the terms and expressions used in this article have the common meaning consistent with the terms and expressions about the corresponding investigation and research field of its correspondence, unless the specific meaning is set forth in addition in this article. Relation terms such as first and second are only used to distinguish an entity or action from another entity or action, without requiring or implying any actual such relationship or order between such entities or actions. The terms "include", "comprise" or any other variation thereof are intended to cover non-exclusive inclusion, so that the process, method, article or device including the list of elements not only include those elements, but also may include other elements that are not clearly listed or inherent to such process, method, article or device. In the absence of further constraints, the element starting with "one" or "an" does not exclude the presence of other identical elements in the process, method, article or device including the element.
[0092] The Abstract of the present disclosure is provided to allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing detailed description, it can be seen that in order to simplify the present disclosure, various features are grouped together in various examples. The method of the present disclosure should not be interpreted as reflecting the following intention: the claims require more features than the features expressly recited in each claim. Rather, as reflected in the appended claims, the subject matter of the invention lies in less than all the features of a single disclosed example. Therefore, the following claims are hereby incorporated into the detailed description, wherein each claim is independently a separately claimed subject matter.
Claims
1. A server for interacting with one or more remote client devices, the server comprising: one or more processors; as well as One or more machine-readable media storing instructions that, when executed by the one or more processors, cause the one or more processors to: establishing a first network connection with a first client device; identifying, for a first single page application, a first plurality of data plugin components, each data plugin component configured to provide access to one or more computer-implemented services; receiving a first composite request from the first client device via the first network connection, the first composite request comprising first data on which a first action is to be performed by a first data plugin component and second data on which a second action is to be performed by a second data plugin component, wherein the first data plugin component and the second data plugin component are executed by the server; executing a portion of the first data plugin component based on the first data using a first computer-implemented service on the server to perform a first transaction; obtaining first response data based on the first transaction; transmitting, in a first transmission and in response to the first composite request, the first response data to the first client device via the first network connection, wherein the first transmission includes a first indication that the first transmission is a first message in response to the first composite request; executing a portion of the second data plugin component based on the second data using a second computer-implemented service on the server to perform a second transaction; obtaining second response data based on the second transaction; and transmitting, in a second transmission and in response to the first composite request, the second response data to the first client device via the first network connection, wherein the second computer-implemented service is different than the first computer-implemented service, and wherein the second transmission includes a second indication that the second transmission is a second message in response to the first composite request, in: The instructions for performing the first action cause the one or more processors to: receive response data provided by a first service from the first transaction, obtain first cacheable data based on the response data provided by the first service, and store the first cacheable data in a cache in association with a first key value; The first response data is obtained based on response data provided by the first service; and the instructions further cause the one or more processors to: receiving a second composite request from a second client device after the second transmission, The second composite request identifies a third action associated with a third data plugin component; In response to determining that the second composite request identifies the third action, performing the third action by executing a portion of the third data plugin component for: retrieving the stored first cacheable data from the cache using the first key value, and obtaining third response data based on the retrieved first cacheable data, and In a third transmission and in response to the second composite request, the third response data is transmitted to the second client device.
2. The server according to claim 1, wherein: The instructions further cause the one or more processors to: In response to determining that the second composite request identifies the third action, initiating performance of the third action by executing a portion of the third data plug-in component to initiate a third transaction utilizing a third computer-implemented service; receiving a third composite request from the first client device via the first network connection while the third transaction is pending, the third composite request identifying a fourth action associated with a fourth data plugin component; aborting the third transaction in response to the receiving of the third compound request and determining that the third transaction is still pending; In response to determining that the third composite request identifies the fourth action, performing the fourth action by executing a portion of the fourth data plug-in component to obtain third response data; as well as In a third transmission and in response to the third composite request, the third response data is transmitted to the first client device via the first network connection.
3. The server according to claim 1, wherein: The instructions further cause the one or more processors to: In response to determining that the second composite request identifies the third action, initiating performance of the third action by executing a portion of the third data plug-in component to initiate a third transaction utilizing a third computer-implemented service; receiving, from the first client device, via the first network connection and while the third transaction is pending, an indication to suspend or terminate use of the first network connection by the instance of the first single page application; as well as The third transaction is aborted in response to the receiving of the indication and determining that the third transaction is still pending.
4. The server according to claim 1, wherein: The instructions further cause the one or more processors to: identifying, for a second single page application executing on the first client device, a second plurality of data plugin components, each data plugin component configured to provide access to one or more computer-implemented services, wherein the second single page application is different from the first single page application and the second plurality of data plugin components includes a third data plugin component that is not included in the first plurality of data plugin components; subsequent to said transmitting of said second transmitting, instantiating an instance of said third data plugin component; In response to determining that the second composite request identifies the third action, performing the third action by executing a portion of the third data plugin component via the instance of the third data plugin component to obtain the third response data; and The third response data is transmitted to the first client device via the first network connection in a third transmission separate from the first transmission and the second transmission.
5. The server according to claim 1, wherein: The instructions further cause the one or more processors to: Establishing a second network connection with the second client device, wherein the second network connection is different from the first network connection, wherein: The second composite request is received from the second client device via the second network connection, and The third response data is transmitted to the second client device via the second network connection.
6. The server according to claim 1, wherein: The instructions further cause the one or more processors to: identifying a pre-fetch data plug-in component, the pre-fetch data plug-in component being configured to perform a pre-fetch action for a second single page application, wherein the second single page application is different from the first single page application; receiving, via the first network connection, a second composite request from an instance of the first single page application executing on the first client device, the second composite request identifying the prefetch action; In response to determining that the second composite request identifies the prefetch action, performing the prefetch action by executing a portion of the prefetch data plug-in component for: utilizing a service implemented by a third computer to perform a third transaction, obtaining first cacheable data based on the third transaction, and storing the first cacheable data in a cache in association with a first key value; identifying, for the second single page application, a second plurality of data plugin components, each data plugin component configured to provide access to one or more computer-implemented services, wherein the second plurality of data plugin components includes a third data plugin component that is different from the pre-fetch data plugin component; subsequent to said storing of said first cacheable data, receiving via said first network connection a third composite request from an instance of said second single page application executing on said first client device, said third composite request identifying a second plurality of actions, said second plurality of actions including a third action associated with said third data plugin component; In response to determining that the third composite request identifies the third action, performing the third action by executing a portion of the third data plugin component for: retrieving the stored first cacheable data from the cache using the first key value, and obtaining third response data based on the retrieved first cacheable data; and transmitting, in a third transmission and in response to the third composite request, the third response data to the instance of the second single page application executing on the first client device via the first network connection.
7. The server according to claim 1, wherein: the first plurality of data plugin components comprising a third data plugin component different from the first data plugin component and the second data plugin component; The instructions for performing the first action cause the one or more processors to: obtaining third response data from the third data plugin component by causing the third data plugin component to perform a third action, and executing the first transaction based on the third response data obtained from the third data plugin component; as well as The instructions for performing the third action cause the one or more processors to: executing a portion of the third data plugin component to perform a fourth transaction using a third computer-implemented service, and The third response data is obtained based on the fourth transaction.
8. A method implemented in a server for interacting with one or more remote client devices, The method comprises: establishing a first network connection with a first client device; identifying, for a first single page application, a first plurality of data plugin components, each data plugin component configured to provide access to one or more computer-implemented services; receiving a first composite request from the first client device via the first network connection, the first composite request comprising first data on which a first action is to be performed by a first data plugin component and second data on which a second action is to be performed by a second data plugin component, wherein the first data plugin component and the second data plugin component are executed by the server; executing a portion of the first data plugin component based on the first data using a first computer-implemented service on the server to perform a first transaction; obtaining first response data based on the first transaction; transmitting, in a first transmission and in response to the first composite request, the first response data to the first client device via the first network connection, wherein the first transmission includes a first indication that the first transmission is a first message in response to the first composite request; executing a portion of the second data plugin component based on the second data using a second computer-implemented service on the server to perform a second transaction; obtaining second response data based on the second transaction; and transmitting, in a second transmission and in response to the first composite request, the second response data to the first client device via the first network connection, wherein the second computer-implemented service is different than the first computer-implemented service, and wherein the second transmission includes a second indication that the second transmission is a second message in response to the first composite request, wherein performing the first action comprises: receiving response data provided by a first service from the first transaction, obtaining first cacheable data based on the response data provided by the first service, and storing the first cacheable data in a cache in association with a first key value, wherein the first response data is obtained based on the response data provided by the first service, and wherein the method further comprises: receiving, after the second transmission, a second composite request from a second client device, the second composite request identifying a third action associated with a third data plugin component; In response to determining that the second composite request identifies the third action, performing the third action by executing a portion of the third data plugin component for: retrieving the stored first cacheable data from the cache using the first key value, and obtaining third response data based on the retrieved first cacheable data, and In a third transmission and in response to the second composite request, the third response data is transmitted to the second client device.
9. The method according to claim 8, further comprising: In response to determining that the second composite request identifies the third action, initiating performance of the third action by executing a portion of the third data plug-in component to initiate a third transaction utilizing a third computer-implemented service; receiving a third composite request from the first client device via the first network connection while the third transaction is pending, the third composite request identifying a fourth action associated with a fourth data plugin component; aborting the third transaction in response to the receiving of the third compound request and determining that the third transaction is still pending; In response to determining that the third composite request identifies the fourth action, performing the fourth action by executing a portion of the fourth data plug-in component to obtain third response data; as well as In a third transmission and in response to the third composite request, the third response data is transmitted to the first client device via the first network connection.
10. The method according to claim 8, further comprising: In response to determining that the second composite request identifies the third action, initiating performance of the third action by executing a portion of the third data plug-in component to initiate a third transaction utilizing a third computer-implemented service; receiving, from the first client device, via the first network connection and while the third transaction is pending, an indication to suspend or terminate use of the first network connection by the instance of the first single page application; as well as The third transaction is aborted in response to the receiving of the indication and determining that the third transaction is still pending.
11. The method according to claim 8, further comprising: identifying, for a second single page application executing on the first client device, a second plurality of data plugin components, each data plugin component configured to provide access to one or more computer-implemented services, wherein the second single page application is different from the first single page application and the second plurality of data plugin components includes a third data plugin component not included in the first plurality of data plugin components; subsequent to said transmitting of said second transmitting, instantiating an instance of said third data plugin component; In response to determining that the second composite request identifies the third action, performing the third action by executing a portion of the third data plugin component via an instance of the third data plugin component to obtain first response data; and The third response data is transmitted to the first client device via the first network connection in a third transmission separate from the first transmission and the second transmission.
12. The method according to claim 8, further comprising: Establishing a second network connection with the second client device, wherein the second network connection is different from the first network connection, wherein: The second composite request is received from the second client device via the second network connection; and The third response data is transmitted to the second client device via the second network connection.
13. The method according to claim 12, further comprising: supplying, to the first client device, from a first domain associated with the first client device, a first application resource for executing the first single page application; as well as Second application resources for executing a second single page application are served to the second client device from a second domain associated with the second client device, wherein the second domain is different from the first domain.
Citation Information
Patent Citations
Data management interface with plugins
US20080294854A1
Automated web frontend sharding
US8533336B1