Within the field of computing, many scenarios involve an execution of applications within a virtual environment of a device, such as web applications executing within a web browser; code that is developed for a computational environment other than that provided by the device (e.g., Java code designed for a Java virtual machine); and untrusted code executing within an isolated virtual machine. The execution of the application within the virtual machine, rather than as a native process of the device, may facilitate the compatibility and security of the application during execution.
Such applications often invoke requests directed to a hardware or software component of the device. For example, a graphics hardware component may provide a rendering function (e.g., rendering an image of a three-dimensional scene) that may be invoked by various applications execution on the device. Such hardware components may be readily accessible to native applications executing with the computing environment of the device, and may be exposed on a more limited basis to applications executing within a virtual environment of the device. For example, a graphics rendering component may provide comparatively low-level and extensive access by applications, and may provide more constrained rendering capabilities on behalf of web applications executing within a web browser. Such restrictions may be implemented as selected and/or appropriate in view of a less trusted code environment provided by the virtual environment (e.g., code running in a web browser is typically ascribed a lower level of trust than native code that has been installed on the device) and/or based on abstractions of the components within the virtual environment (e.g., rather than providing device-specific capabilities of a hardware component, a virtual environment may present a generalized set of capabilities supported by many hardware components and devices). Finally, many virtual environments may enable the application to invoke the capabilities of the devices, but may block execution of the application until the invocation of the capabilities of the device is complete.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key factors or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
The typical models of the interaction of applications within a virtual environment with device components may present some disadvantages. As a first example, the applications may be unable to access a broad range of capabilities of the components. As a second example, the efficiency of component invocations in this model may be diminished by the inability of the device to utilize component-specific features or optimization techniques. As a third example, blocking the web application until the component request is complete may significantly impair the performance of the web application.
Presented herein are techniques for fulfilling component requests of applications in a manner that may address some of these disadvantages and/or enable additional advantages. In accordance with these techniques, the device may facilitate the handling of component requests from applications within a virtual environment through an inversion-of-control mechanism via a callback mechanism. An application executing within the virtual environment may initiate a component request involving one or more components and/or component capabilities of the computing environment, and specifying a callback of the application to be invoked upon completion of the component request. The device may fulfill this component request by storing an association of the application, the identified component and/or component capability, and then sending the component request to the associated component. The device may then resume execution of the application within the virtual environment. When the device later detects a completion of the component request by the component, the device may identify one or more callbacks associated with the component request, and may invoke the callbacks in order to perform processing on the results of the component request and/or to notify the applications of the completion of the component request. This model may expedite the fulfillment of component requests issued by applications within a virtual environment.
To the accomplishment of the foregoing and related ends, the following description and annexed drawings set forth certain illustrative aspects and implementations. These are indicative of but a few of the various ways in which one or more aspects may be employed. Other aspects, advantages, and novel features of the disclosure will become apparent from the following detailed description when considered in conjunction with the annexed drawings.
The claimed subject matter is now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the claimed subject matter. It may be evident, however, that the claimed subject matter may be practiced without these specific details. In other instances, structures and devices are shown in block diagram form in order to facilitate describing the claimed subject matter.
Within the field of computing, many scenarios involve the execution of applications on a device within a virtual environment, rather than within the native computing environment of the device. As a first example, a web browser may provide a standardized platform for executing device-independent code, such as JavaScript and Hypertext Markup Language (HTML) content. As a second example, a Java virtual machine (JVM) may provide a bridge between a generalized computing device and the native capabilities of the device on behalf of a Java application (e.g., translating generalized memory allocation requests to the memory model of the device). As a third example, code designed for the native environment of a first device may be executed on a second, completely device through an emulator that provides a simulation of the first device within the second device. As a fourth example, untrusted code may be executed within a “sandbox” or an artificial machine, such that malicious operations may be isolated to the artificial machine, and the effects of the untrusted code on the artificial device may be evaluated by the device without risk of damage to the device.
These and other scenarios present the execution of an application within a virtual environment. In many such scenarios, in addition to utilizing the resources of the virtual environment, the application may involve interactions with the components of the device. As a first example, the application may interact with a camera of the device, such as a photo editing application that begins with a photo image captured by the camera. As a second example, a location-aware application may request to be notified of the current location of the device, or of an arrival of the device at a particular location, according to a global positioning system (GPS) receiver of the device. As a third example, an augmented reality application may utilize both a camera to capture a current view of the world and a GPS receiver to detect the current location and viewing angle of the device, in order to overlay information on the display of the device that relates to the objects pictured in the image captured by the camera.
It may be appreciated that such scenarios involve capabilities of a device that may not be included by default in the virtual environment. For example, a typical configuration of a web browser does not include any capability for an application to request a photo from a camera or a location detected by a GPS receiver, even if the device includes a camera and/or GPS receiver that feature such capabilities. Where such actions are beyond the default and standardized capabilities of the virtual environment, the device may provide various mechanisms for enabling such applications to initiate such requests on behalf of the components of the device.
The device 102 may also comprise one or more hardware components 112, such as a camera and a gyroscope, with which applications request to interact. Native applications 120 executing within the computing environment 106 may initiate interaction 122 directly with the components 112, such as by issuing requests directly to a hardware driver for a component 112. However, web applications 110 executing within a web browser 108 are isolated from direct interaction with the components 112, and instead interact with the resources of the web browser 108. Additionally, the web browser 108 may not be configured to interact with the components 112 on behalf of web applications 110 (e.g., the web browser 108 may have no capability for receiving an image from a camera of a device 102), and thus may be incapable of utilizing the component resources of the device 102 on behalf of the web applications 110. In many scenarios, no alternative interaction model is provided, and the web applications 110 are simply unable to interact with, or even identify, the components 112 of the device.
However, it may be undesirable to constrain the capabilities of the web applications 110 to those comprising the web browser 108. Rather, it may be desirable to enable applications executing within such virtual environments to interact with the components 112 of the device. To this end, various techniques have been devised to enable such accessing.
However, the model illustrated in the exemplary scenario 100 of
While this model may present some advantages with respect to the component proxy model of
When comparing the component proxy model presented in the exemplary scenario 100 of
Second, because both the component proxy model and the application programming interface (API) plug-in model involve a customized interface provided by each component 112; i.e., each component proxy 114 or application programming interface 202 may be developed in a different manner, using different data standards and interface methodologies. That is, neither model enforces, promotes, or even encourages consistency among the interfaces, and each interface may operate very differently from each other interface. Accordingly, a developer who wishes to invoke the interface for one component 112 may have to study and learn the interface first, even if the developer is familiar with the interfaces for other components 112. Moreover, inconsistencies and incompatibilities among the interfaces may interfere with the interoperation of the components 112. For example, in the device 102 presented in the exemplary scenario 200 of
Presented herein is a different model for enabling interaction between the components 112 of a device 102 and the applications executing within a virtual environment of the device 102. These techniques present a different model for enabling application/component interactions, involving a service that accepts requests for component interactions from applications executing within a virtual environment, conveys those requests to the components 112 of the device 102, and returns the results to the applications within the virtual environment. The service may fulfill the requests in an asynchronous manner through a callback mechanism; e.g., while initiating the request, the applications within the virtual environment may specify a callback (such as the name or memory address of a function, a script, or a code block such as a lambda expression or abstract syntax tree) to be invoked by the service upon the component 112 completing the request. The service may then fulfill the request outside of the virtual environment, in an asynchronous manner (e.g., reserving processing time and resources to examine the request to satisfy security and access permissions), and upon completion, may invoke the callback with the results of the request generated by the component 112.
As further illustrated in the exemplary scenario 300 of
The component access model presented in the exemplary scenario 300 of
Still another embodiment involves a computer-readable medium comprising processor-executable instructions configured to apply the techniques presented herein. Such computer-readable media may include, e.g., computer-readable storage media involving a tangible device, such as a memory semiconductor (e.g., a semiconductor utilizing static random access memory (SRAM), dynamic random access memory (DRAM), and/or synchronous dynamic random access memory (SDRAM) technologies), a platter of a hard disk drive, a flash memory device, or a magnetic or optical disc (such as a CD-R, DVD-R, or floppy disc), encoding a set of computer-readable instructions that, when executed by a processor of a device, cause the device to implement the techniques presented herein. Such computer-readable media may also include (as a class of technologies that are distinct from computer-readable storage media) various types of communications media, such as a signal that may be propagated through various physical phenomena (e.g., an electromagnetic signal, a sound wave signal, or an optical signal) and in various wired scenarios (e.g., via an Ethernet or fiber optic cable) and/or wireless scenarios (e.g., a wireless local area network (WLAN) such as WiFi, a personal area network (PAN) such as Bluetooth, or a cellular or radio network), and which encodes a set of computer-readable instructions that, when executed by a processor of a device, cause the device to implement the techniques presented herein.
An exemplary computer-readable medium that may be devised in these ways is illustrated in
The techniques discussed herein may be devised with variations in many aspects, and some variations may present additional advantages and/or reduce disadvantages with respect to other variations of these and other techniques. Moreover, some variations may be implemented in combination, and some combinations may feature additional advantages and/or reduced disadvantages through synergistic cooperation. The variations may be incorporated in various embodiments (e.g., the exemplary method 400 of
D1. Scenarios
A first aspect that may vary among embodiments of these techniques relates to the scenarios wherein such techniques may be utilized.
As a first variation of this first aspect, the techniques presented herein may be utilized with many types of devices 502, such as servers, server farms, workstations, laptops, tablets, mobile phones, game consoles, and network appliances.
As a second variation of this first aspect, the techniques presented herein may be utilized to service applications 304 executing within many types of virtual environments 302, such as a web browser, a simulated and/or emulated virtual machine, a middleware platform, and/or an isolation construct.
As a third variation of this first aspect, the techniques presented herein may be utilized to service many types of applications 304, such as web applications written in various interpreted and/or compiled languages, file-sharing applications, media rendering applications, and data-driven client applications.
As a fourth variation of this first aspect, the techniques presented herein may involve many types of components 112, such as human input devices (e.g., keyboard, mice, voice microphones, speech processors, gaze locators, and natural gesture interfaces); sensors (e.g., GPS receivers, gyroscopes, compasses, and light level detectors); communications devices (e.g., wired network adapters, local area network (LAN) wireless adapters, and/or cellular wireless adapters); output devices (e.g., monitors, audio speakers, printers, and tactile feedback generators); and device controllers and/or device interfaces (e.g., machine control systems). The components 112 may also include various software components, such as file systems, data stores, platforms, application programming interfaces (APIs), and objects.
As a fifth variation of this first aspect, the component service 310 may interact with the components 112 of the device 102 in various ways. As a first such example, the component service 310 may provide a “pluggable” framework, and the components 112 may provide drivers or other interfaces to enable interactions with the component service 310. As a second such example, the component service 310 may proactively discover the components 112 of the device 102, e.g., by querying a device manager, device stage, system registry, or configuration manifest of the device 102 to determine the components 112 of the device 102 and the capabilities of each component 112.
As a sixth variation of this first aspect, the techniques presented herein may involve many types of component requests 306 directed to such components 112 involving many types of functionality, such as capturing input from one or more sensors; reading data from a storage device; writing data to a storage device; performing a set of computation; or adjusting a property of the component 112. Moreover, such component requests 306 many involve many types of callbacks 308, such as the name or memory address of a function of the application 304 or of an application programming interface (API) method of the computing environment 106; a script; or a code block such as a lambda expression or abstract syntax tree. These and other scenarios may be compatible with and may advantageously utilize the techniques presented herein.
D2. Component Service
A second aspect that may vary among embodiments of these techniques involves the implementation of the component service 310. While the component service 310 may be configured in accordance with the exemplary method 400 of
D3. Component Service Features
A third aspect that may vary among embodiments of these techniques relates to various features that may be implemented in the component service 310.
As a first variation of this third aspect, the component service 310 may interact with the applications 304 and/or the virtual environment 302 in various ways. As a first such example, the component service 310 may present an interface within the virtual environment 302, and may enable the applications 304 to interact with the component service interface to initiate component requests 306. As a second such example, the component service 310 may not be present within the virtual environment 302, but may detect the initiation of component requests 306 within the virtual environment 302 and may receive or intercept such component requests 306 to be fulfilled on behalf of the applications 304. As a third such example, the component service 310 may be integrated with the virtual environment 302, and may be exposed, e.g., as an aspect of the virtual machine presented by the virtual environment 302 to the applications 304.
As a second variation of this third aspect, the component service 310 may assist the applications 304 within the virtual environment 302 in discovering the components 112 of the device 102 and the capabilities available therethrough. For example, the component service 310 may, upon receiving from an application 304 within the virtual environment 302 a component enumeration request, the component service 310 may enumerate for the application 304 the components 112 of the device 102 that are identifiable in a component request. Alternatively or additionally, upon receiving from an application 304 within the virtual environment 302 a device capability enumeration request, the component service 310 may enumerate for the application 304 the component capabilities of respective components 112 of the device 102 (e.g., the capability of capturing an image; the capability of detecting a location; and the capability of detecting a physical orientation of the device 102). That is, the capabilities of the components 112 may be presented to the application 304 without necessarily identifying the components 112 through which such capabilities are achievable. Moreover, upon receiving from the application 304 within the virtual environment 302 a device capability request specifying a component capability (e.g., “please detect the physical orientation of the device”) rather than a specific component 112, the component service 310 may translate the device capability request into a component request specifying a component 112 having the component capability specified by the device capability request (e.g., translating the physical orientation request into a request for an invocation of a function of a gyroscope components that generates the requested information).
As a third variation of this third aspect, a device 102 may provide various security mechanisms applicable to interactions between the component service 310 and the components 112 on behalf of the applications 304. Such security mechanisms may be desirable, e.g., where the applications 304 may comprise untrusted code, such as web applications casually retrieved from various websites, or mobile agents received from untrusted users. The virtual environment 302 itself may comprise an isolation construct, such as a virtual machine that an untrusted application 304 may disrupt without interfering with the operation of the computing environment 106 of the device 102. In such scenarios, enabling the applications 304 to initiate component requests 306 with the components 112 through the component service 310 may represent a security vulnerability, which may be mitigated through various security measures. As a first such example, if the application 304 is ascribed a particular trust level and/or permissions set, the component service 310 and/or component requests 306 may be ascribed the same trust level and/or permissions set in order to avoid escalating the privileges of the application 304. As a second such example, the component service 310 may scrutinize the component requests 306 and/or component results 312 for security issues, e.g., the inclusion of malicious code or an accessing or leakage of private user information. As a third such example, the component service 310 may involve the user 104 in trust decisions; e.g., where the component request 306 specifies a component capability of the component 112, the component service 310 may present to the user 104 an offer to initiate the component request 306 identifying the component capabilities requested by the application 304 (e.g., “This application is requesting access to the gyroscopic sensor”), and may initiate the component request 306 only after receiving an acceptance of the offer from the user 104.
As a fourth variation of this third aspect, after a component 112 completes a component request 306, the component service 310 may fulfill the component request 306 on behalf of the application 304 in various ways. As a first such example, the callback 308 associated with the component request 306 may be invoked by the component service 310 within the virtual environment 302 (e.g., client-side Javascript executed within the web browser); outside of the virtual environment 302 (e.g., native instructions executing within the computing environment 106); and/or within another virtual machine (e.g., as server-side Javascript utilizing the Node.js server-side Javascript module and executed by a web browser).
As a second example of this fourth variation of this third aspect, if the component request 306 to the component 112 results in a component result 312, the component service 310 may convey the component result 312 to the callback 308 and/or the application 304 in various ways.
Another variation illustrated in the exemplary scenario 900 of
As a fifth variation of this third aspect, the component service 310 may communicate with the applications 304 and/or callbacks 308 through many communications mechanisms. As one such example, the component service 310 may intermittently communicate with the applications 304 and/or callbacks 308, or may maintain a communication channel throughout the life of the component request 306. For example, in the exemplary scenario 800 of
As a sixth variation of this third aspect, in addition to servicing the applications 304 executing within the virtual environment 302, the component service 310 may initiate interactions with the components 112 of the device 102 on behalf of other processes. As a first such example, a component service 310 may, upon receiving a component request 306 from an application 304 executing outside of the virtual environment 302 on the device 102, store the callback 308 associated with the component request 306 and the application 304, and send the component request 306 to the component 112 on behalf of the application 304. (For example, as illustrated in the exemplary scenario 300 of
As a second example of this sixth variation of this third aspect, the component service 310 may also invoke component requests 306 for the components 112 of the device 102 on behalf of remote processes. For example, upon receiving a component request 306 from a remote process executing on a second device, the component service 310 may store the callback 308 associated with the component request 306 and the remote application, and send the component request 306 to the component 112; and upon detecting a completion of a component request 306 associated with a remote process, the component service 310 may invoke the callback 308 on behalf of the remote application. Moreover, the callback 308 of the remote application may be invoked within the virtual environment 302 (e.g., as a sandbox isolation construct). Alternatively or additionally, the remote application may invoke the component request 306 on behalf of the application 304 executing within the virtual environment 302; i.e., rather than submitting the component request 306 directly to the component service 310, the application 304 may interact with a cloud service on a remote server, and the cloud service may contact the component service 310 to initiate the component request 306 on behalf of the application 304 executing within the virtual environment 302. In some such scenarios, the component service 310 may only accept and process requests on behalf of trusted remote processes. For example, the application 304 may comprise at least one credential (e.g., a username and password), and the component request 306 received from the remote process including at least one credential authenticating the component request 306 on behalf of the application 304; and the component service 310 may, before sending the component request 306 to the component 112, authenticate the credential of the component request 306. Those of ordinary skill in the art may include many such features in implementations of the techniques provided herein.
Although not required, embodiments are described in the general context of “computer readable instructions” being executed by one or more computing devices. Computer readable instructions may be distributed via computer readable media (discussed below). Computer readable instructions may be implemented as program modules, such as functions, objects, Application Programming Interfaces (APIs), data structures, and the like, that perform particular tasks or implement particular abstract data types. Typically, the functionality of the computer readable instructions may be combined or distributed as desired in various environments.
In other embodiments, device 1002 may include additional features and/or functionality. For example, device 1002 may also include additional storage (e.g., removable and/or non-removable) including, but not limited to, magnetic storage, optical storage, and the like. Such additional storage is illustrated in
The term “computer readable media” as used herein includes computer storage media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions or other data. Memory 1008 and storage 1010 are examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, Digital Versatile Disks (DVDs) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by device 1002. Any such computer storage media may be part of device 1002.
Device 1002 may also include communication connection(s) 1016 that allows device 1002 to communicate with other devices. Communication connection(s) 1016 may include, but is not limited to, a modem, a Network Interface Card (NIC), an integrated network interface, a radio frequency transmitter/receiver, an infrared port, a USB connection, or other interfaces for connecting computing device 1002 to other computing devices. Communication connection(s) 1016 may include a wired connection or a wireless connection. Communication connection(s) 1016 may transmit and/or receive communication media.
The term “computer readable media” may include communication media. Communication media typically embodies computer readable instructions or other data in a “modulated data signal” such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” may include a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
Device 1002 may include input device(s) 1014 such as keyboard, mouse, pen, voice input device, touch input device, infrared cameras, video input devices, and/or any other input device. Output device(s) 1012 such as one or more displays, speakers, printers, and/or any other output device may also be included in device 1002. Input device(s) 1014 and output device(s) 1012 may be connected to device 1002 via a wired connection, wireless connection, or any combination thereof. In one embodiment, an input device or an output device from another computing device may be used as input device(s) 1014 or output device(s) 1012 for computing device 1002.
Components of computing device 1002 may be connected by various interconnects, such as a bus. Such interconnects may include a Peripheral Component Interconnect (PCI), such as PCI Express, a Universal Serial Bus (USB), Firewire (IEEE 1394), an optical bus structure, and the like. In another embodiment, components of computing device 1002 may be interconnected by a network. For example, memory 1008 may be comprised of multiple physical memory units located in different physical locations interconnected by a network.
Those skilled in the art will realize that storage devices utilized to store computer readable instructions may be distributed across a network. For example, a computing device 1020 accessible via network 1018 may store computer readable instructions to implement one or more embodiments provided herein. Computing device 1002 may access computing device 1020 and download a part or all of the computer readable instructions for execution. Alternatively, computing device 1002 may download pieces of the computer readable instructions, as needed, or some instructions may be executed at computing device 1002 and some at computing device 1020.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
As used in this application, the terms “component,” “module,” “system”, “interface”, and the like are generally intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a controller and the controller can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
Furthermore, the claimed subject matter may be implemented as a method, apparatus, or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof to control a computer to implement the disclosed subject matter. The term “article of manufacture” as used herein is intended to encompass a computer program accessible from any computer-readable device, carrier, or media. Of course, those skilled in the art will recognize many modifications may be made to this configuration without departing from the scope or spirit of the claimed subject matter.
Various operations of embodiments are provided herein. In one embodiment, one or more of the operations described may constitute computer readable instructions stored on one or more computer readable media, which if executed by a computing device, will cause the computing device to perform the operations described. The order in which some or all of the operations are described should not be construed as to imply that these operations are necessarily order dependent. Alternative ordering will be appreciated by one skilled in the art having the benefit of this description. Further, it will be understood that not all operations are necessarily present in each embodiment provided herein.
Moreover, the word “exemplary” is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “exemplary” is not necessarily to be construed as advantageous over other aspects or designs. Rather, use of the word exemplary is intended to present concepts in a concrete fashion. As used in this application, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or”. That is, unless specified otherwise, or clear from context, “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, if X employs A; X employs B; or X employs both A and B, then “X employs A or B” is satisfied under any of the foregoing instances. In addition, the articles “a” and “an” as used in this application and the appended claims may generally be construed to mean “one or more” unless specified otherwise or clear from context to be directed to a singular form.
Also, although the disclosure has been shown and described with respect to one or more implementations, equivalent alterations and modifications will occur to others skilled in the art based upon a reading and understanding of this specification and the annexed drawings. The disclosure includes all such modifications and alterations and is limited only by the scope of the following claims. In particular regard to the various functions performed by the above described components (e.g., elements, resources, etc.), the terms used to describe such components are intended to correspond, unless otherwise indicated, to any component which performs the specified function of the described component (e.g., that is functionally equivalent), even though not structurally equivalent to the disclosed structure which performs the function in the herein illustrated exemplary implementations of the disclosure. In addition, while a particular feature of the disclosure may have been disclosed with respect to only one of several implementations, such feature may be combined with one or more other features of the other implementations as may be desired and advantageous for any given or particular application. Furthermore, to the extent that the terms “includes”, “having”, “has”, “with”, or variants thereof are used in either the detailed description or the claims, such terms are intended to be inclusive in a manner similar to the term “comprising.”
This application is a continuation of U.S. patent application Ser. No. 13/714,607, filed Dec. 14, 2012, entitled “Inversion-of-Control Component Service Models for virtual Environments,” now U.S. Pat. No. 9,600,351, which is hereby incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
5117349 | Tirfing et al. | May 1992 | A |
5506984 | Miller | Apr 1996 | A |
5701469 | Brandli et al. | Dec 1997 | A |
5913208 | Brown et al. | Jun 1999 | A |
5943670 | Prager | Aug 1999 | A |
6268852 | Lindhorst et al. | Jul 2001 | B1 |
6278992 | Curtis et al. | Aug 2001 | B1 |
6374296 | Lim et al. | Apr 2002 | B1 |
6393420 | Peters | May 2002 | B1 |
6434745 | Conley et al. | Aug 2002 | B1 |
6460060 | Maddalozzo et al. | Oct 2002 | B1 |
6496843 | Getchius et al. | Dec 2002 | B1 |
6542889 | Aggarwal et al. | Apr 2003 | B1 |
6578056 | Lamburt | Jun 2003 | B1 |
6625804 | Ringseth et al. | Sep 2003 | B1 |
6654758 | Teague | Nov 2003 | B1 |
6704722 | Wang Baldonado | Mar 2004 | B2 |
6704727 | Kravets | Mar 2004 | B1 |
6807539 | Miller et al. | Oct 2004 | B2 |
6879982 | Shirasaka | Apr 2005 | B2 |
7013303 | Faybishenko et al. | Mar 2006 | B2 |
7099861 | Youn | Aug 2006 | B2 |
7296025 | Kung et al. | Nov 2007 | B2 |
7424501 | Macy, Jr. | Sep 2008 | B2 |
7505978 | Bodin et al. | Mar 2009 | B2 |
7559065 | Sosnovsky et al. | Jul 2009 | B1 |
7591003 | Focke et al. | Sep 2009 | B2 |
7698316 | Song et al. | Apr 2010 | B2 |
7703040 | Cutrell et al. | Apr 2010 | B2 |
7707152 | Greenfield et al. | Apr 2010 | B1 |
7730079 | Meijer et al. | Jun 2010 | B2 |
7774361 | Nachenberg et al. | Aug 2010 | B1 |
7831685 | Dai et al. | Nov 2010 | B2 |
7987420 | Kloba et al. | Jul 2011 | B1 |
8161498 | Atkin et al. | Apr 2012 | B2 |
8418192 | Sosnovsky et al. | Apr 2013 | B1 |
8471701 | Yariv et al. | Jun 2013 | B2 |
8726278 | Shawver et al. | May 2014 | B1 |
8762759 | Williams et al. | Jun 2014 | B2 |
8806451 | Zheng et al. | Aug 2014 | B2 |
9075672 | Beckman et al. | Jul 2015 | B2 |
9317255 | Meijer et al. | Apr 2016 | B2 |
9600351 | Aguera y Arcas et al. | Mar 2017 | B2 |
20010054045 | Shirasaka | Dec 2001 | A1 |
20010056371 | Shuster | Dec 2001 | A1 |
20010056418 | Youn | Dec 2001 | A1 |
20020023122 | Polizzi et al. | Feb 2002 | A1 |
20020032772 | Olstad et al. | Mar 2002 | A1 |
20020033844 | Levy et al. | Mar 2002 | A1 |
20020069218 | Sull et al. | Jun 2002 | A1 |
20020194161 | Mcnamee et al. | Dec 2002 | A1 |
20030131005 | Berry | Jul 2003 | A1 |
20030158839 | Faybishenko et al. | Aug 2003 | A1 |
20030167261 | Grust et al. | Sep 2003 | A1 |
20030233351 | Naeve et al. | Dec 2003 | A1 |
20040128616 | Kraft | Jul 2004 | A1 |
20040133639 | Shuang et al. | Jul 2004 | A1 |
20040143564 | Gross et al. | Jul 2004 | A1 |
20040165207 | Kashiwagi | Aug 2004 | A1 |
20040205046 | Cohen et al. | Oct 2004 | A1 |
20040230571 | Robertson | Nov 2004 | A1 |
20050050014 | Gosse et al. | Mar 2005 | A1 |
20050097089 | Nielsen et al. | May 2005 | A1 |
20050114306 | Shu et al. | May 2005 | A1 |
20050149496 | Mukherjee et al. | Jul 2005 | A1 |
20050149500 | Marmaros et al. | Jul 2005 | A1 |
20050154722 | Seitz et al. | Jul 2005 | A1 |
20050165743 | Bharat et al. | Jul 2005 | A1 |
20050165754 | Valliappan et al. | Jul 2005 | A1 |
20050198612 | Gonzalez | Sep 2005 | A1 |
20050203887 | Joshi et al. | Sep 2005 | A1 |
20050278308 | Barstow | Dec 2005 | A1 |
20060031206 | Deubel et al. | Feb 2006 | A1 |
20060041606 | Sawdon | Feb 2006 | A1 |
20060053157 | Pitts | Mar 2006 | A1 |
20060136564 | Ambrose | Jun 2006 | A1 |
20060184540 | Kung et al. | Aug 2006 | A1 |
20060212736 | Kimura | Sep 2006 | A1 |
20060235873 | Thomas | Oct 2006 | A1 |
20060277207 | Ure | Dec 2006 | A1 |
20070038665 | Kwak et al. | Feb 2007 | A1 |
20070040834 | Panesar et al. | Feb 2007 | A1 |
20070043704 | Raub et al. | Feb 2007 | A1 |
20070043750 | Dingle | Feb 2007 | A1 |
20070050347 | Meijer et al. | Mar 2007 | A1 |
20070073704 | Bowden et al. | Mar 2007 | A1 |
20070078822 | Cucerzan et al. | Apr 2007 | A1 |
20070088686 | Hurst-hiller et al. | Apr 2007 | A1 |
20070094042 | Ramer et al. | Apr 2007 | A1 |
20070112757 | Bates et al. | May 2007 | A1 |
20070118609 | Mullan et al. | May 2007 | A1 |
20070124363 | Lurie et al. | May 2007 | A1 |
20070136457 | Dai et al. | Jun 2007 | A1 |
20070175674 | Brinson et al. | Aug 2007 | A1 |
20070192327 | Bodin et al. | Aug 2007 | A1 |
20070226242 | Wang et al. | Sep 2007 | A1 |
20070271247 | Best et al. | Nov 2007 | A1 |
20080005079 | Flake et al. | Jan 2008 | A1 |
20080010676 | Dosa racz et al. | Jan 2008 | A1 |
20080016037 | Enomoto et al. | Jan 2008 | A1 |
20080071742 | Yang et al. | Mar 2008 | A1 |
20080071763 | Ferrenq et al. | Mar 2008 | A1 |
20080082513 | Oral et al. | Apr 2008 | A1 |
20080147641 | Leffingwell et al. | Jun 2008 | A1 |
20080147655 | Sinha et al. | Jun 2008 | A1 |
20080147671 | Simon et al. | Jun 2008 | A1 |
20080154877 | Joshi et al. | Jun 2008 | A1 |
20080178162 | Sanford et al. | Jul 2008 | A1 |
20080229231 | Delia et al. | Sep 2008 | A1 |
20080243783 | Santi et al. | Oct 2008 | A1 |
20090063421 | Burson et al. | Mar 2009 | A1 |
20090063448 | Depue et al. | Mar 2009 | A1 |
20090144229 | Meijer et al. | Jun 2009 | A1 |
20090248619 | Das et al. | Oct 2009 | A1 |
20090259863 | Williams et al. | Oct 2009 | A1 |
20090265367 | Corbett | Oct 2009 | A1 |
20090293073 | Nathan et al. | Nov 2009 | A1 |
20090327261 | Hawkins | Dec 2009 | A1 |
20090327270 | Teevan et al. | Dec 2009 | A1 |
20100107139 | Bireley et al. | Apr 2010 | A1 |
20100114885 | Bowers et al. | May 2010 | A1 |
20100205208 | Walker | Aug 2010 | A1 |
20100333201 | Haviv et al. | Dec 2010 | A1 |
20110066951 | Ward-karet et al. | Mar 2011 | A1 |
20110093434 | Arora et al. | Apr 2011 | A1 |
20110161840 | Wong et al. | Jun 2011 | A1 |
20110173621 | Meijer et al. | Jul 2011 | A1 |
20110239108 | Blomquist et al. | Sep 2011 | A1 |
20110275040 | de la Torre Paniagua et al. | Nov 2011 | A1 |
20110302630 | Nair et al. | Dec 2011 | A1 |
20120036494 | Gurumohan et al. | Feb 2012 | A1 |
20120072442 | De Smet et al. | Mar 2012 | A1 |
20120072985 | Davne et al. | Mar 2012 | A1 |
20120117644 | Soeder | May 2012 | A1 |
20120254842 | Henderson | Oct 2012 | A1 |
20120260250 | Maeda et al. | Oct 2012 | A1 |
20120284237 | Li et al. | Nov 2012 | A1 |
20120310527 | Yariv et al. | Dec 2012 | A1 |
20120330812 | Bouchard | Dec 2012 | A1 |
20130013921 | Bhathena et al. | Jan 2013 | A1 |
20130091197 | Bar-Zeev et al. | Apr 2013 | A1 |
20130097440 | Bar-Zeev et al. | Apr 2013 | A1 |
20130103715 | Beckman et al. | Apr 2013 | A1 |
20130263127 | y Arcas et al. | Oct 2013 | A1 |
20190020733 | Bar-Zeev et al. | Jan 2019 | A1 |
Number | Date | Country |
---|---|---|
1808430 | Jul 2006 | CN |
1989486 | Jun 2007 | CN |
101312457 | Nov 2008 | CN |
101315600 | Dec 2008 | CN |
101331475 | Dec 2008 | CN |
101849228 | Sep 2010 | CN |
101854371 | Oct 2010 | CN |
102158516 | Aug 2011 | CN |
102200911 | Sep 2011 | CN |
102656561 | Sep 2012 | CN |
H0728736 | Jan 1995 | JP |
H09167097 | Jun 1997 | JP |
2006260372 | Sep 2006 | JP |
2008158637 | Jul 2008 | JP |
20020032060 | May 2002 | KR |
20030082109 | Oct 2003 | KR |
20030082110 | Oct 2003 | KR |
2005066842 | Jul 2005 | WO |
Entry |
---|
“Office Action Issued in European Patent Application No. 13818093.0”, dated Feb. 13, 2018, 7 Pages. |
“Inversion of Control”, Retrieved from <<msdn.microsoft.com/en-us/library/ff921087.aspx>>, Retrieved Date: Aug. 1, 2012, 4 Pages. |
“Final Office Action Issued in U.S. Appl. No. 13/714,607”, dated Aug. 26, 2015, 9 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 13/714,607”, dated Feb. 16, 2016, 13 Pages. |
“Notice of Allowance Issued in U.S. Appl. No. 13/714,607”, dated Nov. 9, 2016, 5 Pages. |
Gamma, et al., “Design Patterns, Elements of Reusable Object-Oriented-Software, Visitor Pattern, Structural Patterns”, Published by Pearson Education India, Addison-Wesley Professional Computing series, Apr. 1, 2005, pp. 207-217. |
Gamma, E, et al., “Design Patterns, Passage”, Published by Pearson Education India, Addison-Wesley Professional Computing series, Jan. 1, 1995, pp. 139-143. |
Nagy, Steven, “Above the Cloud »inversion of control”, Retrieved from <<web.archive.org/web/20120318124904/www.azure.snagy.name/blog/?tag=inversion-of-control>>, Oct. 25, 2009, 2 Pages. |
“International Search Report and Written Opinion Issued in PCT Application No. PCT/US2013/075200”, dated Mar. 6, 2014, 9 Pages. |
“Effective Stored JavaScript in MongoDB”, Retrieved from web.archive.org/web/20110820230333/http://vasilrem.com/blog/software-development/stored-javascript-in-mongo/, Retrieved on Aug. 25, 2011, 5 Pages. |
“Enumerable Methods”, Retrieved from msdn.microsoft.com/en-us/library/bb341635(d=printer).aspx, Retrieved on Sep. 14, 2011, 17 Pages. |
“Flamenco Search”, Retrieved from bailando.sims.berkeley.edu/flamenco.html, Retrieved on Mar. 3, 20081 Page. |
“Google Desktop”, Retrieved from web.archive.org/web/20080418224533/http://desktop.google.com/features.html, Oct. 14, 2004, 3 Pages. |
“ICDL—International Children's Digital Library”, Retrieved from http://www.icdlbooks.org, Retrieved on Mar. 3, 2008, 3 Pages. |
“Kinect Geeks [Series 5] User Generator”, Published by Kogakusha Co., vol. 36, No. 8, Aug. 1, 2011, 3 Pages. |
Zhang, et al., “Mining Multiple Data Sources: Local Pattern Analysis”, in Journal of Data Mining and Knowledge Discovery, vol. 12, Issue 2-3, May 1, 2006, 5 Pages. |
“mSpace”, Retrieved from web.archive.org/web/20080313023432/http://mspace.fm, Retrieved on Mar. 3, 2008, 2 Pages. |
“Papers from the Placeless Documents Project”, Retrieved from web.archive.org/web/20080122010539/http://www2.parc.com/csl/projects/placeless/papers/, Retrieved on Mar. 3, 2008, 4 Pages. |
“Representational State Transfer (REST)”, Retrieved from https://www.packetizer.com/ws/rest.html, Retrieved on Oct. 4, 2011, 6 Pages. |
Zammetti, Frank W., “Practical Palm Pre WebOS Projects”, Published by Apress, 2009, 24 Pages. |
Caldato, Claudio, “The WebSockets Prototype Gets Another Update”, Retrieved from blogs.msdn.microsoft.com/interoperability/2011/02/25/the-websockets-prototype-gets-another-update-2/, Feb. 25, 2011, 4 Pages. |
“Using the Palm WebOS Platform with Microsoft Exchange Server.”, Retrieved from web.archive.org/web/20110617213246/http://www.hpwebos.com/us/assets/pdfs/business/Palm_WhitePaper_05_exchange.pdf, Jun., 2011, 9 Pages. |
“Walkthrough: Creating an IQueryable LINQ Provider”, Retrieved from msdn.microsoft.com/en-us/library/bb546158.aspx, Retrieved on Aug. 25, 2011, 24 Pages. |
“Welcome to Google Enterprise”, Retrieved from web.archive.org/web/20110930142748/http://www.google.com/enterprise/enterprise_solutions/education.html, Retrieved on Oct. 19, 2011, 2 Pages. |
“X Window System—Wikipedia”, Retrieved from https://en.wikipedia.org/w/index.php?title=X_Window_System&oldid=365473895, Jun. 1, 2010, 17 Pages. |
“Corrected Search Report Issued in European Patent Application No. 08798392”, dated Jan. 26, 2011, 5 Pages. |
“Extended Search Report Issued in European Patent Application No. 08798392”, dated Nov. 23, 2010, 4 Pages. |
“Office Action Issued in Korean Patent Application No. 10-2014-7009554”, dated Aug. 22, 2018, 7 Pages. |
“Final Office Action Issued in U.S. Appl. No. 11/172,365”, dated Aug. 6, 2008, 31 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 11/172,365”, dated Nov. 6, 2007, 21 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 11/172,365”, dated Jul. 10, 2009, 35 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 11/172,365”, dated Dec. 26, 2008, 36 Pages. |
“Final Office Action Issued in U.S. Appl. No. 11/846,621”, dated Oct. 28, 2013, 29 Pages. |
“Final Office Action Issued in U.S. Appl. No. 11/846,621”, dated Jan. 27, 2012, 24 Pages. |
“Final Office Action Issued in U.S. Appl. No. 11/846,621”, dated Nov. 18, 2010, 19 Pages. |
“Final Office Action Issued in U.S. Appl. No. 11/846,621”, dated Mar. 1, 2010, 18 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 11/846,621”, dated Oct. 9, 2009, 16 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 11/846,621”, dated Jun. 7, 2010, 16 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 11/846,621”, dated Sep. 29, 2011, 21 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 11/846,621”, dated May 17, 2013, 28 Pages. |
“Final Office Action Issued in U.S. Appl. No. 12/145,522”, dated Mar. 30, 2011, 29 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 12/145,522”, dated Oct. 21, 2010, 25 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 12/145,522”, dated May 8, 2012, 35 Pages. |
“Office Action Issued in European Patent Application No. 12839717.1”, dated Jul. 20, 2018, 6 Pages. |
“Office Action Issued in European Patent Application No. 12839717.1”, dated Apr. 11, 2017, 6 Pages. |
“Office Action Issued in European Patent Application No. 12839717.1”, dated Mar. 5, 2018, 5 Pages. |
“Supplementary Search Report Issued in European Patent Application No. 12839717.1”, dated Oct. 14, 2015, 6 Pages. |
“Supplementary Search Report Issued in European Patent Application No. 12858967.8”, dated Sep. 29, 2015, 7 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 13/279,245”, dated Apr. 10, 2014, 11 Pages. |
“Final Office Action Issued in U.S. Appl. No. 13/334,062”, dated Jan. 14, 2016, 17 Pages. |
“Final Office Action Issued in U.S. Appl. No. 13/334,062”, dated Nov. 20, 2014, 15 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 13/334,062”, dated Apr. 11, 2013, 13 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 13/334,062”, dated Aug. 22, 2013, 13 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 13/334,062”, dated May 19, 2015, 16 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 13/334,062”, dated May 2, 2014, 14 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 13/334,065”, dated Apr. 24, 2013, 16 Pages. |
“Final Office Action Issued in U.S. Appl. No. 13/650,022”, dated Jun. 4, 2015, 17 Pages. |
“Pre-Interview First Office Action Issued in U.S. Appl. No. 13/650,022”, dated Jul. 31, 2014, 4 Pages. |
“Pre-Interview First Office Action Issued in U.S. Appl. No. 13/714,607”, dated Apr. 17, 2015, 5 Pages. |
“Notice of Allowance Issued in Korean Patent Application No. 10-2014-7009554”, dated Dec. 27, 2018, 5 Pages. |
“Office Action Issued in European Patent Application No. 12839717.1”, dated Jan. 18, 2019, 5 Pages. |
“Office Action Issued in Canadian Patent Application No. 2,851,514”, dated Feb. 19, 2019, 3 Pages. |
“First Office Action and Search Report Issued in Chinese Patent Application No. 201380065171.6”, dated Sep. 18, 2017, 12 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 13/937,968”, dated Jul. 10, 2015, 14 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 14/749,780”, dated Dec. 3, 2015, 7 Pages. |
“Non Final Office Action Issued in U.S. Appl. No. 15/156,842”, dated Jan. 26, 2018, 20 Pages. |
“Office Action Issued in Canadian Patent Application No. 2,851,514”, dated Aug. 3, 2018, 4 Pages. |
“First Office Action Issued in Chinese Patent Application No. 200880105215.2”, dated Jul. 21, 2011, 16 Pages. |
“Office Action Issued in Chinese Patent Application No. 200880105215.2”, dated Feb. 18, 2013, 8 Pages. |
“Second Office Action Issued in Chinese Patent Application No. 200880105215.2”, dated Mar. 1, 2012, 9 Pages. |
“Third Office Action Issued in Chinese Patent Application No. 200880105215.2”, dated Aug. 3, 2012, 9 Pages. |
“First Office Action and Search Report Issued in Chinese Patent Application No. 201210405280.5”, dated Jun. 3, 2014, 12 Pages. |
“First Office Action and Search Report Issued in Chinese Patent Application No. 201210563961.4”, dated Apr. 3, 2015, 17 Pages. |
“Second Office Action Issued in Chinese Patent Application No. 201210563961.4”, dated Oct. 28, 2015, 26 Pages. |
“Third Office Action Issued in Chinese Patent Application No. 201210563961.4”, dated Apr. 28, 2016, 13 Pages. |
“Office Action Issued in Australian Patent Application No. 2012322684”, dated Mar. 17, 2017, 3 Pages. |
“First Office Action and Search Report Issued in Chinese Patent Application No. 201280061010.5”, dated Aug. 30, 2016, 13 Pages. |
“Second Office Action Issued in Chinese Patent Application No. 201380065171.6”, dated Apr. 10, 2018, 5 Pages. |
“Office Action Issued in Russian Patent Application No. 2014114277”, dated Aug. 26, 2016, 5 Pages. |
“Office Action Issued in Japanese Patent Application No. 2014-535891”, dated Jul. 20, 2016, 9 Pages. |
Aijaz, et al., “The Resource-Oriented Mobile Web Server for Long-Lived Services”, in Proceedings of the IEEE 6th International Conference on Wireless and Mobile Computing, Networking and Communications, Oct. 11, 2010, 7 Pages. |
Allen, Mitch, “Palm WebOS”, Published by O'reilly Media Inc., Aug. 2009, 114 Pages. |
Biao, et al., “High Design of Server for Smartphone Application”, in Proceedings of IEICE General Conference, Retrieved on Oct. 4, 2011, 2 Pages. |
Blandford, Rafe, “Previewing Nokia's Mobile Web Server”, Retrieved from www.allaboutsymbian.com/features/item/Previewing_Nokias_Mobile_Web_Server.php, Jun. 18, 2007, 12 Pages. |
Calishain, Tara, “Google Hacks, 2nd Edition”, Published by O'Reilly, Dec. 2004, 10 Pages. |
Carughi, Giovanni Toffetti, “Modeling Data-Intensive Rich Internet Applications with Server Push Support”, in Journal of Model-Driven Web Engineering, vol. 261, Jul. 17, 2007, 16 Pages. |
Dornfest, Rael, “Google Your Desktop”, Published by O'reilly, Oct. 14, 2004, 8 Pages. |
Duhl, Joshua, “Rich Internet Applications”, in Journal of IDC Report 3906, Nov. 2003, 34 Pages. |
Wesdyer, “The Marvels of Monads”, Retrieved from blogs.msdn.microsoft.com/wesdyer/2008/01/10/the-marvels-of-monads/, Jan. 10, 2008, 29 Pages. |
Gerner, et al., “Automatic Client-Server Partitioning of Data-Driven Web Applications”, in Proceedings of the ACM SIGMOD international Conference on Management of Data, Jun. 27, 2006, 3 Pages. |
Ghanem, et al., “Databases Deepen the Web”, in Journal of Computer, vol. 37, Issue 1, Jan. 2004, pp. 116-117. |
Griffin, et al., “Scaling Instant Messaging Communication Services”, in Proceedings of IEEE Symposium on Computers and Communications, Jun. 28, 2011, 8 Pages. |
Grossman, et al., “IIT Intranet Mediator: Bringing Data Together on a Corporate Intranet”, in Journal of IT Professional, vol. 4, Issue 1, Jan. 2002, pp. 35-40. |
“Microsoft Windows XP—Copyright 2001”, 2001, 3 Pages. |
Malouf, David Heller, “RIAs: The Technology is Exciting, But They Really Do Help Users”, Retrieved from www.uxmatters.com/MT/archives/000041.php, Dec. 6, 2005, 13 Pages. |
Kozel, et al., “Mobile Access into Information Systems”, in Proceedings of the 30th International Conference on Information Technology Interfaces, Jun. 23, 2008, pp. 851-856. |
Nauer, et al., “Using of Multiple Data Source for Information Filtering: First Approaches in the MedExplore Project”, in Proceedings of 5th DELOS Workshop on Filtering and Collaborative Filtering, Nov. 1997, 10 Pages. |
Park, Will, “Run a Web-Server on your Android Mobile Phone with iJetty”, Retrieved from www.intomobile.com/2008/03/17/run-a-web-server-on-your-android-mobile-phone-with-ijetty/, Mar. 17, 2008, 8 Pages. |
“International Search Report and Written Opinion Issued in PCT Application No. PCT/US12/59832”, dated Mar. 29, 2013, 9 Pages. |
“International Search Report and Written Opinion Issued in PCT Application No. PCT/US12/69979”, dated Apr. 5, 2013, 10 Pages. |
“International Search Report and Written Opinion Issued in PCT Application No. PCT/US2008/073890”, dated Mar. 20, 2009, 14 Pages. |
Schreiber, et al., “Thirteen New Players in the Team: A Ferry-Based LINQ to SQL Provider”, in Proceedings of the VLDB Endowment, vol. 3, No. 2, Sep. 1, 2010, 4 Pages. |
Shimizu, Toshihiro, “Create Scalable Web Application ˜ Get to Know Server Side Java Script Node.js”, Published by Gijutsu Hyoron Publishing Co Ltd, Sep. 18, 2011, 8 Pages. |
“Macintosh Older Protocols Software”, Retrieved from www.macorchard.com/gopher.html., Retrieved on Mar. 3, 2008, 5 Pages. |
Thimmappa, Chethan, “How to Run a Web Server on S60 Mobile Phones”, Retrieved from www.chaaps.com/how-to-run-a-web-server-on-s60-mobile-phones.html, Sep. 5, 2010, 11 Pages. |
Tilkov, et al., “Using JavaScript to Build High-Performance Network Programs”, in Proceedings of IEEE Internet Computing, vol. 14, Issue 6, Nov. 2010, 4 Pages. |
Zafar, Kamran, “kWS—Android Web Server”, Retrieved from web.archive.org/web/20111003001436/http://www.androidzoom.com/android_applications/communication/kws-android-web-server_hlfb.html, Retrieved on Oct. 4, 2011, 3 Pages. |
“The Revolution for Interacting with the Web”, Retrieved from web.archive.org/web/20081202051139/http://www.softguide.com/pj/2836/flex.htm, Retrieved on Apr. 17, 2008, 3 Pages. |
Grust, Torsten, “Monad Comprehensions: A Versatile Representation for Queries”, in Proceedings of the Functional Approach to Data Management—Modeling, Analyzing and Integrating Heterogeneous Data, Sep. 2003, pp. 288-311. |
“Office Action Issued in European Patent Application No. 12839717.1”, dated Aug. 12, 2019, 6 Pages. |
“Office Action Issued in Brazilian Patent Application No. BR112014008762-8”, dated Dec. 4, 2019, 5 Pages. |
Number | Date | Country | |
---|---|---|---|
20170161118 A1 | Jun 2017 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13714607 | Dec 2012 | US |
Child | 15433034 | US |