Invented by Mohan Kumar PANDIAN, Rahul Kurpad, Vijay Venkatachalam, Sanjay Gupta, Sovit Garg, Citrix Systems Inc
Background for Systems and methods of providing user interfaces to management applications
Typical web servers serve only static files, which may contain dynamic content generated on the server by modules such as Perl Hypertext Preprocessor PHP (PHP), Python Active Server Pages (ASP) and others. These implementations may negatively impact performance as they require the server to process each update of the web page. Such implementations are not scalable as the number and type of users, pages, and requests increases.
Other web servers can use client-side plugins, like Java, which is provided by Oracle Corporation in Redwood City, Calif., Flash, by Adobe Systems, Inc., of San Jose, Calif., SilverLight by Microsoft, Inc., of Redmond, Wash., or other plug-ins for web browsers. These plug-ins may provide a richer user experience, but they must be installed on the computer of the client. They may also not be compatible with all computing devices. The application files that are used by these plug-ins can be large and require a significant download before execution. This may impact the first-time experience of a user. Plug-ins can also have security flaws, so the user is responsible for managing updates and security.
The present disclosure is aimed at a method of providing a GUI framework based on definitions. The method includes: (a) sending, from a computing device of a computing device of a second computing system, a definition based GUI framework, which comprises definitions for an object, a plurality views that define predetermined displays for the object and allowable operations on the object, as well as at least a navigation element to select a view. The method includes (b), receiving a stateless data request from the second device by the first device. The method includes (c), transmitting data from the first computing device by responding to the stateless requests to the second computing devices for display in the “first view” of the plurality views, according to definitions.
In one embodiment, the definitions for each object include identifications such as a name, type, address, and property. In a second embodiment of the method each definition of the plurality views includes identifications of at least one object from the at most one objects. It also includes identifications of one or several properties of that object and identifications of one of more operations which can be performed on that object. In a further embodiment, the method comprises transmitting data to be cached and displayed in a second of the plurality views in response to a selection made by the user of the second device.
In one embodiment, the method comprises transmitting instructions to the web browser on the second computing device for natively executing an asynchronous communications layer that intercepts requests generated by selections made by a user in response to an object from the at least one objects. In another embodiment, the instructions transmitted include instructions to identify that a plurality requests are duplicate data and to transmit a single, stateless request. In a further embodiment, instructions are transmitted for intercepting multiple simultaneous requests. The first subset is then sent, with a predetermined size limit.
In one embodiment, the method comprises repeating by the first computing system, steps (a), (b), and (c) in order to create a third computing system, wherein, the web-browser of the third computing is a different kind than that of the second computing, while the definitions remain agnostic of the browser. In one embodiment, the execution of the GUI framework based on definitions does not require the installation of a plug-in. In another embodiment, the method comprises a first computing device that is an intermediary between the second computing system and a plurality servers. The at least object includes an operational statistic for at least one server.
In a third aspect, the disclosure is aimed at a system that provides a framework for a definition-based GUI. The system comprises a first computing unit that includes a processor running a webserver. The web server can be configured to (a) transmit to the second device a definition-based GUI framework including definitions for the at-least-one object, a plurality views that define predetermined displays for the at-least-one object and allowable operations on the object and at-least one navigation element to select a view. The web server can also be configured to (b) receive a stateless data request from the second computing system. The web server can also be configured to (c) send data to the second computing system in response to the stateless requests.
In one embodiment, the definitions for each object include identifications such as a name, type, address, and property. In another embodiment, each definition of the plurality views includes identifications of at least one object from the set of objects, identifications of one or several properties of that object, and identifications of one of more operations which may be performed upon the object. In some embodiments the web server may be further configured to transmit data for caching, and display in a secondary view of the plurality views, in response to a selection made by the user of the second device.
In one embodiment, the server web is configured to transmit instructions that the web browser on the second computing device executes natively an asynchronous layer of communication for intercepting requests triggered by selections made by the user of one of the objects. In another embodiment, the instructions transmitted include instructions to identify that a plurality requests are duplicate data and transmit a single, stateless request. In a further embodiment, instructions are also transmitted for intercepting multiple simultaneous requests. The first subset is then sent, with a predetermined size limit.
In one embodiment, the server is configured to repeat steps (a), (b) and (c) on a third computer, where the web-browser of the third device is a different kind than the web-browser of the second device, but the definitions do not depend on the browser. In one embodiment, the GUI framework is executed without the need for a plug-in. In another embodiment, the computing device 1 is used as an intermediary between a second computing device and multiple servers. The at least object includes an operational statistic for at least one server.
The description and accompanying drawings show the details of different embodiments of the invention.
The following sections of the specification with their respective contents can be useful for reading the descriptions of various embodiments:
Before discussing the details of particular embodiments of systems and methods for clients and appliances, it might be useful to discuss the computing and network environments in which these embodiments could be deployed. Referring to FIG. FIG. 1A shows an example of a network environment. The network environment consists of one or several clients 102a-102n (also known as client(s), 102) in communication to one or two servers 106a-106n (also known as remote machine(s), 106) via one or multiple networks 104,104? (generally known as network 104). A client 102 can communicate with a server (106) via an appliance 200 in some embodiments.
Although FIG. “Although FIG. The clients 102, 106 and servers 106 could be on the same network. What are the networks 104-104? It can be one type of network, or several types of networks. The network 104 or the network 104? It can be a local area network (LAN), like a company Intranet or a metropolitan area network, or a wide-area network(WAN), like the Internet or the World Wide Web. Network 104 is one example. Network 104 could be a private network, while network 104 might be a public one. Network 104 and network 104 can be considered private networks in some instances. A public network. Networks 104 and104 may be used in another way. Both networks may be private. Clients 102 could be at a branch office or corporate enterprise and communicate via a WAN connection through the network 104 to the corporate data center servers 106.
The network 104 or 104?” Any type or form of network may be used. It can include any number of the following: a network 104 and/or 104, a broadcast network network, large area network network networks, a wide-area network network network, and a telecommunications network. The network 104 can include a wireless link such as an infrared channel, satellite band, or a wireline network. What is the topology of network 104 or 104? It could be a bus, star or ring network topology. What is the network 104 or 104? The network 104 and/or 104 may have any network or network topology that is known to those who are skilled in the art of the art.
As shown at FIG. “As shown in FIG. 1A, the appliance 200 is shown between networks 104 and104?. The appliance 200 can be found on network 104 in some instances. An appliance 200 may be deployed at a branch office within a corporate entity, for example. The appliance 200 could also be found on network 104?. An appliance 200, for example, could be found at a corporate data centre. A plurality of appliances 200 can be deployed on network 1004. A plurality of appliances 200 can be deployed on network 104.1?. One embodiment shows a first appliance 200 communicating with a second appliance 200. Other embodiments allow the appliance 200 to be part of any client 102, server 106, or other network 104.104. as the client 102. An appliance 200 or more may be found at any point on the network or in the communications path between a client and server 102.
In some embodiments, an appliance 200 includes any network device manufactured by Citrix Systems, Inc., Ft. Lauderdale Fla., also known as Citrix netScaler devices. Other embodiments include any product embodiments known as WebAccelerator or BigIP made by F5 Networks, Inc., Seattle, Wash. Another embodiment of the appliance 205 is any one of the DX acceleration platform platforms and/or SSL VPN series devices, such as SA 700, SA 2000, SA 4000, SA 6000, and SA 4000 devices manufactured by Juniper Networks, Inc., Sunnyvale, Calif. Another embodiment of the appliance 200 includes all application acceleration and/or security-related appliances and/or software manufactured or distributed by Cisco Systems, Inc., San Jose, Calif., including the Cisco AVS Series Application Velocity Systems and Cisco ACE Application Control Engine Modular service software.
In one embodiment, multiple servers may be logically grouped 106. These embodiments may also include a server farm 38. The serves 106 in some embodiments may be geographically dispersed. A farm 38 can be administered as one entity in some cases. Other embodiments of the server farm 38 include a plurality server farms 38. One embodiment of the server farm executes one to several applications for one or more clients 102.
The servers 106 in each farm 38 may be heterogeneous. One or more servers 106 may operate under one operating system platform, such as WINDOWS, which is manufactured by Microsoft Corp. of Redmond. Wash., while the other servers (106 and 106) can operate on another operating system platform, such as Unix or Linux. Servers 106 and 106 from each farm 38 don’t need to be physically close to other servers 106 in the farm 38. The servers 106 that are logically connected to form a farm 38 can be interconnected via a wide-area or medium-area connection (WAN) or MAN connections. A farm 38 could include servers 106 located on different continents, in different areas of a country, state, city or campus. The data transmission speeds between servers 38 and 106 can be improved if servers 106 are connected via a local-area networking (LAN) connection, or another type of direct connection.
Click here to view the patent on Google Patents.