Contemporary computer networks consist of a number of computer systems, called nodes, communicating with other computer systems via communication links. Typically, some of the nodes are client nodes and other nodes are server nodes. A client node formulates and delivers queries to a server node. A user of the client node enters the queries through a user interface operating on the client node. The server node evaluates the queries and delivers responses to the client node for display on the client user interface.
Usually, the server nodes host a variety of application programs that can be accessed and executed by client nodes. When a client node launches an application program, the execution of that application program can occur at either the client node or the server node, depending upon the computing model followed by the computer network. In a server-based computing model, the server node executes the application program, and only the control information for the client user interface is transmitted across the computer network to the client node for display. In a client-based computing model, the server node transmits the application program to the client node so that the client node can run the program using the resources of the client node.
One drawback of contemporary computer networks is that client nodes may be unaware of the application programs available for use on the server nodes. In fact, client nodes may not even be aware of each available server node on the network. To find available application programs on a particular server node, a user of the client node may need to find and gain access to that server node and perform a directory listing of the files on that server node. Even then, this listing might not indicate to the user those applications which the user is authorized to use.
Moreover, once the user is aware of the application programs on a server node, often that user must establish a link to those applications. Industry has developed software tools to aid the user in creating these links, e.g., Remote Application Manager manufactured by Citrix Systems, Inc., of Ft. Lauderdale, Fla. The Remote Application Manager is an application program installed on the client node. This application program guides an administrator of the client node to enter information that establishes a link to an application published on a particular server node. The administrator supplies such information as the name of the session, the protocol for accessing the server node, the server name or IP address or the published application. Approaches of this kind require that the administrator know the information and understand the details of protocols and domains in order to establish the connection.
The present invention enables the user of a client system to become informed about available application programs on servers in a network without requiring the user to know where to find such applications or to enter technical information necessary to link to such applications.
In one aspect, the invention relates to a method for presenting application programs to a client system in a network including the client system and a plurality of servers. The servers include a host server that receives application-related information corresponding to application programs hosted by a plurality of servers in a network. User credentials are received from the client system. Whether each hosted application program is available to the client system for execution is determined based on the user credentials and the received application-related information. Information is transmitted from the host server to the client system indicating to the client system each hosted application that is available to the client system for execution. In some embodiments, the host server creates an output display containing the application-related information, such as a HyperText Markup Language (HTML) file, an Extended Markup Language (XML), or other Structured General Markup Language (SGML) file.
The host server can authenticate the client system based on received user credentials. When the client system selects one of the available applications for execution, that application can be executed without requiring additional input of user credentials by a user of the client system, although the selected application is at a server other than the host server.
In one embodiment, a connection is established between the client system and the host server using an Independent Computing Architecture (ICA) protocol. The ICA protocol can establish a virtual channel to transmit information to the client system indicating each hosted application program that is available to the client system.
A request to execute one of the available hosted application programs can be received on the connection. In response to the request, a second connection between the client system and the host server can be established to exchange information associated with an execution of the requested application program. In another embodiment, a connection between the host server and a second server hosting the requested application can be established in response to the request. Information associated with an execution of the requested application program can be exchanged between the second server and the client system via the host server.
A second request to execute a second one of the available hosted application programs can be received on the connection between the host server and the client system. Another connection between the host server and a third server hosting the requested application can be established in response to the second request. Information associated with an execution of the second requested application program can be exchanged between the third server and the client system via the host server. Information received from the second and third servers can be merged for transmission to the client system.
In still another embodiment, application information can be provided by the host server to the client system in response to the first request. A second connection can be established between the client system and a second server hosting the requested application in response to the provided application information.
The host server can transmit the available application information in response to a request by the client system. The transmitted information can produce a graphical user interface display at the client system having icons representing the available application programs. The transmitted information can also disclose each hosted application program that the client system is unauthorized to use.
The host server can communicate with each of the other servers to determine the application programs hosted by those other servers and to develop a database for storing the application-related information. The database can be accessible to each of the other servers of the plurality, or each of the other servers can maintain a database for storing the application-related information.
In another aspect, the invention relates to a method for presenting to a client system each application hosted by a server that is available to the client system. User credentials are received from the client system. Application-related information is maintained by the server. Whether each application hosted by the server is available to the client system for execution is determined based on the user credentials and the application-related information. Information indicating each application that is available to the client system is transmitted from the server to the client system.
In another aspect, the invention relates to a server comprising a service module that collects application-related information corresponding to application programs hosted by the plurality of servers. A database stores the collected application-related information. A receiver receives user credentials from the client system. The service module determines for each application program hosted by the plurality of servers whether that hosted application program is available for use by the user of the client system based on the user credentials and the application-related information stored in the database. A transmitter transmits information to the client system.
The service module can transmit a datagram to other servers in the plurality to collect the application-related information corresponding to the application programs hosted by those servers. The transmitted information discloses to a user of the client system each hosted application program that is available for use by the user of the client system. The transmitter can transmit available application information using a virtual channel communications protocol.
The invention is pointed out with particularity in the appended claims. The above and further advantages of the invention may be better understood by referring to the following description in conjunction with the accompanying drawings, in which:
The client node 10 can be any personal computer (e.g., 286, 386, 486, PENTIUM, PENTIUM II, MACINTOSH computer), Windows-based terminal, Network Computer, wireless device, information appliance, RISC Power PC, X-device, workstation, mini computer, main frame computer or other computing device that has a windows-based desktop and sufficient persistent storage for executing application programs downloaded from the application servers 30, 32, 34 across the network 40. Windows-oriented platforms supported by the client node 10 can include WINDOWS 3.x, WINDOWS 95, WINDOWS 98, WINDOWS NT 3.51, WINDOWS NT 4.0, WINDOWS CE, MACINTOSH, JAVA, and UNIX. The client node 10 can include a display screen 12, a keyboard 14, memory 16 for storing downloaded application programs, a processor 17, and a mouse 18. The memory 16 can provide persistent or volatile storage. The processor 17 can execute the application programs locally on the client node 10 and display a resulting windows-based desktop on the display screen 12. Such local processing on the client node 10 is according to the above-described client-based computing model.
Alternatively, the client node 20 can be any terminal (windows or non-windows based), or thin-client device operating according to a server-based computing model. In a server-based computing model, the execution of application programs occurs entirely on the application servers 30, 32, 34, and the user interface, keystrokes, and mouse movements are transmitted over the network 40 to the client node 20. The user interface can be text driven (e.g., DOS) or graphically driven (e.g., Windows). Platforms that can be supported by the client node 20 include DOS and Windows CE for windows-based terminals. The client node 20 includes a display screen 22, a keyboard 24, a mouse 28, a processor (not shown), and persistent storage (not shown).
The application servers 30, 32, 34, and 36 can be any computing device that controls access to other portions of the network (e.g., workstations, printers). It is to be understood that more or fewer application servers can be connected to the network 40. The servers 30, 32, 34, and 36 can operate according to either a client-based computing model or a server-based computing model as described above.
Each application server 30, 32, 34, and 36 hosts one or more application programs that can be accessed by the client nodes 10 and 20. Applications made available to client nodes for use are referred to as published applications. Examples of such applications include word processing programs such as MICROSOFT WORD® and spreadsheet programs such as MICROSOFT EXCEL®, both manufactured by Microsoft Corporation of Redmond, Wash., financial reporting programs, customer registration programs, programs providing technical support information, customer database applications, or application set managers.
The servers 30, 32, and 34 can belong to the same domain 38. In the network 40, a domain is a sub-network comprising a group of application servers and client nodes under control of one security database. A domain can include one or more “server farms.” (A server farm is a group of servers that are linked together to act as a single server system to provide centralized administration.) Conversely, a server farm can include one or more domains. For servers of two different domains to belong to the same server farm, a trust relationship may need to exist between the domains. A trust relationship is an association between the different domains that allows a user to access the resources associated with each domain with just one log-on authentication.
In one embodiment, the application server 36 is in a different domain than the domain 38. In another embodiment, the application server 36 is in the same domain as servers 30, 32, and 34. For either embodiment, application servers 30, 32, and 34 can belong to one server farm, while the server 36 belongs to another server farm, or all of the application servers 30, 32, 34, and 36 can belong to the same server farm. When a new server is connected to the network 40, the new server joins either an existing server farm or starts a new server farm.
The network 40 can include a master server node for performing load-level balancing among the application servers 30, 32, 34, and 36. The master server node can be one of the application servers 30, 32, 34, or 36. The master server node includes a list of server addresses and load information corresponding to each of the other application servers. The master server node can direct the client node to a particular server node on which to execute an application based on the list of available servers and corresponding load levels. Alternatively, the application servers 30, 32, 34, 36 may collaborate among themselves in a peer-to-peer fashion in order to exchange administration information such as load levels, allowing any server 30, 32, 34, 36 to respond to a request made by a client node 10, 20.
Program Neighborhood
According to the principles of the invention, a user of either client node 10, 20 is able to learn of the availability of application programs hosted by the application servers 30, 32, 34, and 36 in the network 40 without requiring the user to know where to find such applications or to enter technical information necessary to link to such applications. These available application programs comprise the “program neighborhood” of the user. A system for determining a program neighborhood for a client node includes an application program (hereafter referred to as the “Program Neighborhood” application), memory for storing components of the application program, and a processor for executing the application program.
The Program Neighborhood application can be installed in memory of the client node 10 and/or on the application servers 30, 32, 34, and 36 as described below. The Program Neighborhood application is a collection of services, applications program interfaces (APIs), and user interface (UI) programs that disclose to users of the client nodes 10, 20 those application programs hosted by the application servers that each client node is authorized to use (e.g., execute).
An application server operating according to the Program Neighborhood application collects application-related information from each of the application servers in a server farm. The application-related information for each hosted application can be a variety of information including, for example, an address of the server hosting that application, the application name, the users or groups of users who are authorized to use that application, and the minimum capabilities required of the client node before establishing a connection to run the application. For example, the application may stream video data, and therefore a required minimum capability is that the client node supports video data. Other examples are that the client node can support audio data or can process encrypted data. The application-related information can be stored in a database as described later in the specification.
When a client node logs onto the network 40, the user of the client node provides user credentials. User credentials typically include the username of the client node, the password of the user, and the domain name for which the user is authorized. The user credentials can be obtained from smart cards, time-based tokens, social security numbers, user passwords, personal identification (PIN) numbers, digital certificates based on symmetric key or elliptic curve cryptography, biometric characteristics of the user, or any other means by which the identification of the user of the client node can be obtained and submitted for authentication. The server responding to the client node can authenticate the user based on the user credentials. The user credentials can be stored wherever the Program Neighborhood application is executing. When the client node 10 executes Program Neighborhood application, the user credentials can be stored at the client node 10. When an application server is executing the Program Neighborhood, the user credentials can be stored at that server.
From the user credentials and the application-related information, the server can also determine which application programs hosted by the application servers are available for use by the user of the client node. The server transmits information representing the available application programs to the client node. This process eliminates the need for a user of the client node to set-up application connections. Also, an administrator of the server can control access to applications among the various client node users.
The user authentication performed by the server can suffice to authorize the use of each hosted application program presented to the client node, although such applications may reside at another server. Accordingly, when the client node launches (i.e., initiates execution of) one of the hosted applications, additional input of user credentials by the user may be unnecessary to authenticate use of that application. Thus, a single entry of the user credentials can serve to determine the available applications and to authorize the launching of such applications without an additional, manual log-on authentication process by the client user.
Either a client node 10, 20 or an application server can launch the Program Neighborhood application as described in connection with
One embodiment of the Program Neighborhood application filters out application programs that the client node 10, 20 is unauthorized to use and displays only authorized (i.e., available) programs. In other embodiments, the Program Neighborhood application can display authorized and unauthorized applications. When unauthorized applications are not filtered from the display, a notice can be provided indicating that such applications are unavailable. Alternatively, the Program Neighborhood application can report all applications hosted by the application servers 30, 32, 34, 36 to the user of a client node, without identifying which applications the client node 10, 20 is authorized or unauthorized to execute. Authorization can be subsequently determined when the client node 10, 20 attempts to run one of those applications.
The client node 20, via the web browser 80, transmits a request 82 to access a Uniform Resource Locator (URL) address corresponding to an HTML page residing on server 30. In some embodiments the first HTML page returned 84 to the client node 20 by the server 30 is an authentication page that seeks to identify the client node 20.
The authentication page allows the client node 20 to transmit user credentials, via the web browser 80, to the server 30 for authentication. Transmitted user credentials are verified either by the server 30 or by another server in the farm. This allows a security domain to be projected onto the server 30. For example, if the server 30 runs the WINDOWS NT operating system, manufactured by Microsoft Corporation of Redmond, Wash., and the authenticating server runs the UNIX operating system, the UNIX security domain may be said to have been projected onto the server 30. User credentials may be transmitted “in the clear,” or they may be encrypted. For example, user credentials may be transmitted via a Secure Socket Layer (SSL) connection, which encrypts data using the RC3 algorithm, manufactured by RSA Data Security, Inc. of San Mateo, Calif.
The server 30 may verify the user credentials received from the client node 20. Alternatively, the server 30 may pass the user credentials to another server for authentication. In this embodiment, the authenticating server may be in a different domain from the server 30. Authenticated user credentials of the client node 20 may be stored at the client node 20 in a per-session cookie, in fields that are not displayed by the web browser 80, or in any other manner common in maintenance of web pages. In some embodiments, a server farm with which the server 30 is associated may allow guest users, i.e., users that do not have assigned user credentials, to access applications hosted by servers in the farm. In these embodiments, the authentication page may provide a mechanism for allowing a client node 20 to identify that it is a guest user, such as a button or menu selection. In other of these embodiments, the server 30 may omit the authentication page entirely.
Still referring to
In this embodiment, the Program Neighborhood application runs on the client node 10. The client node display has a Program Neighborhood window 58 in which appears a graphical icon 57 representing a second application program. A user of the client node 10 can launch the second application program by double-clicking the icon 57 with the mouse. The request passes to the master server node 30 via a connection 59. The master server node 30 indicates to the client node 10 via the connection 59 that the sought-after application is available on server 32. The client node 10 signals the server 32 to establish a second connection 70. The server 32 requests the user credentials from the client node 10 to authenticate access to the second application program. Upon a successful authentication, the client node 10 and server 32 establish the second connection 70 and exchange information regarding the execution of the second application program. Accordingly, the client node 10 and the server 32 communicate with each other over multiple connections.
In this embodiment, the Program Neighborhood application runs on the server 32. The server 32 includes software providing a server-based client engine 62, enabling the server 32 to operate in the capacity of the client node 20. The client node 20 display has a Program Neighborhood window 58 in which appears graphical icons 57, 57′ representing a second application program and a third application program, respectively. A user of the client node 20 can launch the second application program by double-clicking the icon 57. The request to launch the second application program passes to the server 32 via active connection 73, and the server 32 forwards the request to the master server node 30 (arrow 65).
The master server node 30 indicates (arrow 65) to the server 32 that the sought-after application is available on server 34. The server 32 contacts the server 34 to establish a connection 66. To authenticate access to the application, the server 34 obtains the user credentials of the client node 20 from the server 32. The server 32 and server 34 establish the connection (arrow 66) by which the server 32 requests execution of the second application and the server 34 returns the graphical user interface results to the server 32. The server 32 forwards the graphical user interface results to the client node 20, where the results are displayed. Accordingly, the information exchanged between the client node 20 and the server 34 “passes through” the server 32.
Similarly, the client node 20 can launch the third application program by double-clicking the icon 57′. The request to launch the third application program passes to the server 32. The server 32 forwards the request to the master server node 30, which considers load-balancing and application program availability to determine which server can handle the request. In this example, the master server node indicates that the server 36 can run the third application program.
The server 32 and the server 36 establish a connection (arrow 74) by which the server 32 requests execution of the third application program, and the server 36 returns the graphical user interface results to the server 32. To permit execution of the third application program, the server 36 can authenticate the user credentials of the client node 20, which are obtained from the server 32. The server 32 forwards the graphical user interface results to the client node 20 where the results are displayed. Accordingly, the results of executing the third application program pass between the client node 20 and the server 36 through the server 32.
From this illustration it should be understood that client node 20 can run multiple application programs through one connection with the server 32, while the server 32 maintains multiple connections (in this example, one connection with server 34 and a second connection with server 36). Also, the server 32 merges the information received from the server 34 with the information received from the server 36 into one data stream for transmission to the client node 20.
In this embodiment, the Program Neighborhood application runs on the server 32. The client node 20 display has a Program Neighborhood window 58 in which appears a graphical icon 57 representing a second application program. A user of the client node 20 can launch the second application program by double-clicking the icon 57. The request to launch the second application program passes to the server 32. The server 32 responds (i.e., “calls back”) to the client node 20 by returning application-related information such as the name of the application and capabilities needed by the client node 20 for the second application to run.
With the information provided by the server 32, the client node 20 then communicates with the master server node 30 via connection 77 to determine the server for executing the second application program. In this example, that server is server 34. The client node 20 then establishes a connection 78 to the server 34. Server 34 requests the user credentials from the client node 20 to authenticate the user of the client node 20. The second application program executes on the server 34, and the server 34 returns the graphical user interface to the client node 20 via the established connection 78. Accordingly, the client node 20 can have multiple active connections between the multiple servers.
In this embodiment, the template 90 is a standard SGML, HTML, or XML document containing Program Neighborhood-specific tags that are replaced with dynamic information. The tags indicate to the server 30 where in the output display to insert information corresponding to available applications, such as icon images. In one particular embodiment, the Program Neighborhood-specific tags are embedded within comments inside a file, allowing the file to remain compatible with standard interpreters. In another embodiment, the Program Neighborhood-specific tags are extensions of the markup language used as the base for the template.
Examples of HTML tags that may be used in a template in accordance with the present invention are set forth below in Table 1:
Other tags can be provided to set control fields and to provide conditional processing relating to the Program Neighborhood application.
In one embodiment, the template is constructed dynamically using, for example, COLD FUSION, manufactured by Allaire Corp. of Cambridge, Mass. or ACTIVE SERVER SERVER PAGES manufactured by Microsoft Corporation of Redmond, Wash. Alternatively, the template may be static. The Program neighborhood application parses the template, replacing Program Neighborhood-specific tags as noted above. Tags that are not Program Neighborhood-specific are left in the file to be parsed by the browser program 80 executing on the client 20.
In one embodiment, a template parser object is provided that accepts an HTML template as input, interprets Program Neighborhood-specific tags present in the template, and outputs the original template with all Program Neighborhood tags replaced with appropriate text. The template parser object can be passed a cookie, a URL query string, or a control field from a web server interface to provide the information with which Program Neighborhood-specific tags should be replaced.
In another embodiment, the Program Neighborhood application allows scripts to access to information via an application programming interface. Scripts may be written in, for example, VBScript or Jscript. In this embodiment, the scripting language is used to dynamically generate an output display using information returned by the application in response to queries posed by the script. Once the output display is generated, it is transmitted to client node 20 for display by the browser program 80.
A user of the client node 20 can launch an application by double-clicking with a mouse an icon 57, 57′ displayed in the Program Neighborhood web page. In some embodiments, each icon 57, 57′ is an encoded URL that specifies: the location of the application (i.e., on which servers it is hosted or, alternatively, the address of a master server); a launch command associated with the application; and a template identifying how the output of the application should be displayed (i.e., in a window “embedded” in the browser or in a separate window). In some embodiments, the URL includes a file, or a reference to a file, that contains the information necessary for the client to create a connection to the server hosting the application. This file may be created by the Program Neighborhood application dynamically. The client node 20 establishes a connection (arrow 94) with the server identified as hosting the requested application (in this example, server 32) and exchanges information regarding execution of the desired application. In some embodiments, the connection 94 is made using the Independent Computing Architecture (ICA) protocol, manufactured by Citrix Systems, Inc. of Fort Lauderdale, Fla. Thus, the client node 20 may display application output in a window separate from the web browser 80, or it may “embed” application output within the web browser.
The application server 30, for example, includes the service component (PNSVC) 44 and the application database 48. The client node 10, which is a representative example of a client node that can support a client-based implementation of the Program Neighborhood application, includes the application program interface PNAPI 52, the user interface user interface component 56, and the local cache 60 components. The PNAPI 52 communicates with the user interface component 56 and the local cache 60. The PNSVC 44 communicates with the application database 48 and with the PNAPI 52 on the client node 10 via communications link 62.
The communications link 62 can be established by, for example, using the ICA protocol. ICA is a general-purpose presentation services protocol designed to run over industry standard network protocols, such as TCP/IP, IPX/SPX, NetBEUI, using industry-standard transport protocols, such as ISDN, frame relay, and asynchronous transfer mode (ATM). The ICA protocol provides for virtual channels, which are session-oriented transmission connections that can be used by application-layer code to issue commands for exchanging data. The virtual channel commands are designed to be closely integrated with the functions of client nodes. One type of virtual channel connection supported by the ICA protocol is a Program Neighborhood virtual channel. The Program Neighborhood virtual channel protocol can include four groups of commands:
Application Database
The application database 48 is a cache of the authorized user and group information for all the public (i.e., published) applications in a server farm or in a group of trusted domains. Each server in a server farm can maintain its own application-related information in persistent storage and build up the database 48 in volatile storage. In another embodiment, all collected application-related information in the database 48 can be stored in persistent storage and made accessible to each other server in the server farm. The database 48 can be implemented in a proprietary format (e.g., as a linked list in 15 memory) or using Novell's Directory Services (NDS) or any directory service adhering to the X.500 standard defined by the International Telecommunication Union (ITU) for distributed electronic directories.
The application database 48 includes a list of application servers. Each server in the list has an associated set of applications. Associated with each application is 20 application-related information that can include the application name, a list of servers, and client users that are authorized to use that application. An overly-simplified example of the application-related information maintained in the database is illustrated by the following Table 2. Users A and B are users of the client nodes 10, 20, “n/a” indicates that the application is hosted, but is not available to client node users, and “-” indicates that the application is not hosted.
Table 2 shows a list of servers 30, 32, 34, the applications hosted by the servers, (Spreadsheet, Customer Database, Word Processor, and Calculator), and those users who are authorized to use the applications. For example, the server 30 hosts the Spreadsheet program, the Customer Database and the Word Processor. User A is authorized to use the Spreadsheet, User B is authorized to use the Customer Database, and no users are authorized to use the Word Processor. It is to be understood that other techniques can be used to indicate who is authorized to use a particular application. For example, the user information stored in the database can be used to indicate those users who are unauthorized to use a particular application rather than those who are authorized.
To obtain the information that is stored in the database 48, the server 30 obtains the application-related information from each other server in the server farm regarding the applications on those servers, including control information that indicates which client users and servers are permitted to access each particular application. The application-related information maintained in the database may or may not persist across re-boots of the server 30.
The application database 48 can be a central database that is stored at the application servers 30, 32, and 34 and are accessible to all of the servers in the server farm. Accordingly, the application-related information can be available for use by other servers such as those servers that perform published application authentication during session log-on and application launching. In another embodiment, the application database 48 can be maintained at each of the application servers 30, 32, and 34 based upon the information that each server obtains from communications with each other server in the server farm.
Program Neighborhood Service Program (PNSVC)
Each server 30, 32, 34 and 36 having the Program Neighborhood application installed thereon executes the PNSVC software 44. The PNSVC software 44, operating on each server 30, 32, 34 and 36 establishes a communication link (e.g., a named pipe) with each other server. The servers 30, 32, 34 and 36 exchange the application-related information on the named pipes. In another embodiment, the PNSVC software 44 collects the application-related information from the other servers in the server farm through remote registry calls (e.g., the service component 44 transmits a datagram to other servers in the plurality requesting the application-related information corresponding to the application programs hosted by those servers). The PNSVC 44 software also maintains the relationships of groups and users to published applications in the application database 48 and accesses the information when authenticating a client user. An administrator of the server 30 can use a user interface to configure the PNSVC 44.
Other functions of the PNSVC software 44 include implementing the services and functions requested by the PNAPI 52 and communicating with the PNAPI 52 on the client node 10 using a Program Neighborhood virtual device driver (VDPN). The VDPN operates according to the Program Neighborhood virtual channel protocol described above for establishing and maintaining an ICA connection.
Program Neighborhood Application Program Interface (PNAPI)
The PNAPI 52 is a set of software functions or services that are used by the Program Neighborhood application to perform various operations (e.g., open windows on a display screen, open files, and display message boxes). The PNAPI 52 provides a generic mechanism for launching application objects (e.g., icons) produced by running the Program Neighborhood application and application objects in a legacy (i.e., predecessor or existing for some time) client user interface. When the client node 10 launches an available application, the launch mechanism can launch the application on the server 30, if necessary (e.g., when the client node 10 does not have the resources to locally execute the application).
The PNAPI 52 provides all published application information to the user interface component 56 for display on the screen 12 (
The PNAPI 52 provides automatic and manual management for Program Neighborhood application objects stored in the local cache 60. The local cache 60 can either be refreshed manually by the user of the client node 10, or at a user-definable refresh rate, or by the server at any time during a connection. In a WINDOWS implementation, the PNAPI 52 can build remote application file associations and manage the “Start” menu and desktop icons for application object shortcuts.
Program Neighborhood User Interface
The user interface module 56 interfaces the PNAPI 52 and can be a functional superset of an existing client-user interface (e.g., Remote Application Manager). The user interface module 56 accesses the information stored in the local cache 60 through the PNAPI 52 and visually presents that information to the user on the display screen 12 (
In a windows-based embodiment, the user interface module 56 can present a variety of graphical components, such as windows and pull-down menus, to be displayed on the display screen 12 (
At a top level, the Program Neighborhood window includes a folder for each server farm. Clicking on one of the folders with the mouse 18 (
A feature of a client-based implementation is that the user can browse the objects displayed in the Program Neighborhood window although the client node is offline, that is, the ICA connection 62 is inactive. Also, a user of the client node 10 can drag application objects and folders out of the Program Neighborhood window and into other graphical components (e.g., other windows, folders, etc.) of the desktop.
Similar to that described in
To run the Program Neighborhood application in a server-based implementation, the user of the client node 20 connects to an initial desktop (at the server 30′) and launches the Program Neighborhood application from within that desktop environment. The connection to the initial desktop can occur automatically, e.g., via a logon script of the client node 20, via an entry in the StartUp group in WINDOWS 95, or by another centrally managed server specific mechanism. All remote application management and launching is accomplished through this initial desktop.
Similar to that described in
The user of the client node 20 can select and launch one of the application programs displayed in the Program Neighborhood window. When launching an application, the Program Neighborhood application can execute the application on the same server 30′, where applicable, taking into account load balancing requirements among servers and the availability of the application on that server 30′. The PNAPI 52′ can include a launch mechanism for launching a remote application locally on the server 30′ when the server 30′ is nominated to launch the application. When a different server is needed to run the application, the Program Neighborhood application can launch the application via the server 30′ (i.e., server-based client) using the windows to present the application on the desktop of the client node 20 as described above in
In one embodiment, the web-based Program Neighborhood application includes a group of objects that manage various aspects of the application. In one embodiment, the application includes three primary object classes that “plug in” to a web server: a gateway object class; a credentials object class; and an applications object class. In some specific embodiments, the object classes are provided as JAVA BEANS. The three primary object classes facilitate: validation of user credentials into a server farm; generation of lists of published applications that a specified user may access; provision of detailed information about a specific published application; and conversion of published application information into an ICA-compatible format.
When provided as JAVA BEANS, the objects can be accessed in a number of different ways. For example, they may be compiled as COM objects and made available to the web server as ACTIVEX components. In another embodiment, the JAVA BEANS can be used in their native form, such as when the server uses JAVA Server Pages technology. In yet another embodiment, the JAVA BEANS can be instantiated and used directly in a JAVA servlet. In still another embodiment, the server 30 can instantiate the JAVA BEANS as COM objects directly.
A credentials object class manages information necessary to authenticate a user into a target server farm. A credentials object passes stored user credentials to other Program Neighborhood objects. In some embodiments, the credentials object is an abstract class that cannot be instantiated and represents a user's credentials. Various class extensions may be provided to allow different authentication mechanisms to be used, including biometrics, smart cards, token-based authentication mechanisms such as challenge-response and time-based password generation, or others. For example, a “clear text credentials” extension may be provided that stores a user's name, domain, and password in plain text.
A gateway object class handles communications with a target server farm. In one embodiment, the gateway object class is provided as an abstract JAVA class that cannot be instantiated. A particular gateway object may retrieve application information by communicating with a server farm using a particular protocol, reading cached application information, a combination of these two methods, or other various methods.
As noted above, the gateway object class caches information to minimize communication with a target server farm. Extensions to the gateway object may be provided to communicate with the server farm over specific protocols, such as HTTP. In one embodiment, an extension class is provided that allows the gateway object to communicate with the server farm via WINDOWS NT named pipes. The gateway object may provide an application programming interface hook that allows other Program Neighborhood objects to query the object for application information.
An applications object class contains information about published applications and returns information about applications hosted by the server farm in order to create the Program Neighborhood web page. The applications object class creates objects representing applications by retrieving information relating to the applications, either from an object created by the gateway object or directly from the servers in the server farm. An applications object acts as a container for certain properties of the application, some settable and some not settable, such as: the name of the application (not settable); the percentage of the client's desktop that the client window should occupy (settable); the width of the client window, in pixels, for this application (settable); the height off the client window, in pixels, for this application (settable); the number of colors to use when connecting to the application (settable); the severity of audio bandwidth restriction (settable); the level of encryption to use when connecting to the application (settable); the level of video to use when connecting to this application (settable); whether the application should be placed on a client's start menu (settable); whether the application should be placed on the client's desktop (settable); the identity of the Program Neighborhood folder to which the application belongs (settable); the description of the application (settable); the source of the graphics icon file for the application (settable); the type of window that should be used when connecting to the application (not settable); and whether to override default parameters for the object.
Each application program represented by one of the icons 128 is unavailable to the user of the client node 10, 20 (
In step 86, the application server 32 establishes a connection with each other servers 30, 34 and 36 to exchange application-related information, as described above, corresponding to application programs hosted on those servers (step 88). In step 90, the application server 32 develops and maintains a database of the collected application-related information. Each other server 30, 34, 36 in the server farm can develop a database equivalent to the database of the server 32 and in similar manner as the server 32. In another embodiment, the database of the server 32 can be a centralized database that is accessible to each other application server 30, 34, 36 in the server farm. The collecting of application-related information can occur independently or be triggered by the request of the client node 10, 20 to log-on to the server farm 38.
In step 92, the client node 10, 20 can request execution of an application program from the desktop display. The master server node can process the request and, using a load-balancing evaluation and application availability as described above, determine the application server to provide the service to the client node 10, 20 (step 94). For example, the application server 32 can be selected to service the request with the client node 10, 20. In step 96, the client node 10, 20 establishes a communications link with the server 32. The server 32 and the client node 10, 20 can communicate according to the ICA protocol appropriate for that client node as described above.
Also in response to this request to run the application program, the master server node 30 or the server 32 can run the Program Neighborhood application (step 93) and push the results to the client node 10, 20, although the client node 10, 20 may not have requested the PN application program. When executing the PN application program, the master server node 30 or server 32 filters the application-related information in the database using the user credentials (step 100). The result of filtering the database determines those application programs that are authorized for use by the user of the client node 10, 20. The authorized application programs are in the program neighborhood of the client node 10, 20. This program neighborhood of available application information is pushed to the client node 10, 20 (step 102) and displayed on the client screen 12, 22 in a Program Neighborhood graphical window (step 104).
In other embodiments, the Program Neighborhood window may include applications that are in the server farm but unavailable for use to the client node 10, 20. In a Windows-based implementation, the available (and unavailable) application programs can be represented by icons. The user of the client node 10, 20 can select and launch one of the application programs displayed in the Program Neighborhood window.
The present invention may be provided as one or more computer-readable programs embodied on or in one or more articles of manufacture. The article of manufacture may be a floppy disk, a hard disk, a CD ROM, a flash memory card, a PROM, a RAM, a ROM, or a magnetic tape. In general, the computer-readable programs may be implemented in any programming language. Some examples of languages that can be used include C, C++, or JAVA. The software programs may be stored on or in one or more articles of manufacture as object code.
While the invention has been shown and described with reference to specific preferred embodiments, it should be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention as defined by the following claims.
This application is a continuation of U.S. application Ser. No. 09/390,928 filed on Sep. 7, 1999, which is a Continuation-in-part of application Ser. No. 09/252,391 filed on Feb. 18, 1999, now U.S. Pat. No. 6,643,690, which is a non-provisional of U.S. Provisional Patent Application No. 60/114,099 filed on Dec. 29, 1998.
| Number | Name | Date | Kind |
|---|---|---|---|
| 4387425 | El-Gohary | Jun 1983 | A |
| 4499499 | Brickman et al. | Feb 1985 | A |
| RE32632 | Atkinson | Mar 1988 | E |
| 4779189 | Legvold et al. | Oct 1988 | A |
| 4860247 | Uchida et al. | Aug 1989 | A |
| 4887204 | Johnson et al. | Dec 1989 | A |
| 4903218 | Longo et al. | Feb 1990 | A |
| 4937036 | Beard et al. | Jun 1990 | A |
| 4937784 | Masai et al. | Jun 1990 | A |
| 4949248 | Caro | Aug 1990 | A |
| 4949281 | Hillenbrand et al. | Aug 1990 | A |
| 4958303 | Assarpour et al. | Sep 1990 | A |
| 4974173 | Stefik et al. | Nov 1990 | A |
| 5014221 | Mogul | May 1991 | A |
| 5031089 | Liu et al. | Jul 1991 | A |
| 5062060 | Kolnick et al. | Oct 1991 | A |
| 5072412 | Henderson, Jr. et al. | Dec 1991 | A |
| 5103303 | Shoji et al. | Apr 1992 | A |
| 5119319 | Tanenbaum | Jun 1992 | A |
| 5155847 | Kirouac et al. | Oct 1992 | A |
| 5175852 | Johnson et al. | Dec 1992 | A |
| 5187790 | East et al. | Feb 1993 | A |
| 5202971 | Henson et al. | Apr 1993 | A |
| 5204897 | Wyman | Apr 1993 | A |
| 5204947 | Bernstein et al. | Apr 1993 | A |
| 5231697 | Yamada et al. | Jul 1993 | A |
| 5233701 | Nakata et al. | Aug 1993 | A |
| 5241625 | Epard et al. | Aug 1993 | A |
| 5247683 | Holmes et al. | Sep 1993 | A |
| 5249290 | Heizer | Sep 1993 | A |
| 5255361 | Callaway et al. | Oct 1993 | A |
| 5301270 | Steinberg et al. | Apr 1994 | A |
| 5303198 | Adachi et al. | Apr 1994 | A |
| 5305440 | Morgan et al. | Apr 1994 | A |
| 5309555 | Akins et al. | May 1994 | A |
| 5315711 | Barone et al. | May 1994 | A |
| 5325527 | Cwikowski et al. | Jun 1994 | A |
| 5329619 | Page et al. | Jul 1994 | A |
| 5341477 | Pitkin et al. | Aug 1994 | A |
| 5341478 | Travis, Jr. et al. | Aug 1994 | A |
| 5351129 | Lai | Sep 1994 | A |
| 5367688 | Croll | Nov 1994 | A |
| 5414457 | Kadowaki et al. | May 1995 | A |
| 5440719 | Hanes et al. | Aug 1995 | A |
| 5442791 | Wrabetz et al. | Aug 1995 | A |
| 5457797 | Butterworth et al. | Oct 1995 | A |
| 5459837 | Caccavale | Oct 1995 | A |
| 5461608 | Yoshiyama et al. | Oct 1995 | A |
| 5469540 | Powers, III et al. | Nov 1995 | A |
| 5473599 | Li et al. | Dec 1995 | A |
| 5483466 | Kawahara et al. | Jan 1996 | A |
| 5485460 | Schrier et al. | Jan 1996 | A |
| 5499343 | Pettus | Mar 1996 | A |
| 5515508 | Pettus et al. | May 1996 | A |
| 5517617 | Sathaye et al. | May 1996 | A |
| 5526492 | Ishida et al. | Jun 1996 | A |
| 5530852 | Meske, Jr. et al. | Jun 1996 | A |
| 5537546 | Sauter et al. | Jul 1996 | A |
| 5537548 | Fin et al. | Jul 1996 | A |
| 5541927 | Kristol et al. | Jul 1996 | A |
| 5548726 | Pettus | Aug 1996 | A |
| 5551030 | Linden et al. | Aug 1996 | A |
| 5553242 | Russell et al. | Sep 1996 | A |
| 5557732 | Thompson | Sep 1996 | A |
| 5557748 | Norris | Sep 1996 | A |
| 5559958 | Farrand et al. | Sep 1996 | A |
| 5561769 | Kumar et al. | Oct 1996 | A |
| 5566302 | Khalidi et al. | Oct 1996 | A |
| 5572643 | Judson | Nov 1996 | A |
| 5572674 | Ernst | Nov 1996 | A |
| 5574934 | Mirashrafi et al. | Nov 1996 | A |
| 5579469 | Pike | Nov 1996 | A |
| 5583563 | Wanderscheid et al. | Dec 1996 | A |
| 5583992 | Kudo et al. | Dec 1996 | A |
| 5586312 | Johnson et al. | Dec 1996 | A |
| 5592626 | Papadimitriou et al. | Jan 1997 | A |
| 5594490 | Dawson et al. | Jan 1997 | A |
| 5596745 | Lai et al. | Jan 1997 | A |
| 5606493 | Duscher et al. | Feb 1997 | A |
| 5619716 | Nonaka et al. | Apr 1997 | A |
| 5623656 | Lyons | Apr 1997 | A |
| 5625683 | Nazanin et al. | Apr 1997 | A |
| 5638513 | Ananda | Jun 1997 | A |
| 5644720 | Boll et al. | Jul 1997 | A |
| 5655081 | Bonnell et al. | Aug 1997 | A |
| 5655218 | Smolinske | Aug 1997 | A |
| 5657390 | Elgamal et al. | Aug 1997 | A |
| 5666501 | Jones et al. | Sep 1997 | A |
| 5671354 | Ito et al. | Sep 1997 | A |
| 5671379 | Kuse et al. | Sep 1997 | A |
| 5680549 | Raynak et al. | Oct 1997 | A |
| 5684861 | Lewis et al. | Nov 1997 | A |
| 5689708 | Regnier et al. | Nov 1997 | A |
| 5692183 | Hapner et al. | Nov 1997 | A |
| 5701451 | Rogers et al. | Dec 1997 | A |
| 5701484 | Artsy | Dec 1997 | A |
| 5706437 | Kirchner et al. | Jan 1998 | A |
| 5708786 | Teruuchi et al. | Jan 1998 | A |
| 5710918 | Lagarde et al. | Jan 1998 | A |
| 5721876 | Yu et al. | Feb 1998 | A |
| 5729734 | Parker et al. | Mar 1998 | A |
| 5734865 | Yu | Mar 1998 | A |
| 5737592 | Nguyen et al. | Apr 1998 | A |
| 5742778 | Hao et al. | Apr 1998 | A |
| 5748892 | Richardson | May 1998 | A |
| 5748896 | Daly et al. | May 1998 | A |
| 5754830 | Butts et al. | May 1998 | A |
| 5757925 | Faybishenko | May 1998 | A |
| 5758085 | Kouoheris et al. | May 1998 | A |
| 5761507 | Govett | Jun 1998 | A |
| 5761662 | Dasan | Jun 1998 | A |
| 5764908 | Shoji et al. | Jun 1998 | A |
| 5764915 | Heimsoth et al. | Jun 1998 | A |
| 5767849 | Borgendale et al. | Jun 1998 | A |
| 5768614 | Takagi et al. | Jun 1998 | A |
| 5774668 | Choquier et al. | Jun 1998 | A |
| 5790977 | Ezekiel | Aug 1998 | A |
| 5794207 | Walker et al. | Aug 1998 | A |
| 5802258 | Chen | Sep 1998 | A |
| 5802306 | Hunt | Sep 1998 | A |
| 5805166 | Hall et al. | Sep 1998 | A |
| 5812784 | Watson et al. | Sep 1998 | A |
| 5819093 | Davidson et al. | Oct 1998 | A |
| 5826027 | Pedersen et al. | Oct 1998 | A |
| 5828840 | Cowan et al. | Oct 1998 | A |
| 5838906 | Doyle et al. | Nov 1998 | A |
| 5838910 | Domenikos et al. | Nov 1998 | A |
| 5838916 | Domenikos et al. | Nov 1998 | A |
| 5842195 | Peters et al. | Nov 1998 | A |
| 5842206 | Sotomayor | Nov 1998 | A |
| 5844553 | Hao et al. | Dec 1998 | A |
| 5848242 | Behaghel et al. | Dec 1998 | A |
| 5848410 | Walls et al. | Dec 1998 | A |
| 5860068 | Cook | Jan 1999 | A |
| 5862348 | Pedersen | Jan 1999 | A |
| 5864678 | Riddle | Jan 1999 | A |
| 5870545 | Davis et al. | Feb 1999 | A |
| 5870552 | Dozier et al. | Feb 1999 | A |
| 5874960 | Mairs et al. | Feb 1999 | A |
| 5877757 | Baldwin et al. | Mar 1999 | A |
| 5881241 | Corbin | Mar 1999 | A |
| 5884046 | Antonov | Mar 1999 | A |
| 5889942 | Orenshteyn | Mar 1999 | A |
| 5898835 | Truong | Apr 1999 | A |
| 5905866 | Nakabayashi et al. | May 1999 | A |
| 5913060 | Discavage | Jun 1999 | A |
| 5913920 | Adams et al. | Jun 1999 | A |
| 5923842 | Pedersen et al. | Jul 1999 | A |
| 5928324 | Sloan et al. | Jul 1999 | A |
| 5930473 | Teng et al. | Jul 1999 | A |
| 5930804 | Yu et al. | Jul 1999 | A |
| 5938733 | Heimsoth et al. | Aug 1999 | A |
| 5940075 | Mutschler, III et al. | Aug 1999 | A |
| 5941949 | Pedersen | Aug 1999 | A |
| 5941988 | Bhagwat et al. | Aug 1999 | A |
| 5944791 | Scherpbier | Aug 1999 | A |
| 5949975 | Batty et al. | Sep 1999 | A |
| 5951694 | Choquier et al. | Sep 1999 | A |
| 5960409 | Wexler | Sep 1999 | A |
| 5961586 | Pedersen | Oct 1999 | A |
| 5961588 | Cooper et al. | Oct 1999 | A |
| 5968132 | Tokunaga et al. | Oct 1999 | A |
| 5973696 | Agranat et al. | Oct 1999 | A |
| 5978847 | Kisor et al. | Nov 1999 | A |
| 5978848 | Maddalozzo, Jr. et al. | Nov 1999 | A |
| 5983190 | Trower, II et al. | Nov 1999 | A |
| 5987499 | Morris et al. | Nov 1999 | A |
| 5999179 | Kekic et al. | Dec 1999 | A |
| 5999950 | Krueger et al. | Dec 1999 | A |
| 6009410 | LeMole et al. | Dec 1999 | A |
| 6014133 | Yamakado et al. | Jan 2000 | A |
| 6023507 | Wookey | Feb 2000 | A |
| 6023572 | Lautzenheiser et al. | Feb 2000 | A |
| 6023721 | Cummings | Feb 2000 | A |
| 6031533 | Peddada et al. | Feb 2000 | A |
| 6034689 | White et al. | Mar 2000 | A |
| 6035337 | Redpath et al. | Mar 2000 | A |
| 6038596 | Baldwin et al. | Mar 2000 | A |
| 6038599 | Black et al. | Mar 2000 | A |
| 6061695 | Slivka et al. | May 2000 | A |
| 6065059 | Shieh et al. | May 2000 | A |
| 6067568 | Li et al. | May 2000 | A |
| 6067580 | Aman et al. | May 2000 | A |
| 6078956 | Bryant et al. | Jun 2000 | A |
| 6088515 | Muir et al. | Jul 2000 | A |
| 6101528 | Butt | Aug 2000 | A |
| 6101531 | Eggleston et al. | Aug 2000 | A |
| 6104392 | Shaw et al. | Aug 2000 | A |
| 6108712 | Hayes, Jr. | Aug 2000 | A |
| 6115744 | Robins et al. | Sep 2000 | A |
| 6125387 | Simonoff et al. | Sep 2000 | A |
| 6131116 | Riggins et al. | Oct 2000 | A |
| 6141759 | Braddy | Oct 2000 | A |
| 6154749 | Aravamudan et al. | Nov 2000 | A |
| 6157705 | Perrone | Dec 2000 | A |
| 6157944 | Pedersen | Dec 2000 | A |
| 6157953 | Chang et al. | Dec 2000 | A |
| 6161126 | Wies et al. | Dec 2000 | A |
| 6161145 | Bainbridge et al. | Dec 2000 | A |
| 6167432 | Jiang | Dec 2000 | A |
| 6175854 | Bretscher | Jan 2001 | B1 |
| 6185609 | Rangarajan et al. | Feb 2001 | B1 |
| 6195678 | Komuro et al. | Feb 2001 | B1 |
| 6199753 | Tracy et al. | Mar 2001 | B1 |
| 6256666 | Singhal | Jul 2001 | B1 |
| 6263363 | Rosenblatt et al. | Jul 2001 | B1 |
| 6263377 | Monday et al. | Jul 2001 | B1 |
| 6266781 | Chung et al. | Jul 2001 | B1 |
| 6272493 | Pasquali | Aug 2001 | B1 |
| 6272556 | Gish | Aug 2001 | B1 |
| 6289461 | Dixon | Sep 2001 | B1 |
| 6292827 | Raz | Sep 2001 | B1 |
| 6311205 | Dutcher et al. | Oct 2001 | B1 |
| 6332157 | Mighdoll et al. | Dec 2001 | B1 |
| 6336138 | Caswell et al. | Jan 2002 | B1 |
| 6338086 | Curtis et al. | Jan 2002 | B1 |
| 6339826 | Hayes, Jr. et al. | Jan 2002 | B2 |
| 6374237 | Reese | Apr 2002 | B1 |
| 6393015 | Shtivelman | May 2002 | B1 |
| 6393469 | Dozier et al. | May 2002 | B1 |
| 6409602 | Wiltshire et al. | Jun 2002 | B1 |
| 6446109 | Gupta | Sep 2002 | B2 |
| 6473781 | Skagerwall et al. | Oct 2002 | B1 |
| 6510466 | Cox et al. | Jan 2003 | B1 |
| 6567852 | Besaw et al. | May 2003 | B2 |
| 6654784 | Wei | Nov 2003 | B1 |
| 6738809 | Brisebois et al. | May 2004 | B1 |
| 6792605 | Roberts et al. | Sep 2004 | B1 |
| 6912582 | Guo et al. | Jun 2005 | B2 |
| 6950991 | Bloomfield et al. | Sep 2005 | B2 |
| 6986040 | Kramer et al. | Jan 2006 | B1 |
| 7000019 | Low et al. | Feb 2006 | B2 |
| 7028025 | Collins et al. | Apr 2006 | B2 |
| 7237114 | Rosenberg | Jun 2007 | B1 |
| 7266582 | Stelting | Sep 2007 | B2 |
| 7296022 | Harjanto | Nov 2007 | B2 |
| 7340772 | Panasyuk et al. | Mar 2008 | B2 |
| 20010007995 | Makino | Jul 2001 | A1 |
| 20010052932 | Young et al. | Dec 2001 | A1 |
| 20010056547 | Dixon | Dec 2001 | A1 |
| 20020035451 | Rothermel | Mar 2002 | A1 |
| 20030014326 | Ben-Meir et al. | Jan 2003 | A1 |
| 20030063119 | Bloomfield et al. | Apr 2003 | A1 |
| 20040139117 | Muir et al. | Jul 2004 | A1 |
| 20050198380 | Panasyuk et al. | Sep 2005 | A1 |
| Number | Date | Country |
|---|---|---|
| 5303198 | Aug 1998 | AU |
| 19602718 | Jul 1997 | DE |
| 0381645 | Aug 1990 | EP |
| 0384339 | Aug 1990 | EP |
| 0414624 | Feb 1991 | EP |
| 0475581 | Mar 1992 | EP |
| 0483576 | May 1992 | EP |
| 0540151 | May 1993 | EP |
| 0643514 | Mar 1995 | EP |
| 0648038 | Apr 1995 | EP |
| 0732834 | Sep 1996 | EP |
| 0767563 | Apr 1997 | EP |
| 0818753 | Jan 1998 | EP |
| 0841615 | May 1998 | EP |
| 0878759 | Nov 1998 | EP |
| 1321853 | Jun 2003 | EP |
| 2323946 | Oct 1998 | GB |
| 06125363 | May 1994 | JP |
| 06332782 | Dec 1994 | JP |
| WO-9315457 | Aug 1993 | WO |
| WO-9414114 | Jun 1994 | WO |
| WO-9718635 | May 1997 | WO |
| WO-9728623 | Aug 1997 | WO |
| WO-9852320 | Nov 1998 | WO |
| WO-9852344 | Nov 1998 | WO |
| WO-9922332 | May 1999 | WO |
| WO-0155813 | Aug 2001 | WO |
| WO-02093289 | Nov 2002 | WO |
| Entry |
|---|
| Novell AppNote—“Accessing Network Resources with the GUI Login Utility and the NetWare Provider,” Nov. 1996. |
| Novell AppNote—“Using the Novell Application launcher (NAL) Utility with Client 32 for Windows 95,” Nov. 1996. |
| Network Neighborhood—Webopedia Definition and Links http://webopedia.internet.com/TERM/N/Network—Neighborhood.html, printed Dec. 27, 1999 (2 pages). |
| Win95 Tutorial: index of topics, http://orion.valencia.cc.fl.us/tutorials/Win95demo/net.html, printed Dec. 27, 1999 (2 pages). |
| Allison, Bridget et al., File System Security: Secure Network Data Sharing for NT and UNIX, http://www.netapp.com/tech—library/1003.html, printed May 22, 2000, published 1998, 16 pages. |
| Yager; Tom, “OS Paradise”, BYTE, Nov. 1995, pp. 81-98. |
| Neuman, B. Clifford et al., “Proxy-Based Authorization and Accounting for Distributed Systems”, Proceedings of the International Conference on Distributed Computing Systems, Los Alamitos, IEEE Comp. Soc. Press, May 25, 1993, pp. 283-291. |
| Non Final Office Action, U.S. Appl. No. 09/390,928 USPTO, dated May 1, 2002. |
| Final Office Action, U.S. Appl. No. 09/390,928 USPTO, dated Nov. 15, 2002. |
| Non Final Office Action, U.S. Appl. No. 09/390,928 USPTO, dated Jun. 25, 2003. |
| Final Office Action, U.S. Appl. No. 09/390,928 USPTO, dated Mar. 19, 2004. |
| International Search Report, PCT/US99/30827, 1999. |
| About Windows NT Networking, Chapter 5, Part 1, “Windows NT Browser,” pp. 79-87 (1995). |
| P. Liu, Y. Kiyoki and T. Masuda, “Efficient Algorithms for Resource allocation in distributed and parallel query processing environments,” pp. 1-5 (1989). |
| A.S. Tanenbaum, Computer Networks, 2nd Ed. Prentice Hall, Englewood Cliffs, NJ, (1989). |
| D. Oliver, Netscape 2 Unleashed, Sams.net Publishing, pp. 261-263 (1996). |
| Allocation of Equivalent Communication Buffer Sizes in SQLJRA Remote Protocol, IBM technical Disclosure Bulletin, vol. 36, No. 1, pp. 29-31 (Jan. 1993). |
| Abe et al.; Distributed Cooperative Control for Sharing Applications Based on the MERMAID Multiparty and Multimedia Desktop Conferencing System; NEC Research and Development; Jan. 1993; pp. 121-131. |
| Adler, “Distributed Coordination Models for Client/Server Computing,” Computer Magazine, pp. 14-22, (Apr. 1995). |
| Allocation of Equivalent Communication Buffer Sizes in SQLJRA Remote Protocol; IBM Technical Disclosure Bulletin, vol. 36, No. 1, Jan. 1993; pp. 29-31. |
| Campbell et al., “Meeting End-to-End QoS Cahllenges for Scalable Flows in Heterogeneous Multimedia Environments,” Nov. 9, 1995; pp. 101-115. |
| Chu et al., Behavior Research Methods, Instruments and Computers; “Creating a Hypertext Markup language Documents for an Information Server,” vol. 27, No. 2, pp. 200-205, Jan. 1, 1995. |
| Davis; Database; “An Interactive Hypermedia Map Viewer,” vol. 18, No. 2, pp. 65-67 (Apr./May 1995). |
| Coulouris et al. “Distributed Systems Concepts and Design,” Second Edition, University of London, Addison-Wesley, 1994. |
| Droms, Dynamic Host Confifuration Protocol, Network Working Group Request for Comments: 1541, pp. 1-39 (Oct. 1993). |
| Hoff Van, “Java and Internet Programming,” Dr. Dobb's Journal, pp. 56, 58, 60-61, 101-102, (Aug. 1995). |
| Holtzman, “Merge 386: Run Unix and DOS together on an 80386,” Byte, pp. cover, 207-208, 211-212 (Dec. 1988). |
| IP Multicast Streamlines Delivery of Multicast Applications; Copyright 1995, Cisco Systems Inc. pp. 1-5. |
| Herb, “The Animator Applet (1.0.2)—example 1,” http://199.185.96.71/java/Animator/example1.html, Printed Jun. 1, 1999. |
| Mann et al. “Terminal Servers on Ethernet Local Area Networks,” Digital Technical Journal, No. 3, pp. 73-87, (Sep. 1986). |
| Multicast Routing; Copyright 1996, Cisco Systems Inc. pp. 1-4. |
| OS/2 EE Database Manager SQLJRA Remote Protocol, IBM Technical Disclosure Bulletin, vol. 36, No. 1, pp. 33-36, (Jan. 1993). |
| Putz, “Interactive Information Services using World-Wide Web Hypertext,” Comuter Networks and ISDN Systems, Elsevier Science B.V., vol. 27, pp. 273-280, 1994. |
| Schemers, “Ibnamed: A Load Balancing Name Server Written in Perl—Update,” http://www.leland.stanford.edu/˜docs/ibnamed/ibnamed.html, pp. 1-5, (Sep. 17, 1995). |
| Shashi Prasad; “Weaving a Thread,” Byte, Oct. 1995; pp. 173-174. |
| Singleton, A.; Byte; “Wired on the Web,” pp. 77-78, 80 (Jan. 1, 1996). |
| Tessier, Dr. Dobb's Journal; using Javascript to Create Interactive Web pages a Cross-Platform Object Scripting Language, 21, No. 3: 84-97 (Mar. 1, 1996). |
| “Remote Desktop Environments Reflected in Local Desktop Windows,” IBM Technical Disclosure Bulletin, 36(3): 421-426 (Mar. 1993). |
| Non Final office Action, USPTO U.S. Appl. No. 10/068,461, dated Oct. 21, 2004. |
| Venu Vasudevan, “A Web Services Primer,” retrieved from the internet : http://www.xml.com/lpt/a/ws/2001/04/04/webservices/index.html, (Jan. 21, 2005), 10 pages, O'Reilly Media Inc. |
| Satya Komatineni, “Understanding UDDI and JAXR,” retrieved from the internet: http://www.onjava.com/lpt/a/1570, (Jan. 19, 2005), 11 pages, O'Reilly Media, Inc. |
| Patents Act 1977 Examination Report under Section 18(3) Re: Application No. GB0422889.6 (Jan. 31, 2005), 3 pages, Issued by United kingdom, The Patent Office. |
| International Search Report, PCT/US03/08434, dated Aug. 14, 2003. |
| Windows NT Networking Guide: Microsoft Windows NT Resource Kit, pp. 79-87, Microsoft Press 1995. |
| Eckhart Koppen et al., “A Practical Approach Towards Active Hyperlinked Documents,” Computer Networks and ISDN Systems 30 (1998) pp. 251-258. |
| Michael Jem, “‘Thin’ vs. ‘Fat’ Visialization Client,” 1998 IIEE, pp. 772-788. |
| Freeman H., A Scheme for the Efficient Encoding of Graphical Data for Communication and Information Processing, Proceedings of the Electronics Congress—Advances in Electronics, Rassegna, IT, pp. 340-348, Mar. 24, 1969. |
| Freeman H., “Computer Processing of Line -Drawing Images,” ACM Computing Surveys, New York, NY, vol. 6, No. 1, pp. 57-97, Mar. 1974. |
| Final Office Action, USPTO U.S. Appl. No. 10/104,863. Dated Apr. 7, 2008. |
| Non Final Office Action, USPTO U.S. Appl. No. 10/104,863. Dated Oct. 25, 2007. |
| Final Office Action, USPTO U.S. Appl. No. 10/104,863. Dated Jul. 6, 2007. |
| Non Final Office Action, USPTO U.S Appl. No. 10/104,863. Dated Dec. 29, 2006. |
| Non Final Office Action, USPTO U.S. Appl. No. 10/104,863. Dated Jul. 17, 2006. |
| Final Office Action, USPTO U.S. Appl. No. 10/104,863. Dated Mar. 22, 2006. |
| Non Final Office Action, USPTO U.S. Appl. No. 10/104,863. Dated Oct. 7, 2005. |
| Non Final Office Action, USPTO U.S. Appl. No. 10/068,461. Dated Oct. 21, 2004. |
| Non Final Office Action, USPTO U.S. Appl. No. 10/288,821. Dated May 28, 2008. |
| Non Final Office Action, USPTO U.S. Appl. No. 10/288,821. Dated Feb. 20, 2008. |
| Final Office Action, USPTO U.S. Appl. No. 10/288,821. Dated Jun. 17, 2005. |
| Non Final Office Action, USPTO U.S. Appl. No. 10/288,821. Dated Oct. 21, 2004. |
| Number | Date | Country | |
|---|---|---|---|
| 20050198292 A1 | Sep 2005 | US |
| Number | Date | Country | |
|---|---|---|---|
| 60114099 | Dec 1998 | US |
| Number | Date | Country | |
|---|---|---|---|
| Parent | 09390928 | Sep 1999 | US |
| Child | 10908202 | US |
| Number | Date | Country | |
|---|---|---|---|
| Parent | 09252391 | Feb 1999 | US |
| Child | 09390928 | US |