WO2000039678A1 - An apparatus and method for determining a program neighborhood for a client node in a client-server network - Google Patents

An apparatus and method for determining a program neighborhood for a client node in a client-server network Download PDF

Info

Publication number
WO2000039678A1
WO2000039678A1 PCT/US1999/030827 US9930827W WO0039678A1 WO 2000039678 A1 WO2000039678 A1 WO 2000039678A1 US 9930827 W US9930827 W US 9930827W WO 0039678 A1 WO0039678 A1 WO 0039678A1
Authority
WO
WIPO (PCT)
Prior art keywords
application
server
client system
hosted
available
Prior art date
Application number
PCT/US1999/030827
Other languages
French (fr)
Inventor
Martin Duursma
Anatoly Panasyuk
Anthony Ungerman
Bradley Jay Pedersen
Tom C. Davis, Iii
Marc A. Bloomfield
Robert Ciraldo
Original Assignee
Citrix Systems, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/252,391 external-priority patent/US6643690B2/en
Application filed by Citrix Systems, Inc. filed Critical Citrix Systems, Inc.
Priority to DK99966622T priority Critical patent/DK1141828T3/en
Priority to JP2000591506A priority patent/JP2002533830A/en
Priority to EP99966622A priority patent/EP1141828B1/en
Priority to IL14376299A priority patent/IL143762A0/en
Priority to AT99966622T priority patent/ATE252744T1/en
Priority to AU22129/00A priority patent/AU2212900A/en
Priority to DE69912317T priority patent/DE69912317T2/en
Publication of WO2000039678A1 publication Critical patent/WO2000039678A1/en
Priority to IL143762A priority patent/IL143762A/en
Priority to HK02101823.9A priority patent/HK1040124B/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4541Directories for service discovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/75Indicating network or usage conditions on the user display
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/102Entity profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/104Grouping of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/24Negotiation of communication capabilities

Definitions

  • the invention relates generally to client-server networks. More specifically, the
  • invention relates to a method for informing a client system of application programs installed at
  • server systems that are available to the client system for execution.
  • nodes are client nodes and other nodes are server nodes.
  • a client node formulates and delivers
  • a user of the client node enters the queries through a user interface
  • the server node evaluates the queries and delivers responses to the client node for display on the client user interface.
  • server nodes host a variety of application programs that can be accessed and
  • 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.
  • the server node transmits the application program to the client
  • the client node can run the program using the resources of the client node.
  • client nodes may be unaware of the application programs available for use on the server nodes. In fact, client nodes may not be unaware of the application programs available for use on the server nodes. In fact, client nodes may not be unaware of the application programs available for use on the server nodes. In fact, client nodes may not be unaware of the application programs available for use on the server nodes. In fact, client nodes may not be unaware of the application programs available for use on the server nodes. In fact, client nodes may not be unaware of the application programs available for use on the server nodes. In fact, client nodes may not be unaware of the application programs available for use on the server nodes. In fact, client nodes may not be unaware of the application programs available for use on the server nodes. In fact, client nodes may not be unaware of the application programs available for use on the server nodes. In fact, client nodes may not be unaware of the application programs available for use on the server nodes. In fact, client nodes may not be unaware of the application programs available for use on the server nodes.
  • a user of the client node may need to find and gain access
  • the Remote Application Manager is an application program
  • This application program guides an administrator of the client node
  • the administrator supplies such information as the name of the session, the protocol for the session, the protocol for the session, the protocol for the session, the protocol for the session, the protocol for
  • the present invention enables the user of a client system to become informed about
  • the invention relates to a method for presenting application programs to a
  • the servers include a host server that receives application-related information corresponding to application
  • 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.
  • the host server creates an output display containing the application-related
  • HTML HyperText Markup Language
  • Extended Markup a HyperText Markup Language
  • XML Structured General Markup Language
  • SGML Structured General Markup Language
  • the host server can authenticate the client system based on received user credentials.
  • the client system selects one of the available applications for execution, that application
  • the selected application is at a server other than the host server.
  • a connection is established between the client system and the host
  • the ICA protocol can be used to satisfy resource requests.
  • ICA Independent Computing Architecture
  • a request to execute one of the available hosted application programs can be received on the
  • host server can be established to exchange information associated with an execution of the
  • Information associated with an execution of the requested application program can be
  • connection between the host server and a third server hosting the requested application can be
  • Information received from the second and third servers can be merged for transmission to the client system.
  • application information can be provided by the host server to
  • a second connection can be established
  • the host server can transmit the available application information in response to a request
  • the transmitted information can produce a graphical user interface display
  • 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
  • the database can be accessible to each of the other servers of
  • each of the other servers can maintain a database for storing the application-
  • the invention relates to a method for presenting to a client system each
  • each application hosted by the server is available to the client system for execution is determined
  • each application that is available to the client system is transmitted from the server to the client system.
  • the invention relates to a server comprising a service module that collects application-related information corresponding to application programs hosted by the server
  • a database stores the collected application-related information.
  • a receiver receives the request from the plurality of servers.
  • the service module determines for each
  • a transmitter transmits information to the database.
  • 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
  • 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
  • Fig. 1 is a diagram of an embodiment of client nodes in communication with a group of
  • server nodes via a network, wherein a program neighborhood of a client node can be determined according to the principles of the invention
  • Fig. 2 A is a block diagram illustrating an exemplary process by which one of the server nodes can initiate execution of an application program for determining the program
  • Fig. 2B is a block diagram illustrating an exemplary process by which a client node can
  • Fig. 2C is a block diagram illustrating an exemplary process by which a client node uses a
  • Figs. 3A, 3B, and 3C are block diagrams illustrating exemplary processes by which a client node can launch an application program from a Program Neighborhood window displayed
  • Figs. 3D is a block diagram illustrating an exemplary process by which a client node can
  • FIG. 4 is a block diagram of a client-based computing embodiment in which a client node having an installed program neighborhood application of the invention is in communication with one of the server nodes;
  • Fig. 5 is a block diagram of a server-based computing embodiment in which a client node
  • Fig. 6A is a screen shot of an exemplary display on the display screen of a client node
  • Fig. 6B is a screen shot of another exemplary display on the display screen of a client
  • Fig. 7 is a flow chart representation of an embodiment of a process by which a client node is informed as to the availability for use of application programs on the application servers.
  • FIG. 1 shows a first computing system (client node) 10 and a second computing system
  • client node 20 in communication with computing systems (application servers) 30, 32, 34, and
  • the network 40 can be a local-area network (LAN) or a wide area
  • WAN such as the Internet or the World Wide Web.
  • client nodes 10, 20 Users of the client nodes 10, 20
  • telephone lines LAN or WAN links (e.g., Tl, T3, 56kb, X.25), broadband connections (ISDN,
  • LAN or WAN links e.g., Tl, T3, 56kb, X.25
  • ISDN broadband connections
  • the connections can be established using a
  • the client node 10 can be any personal computer (e.g., 286, 386, 486, Pentium, Pentium
  • 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,
  • 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 instructions
  • the client node 20 can be any terminal (windows or non-windows based),
  • server-based computing model operating according to a server-based computing model.
  • the user interface can be text driven (e.g., DOS) or
  • the client node 20 includes a
  • the application servers 30, 32, 34, and 36 can be any computing device that controls
  • the servers 30, 32, 34, and 36 can operate according to either a client-based computing model or a server-based
  • Each application server 30, 32, 34, and 36 hosts one or more application programs that
  • client nodes 10 and 20 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
  • MICROSOFT EXCEL® both manufactured by Microsoft Corporation of Redmond, Washington, financial reporting programs, customer registration programs, programs providing
  • the servers 30, 32, and 34 can belong to the same domain 38.
  • a network 40 In the network 40, a
  • domain is a sub-network comprising a group of application servers and client nodes under
  • a domain can include one or more "server farms.” (A server
  • a server farm is a group of servers that are linked together to act as a single server system to provide centralized administration.
  • a server farm can include one or more domains.
  • a trust relationship is an association between the different
  • 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.
  • 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
  • the 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
  • the master server node can be one of the applications servers 30, 32, 34, and 36.
  • the master server node can be one of the applications servers 30, 32, 34, and 36.
  • the master server node includes a list of server addresses
  • node can direct the client node to a particular server node on which to execute an application
  • application servers 30, 32, 34, 36 may collaborate among themselves in a peer-to-peer fashion in
  • a user of either client node 10, 20 is able to
  • programs comprise the "program neighborhood" of the user.
  • program neighborhood for a client node includes an application program (hereafter referred to as
  • the Program Neighborhood application can be installed in memory of the client node 10
  • Neighborhood application is a collection of services, applications program interfaces (APIs), and
  • UI user interface
  • the application-related information for each hosted application can be a variety of information
  • the application may stream video data, and therefore a required minimum
  • the client node supports video data. Other examples are that the client node can
  • the application-related information can be stored in a database as described later in the specification.
  • 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
  • PIN personal identification
  • digital certificates based on symmetric key or elliptic curve
  • 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.
  • the user credentials can be
  • the user credentials can be stored at that server.
  • the server can also notify the user credentials and the application-related information.
  • the server determines 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
  • node to set-up application connections.
  • an administrator of the server can control access to
  • the user authentication performed by the server can suffice to authorize the use of each
  • results can be displayed in a Program Neighborhood graphical window and each authorized
  • application program can be represented by a graphical icon in that window.
  • Program Neighborhood application can display
  • a notice can be provided indicating that such applications are unavailable.
  • the Program Neighborhood application can report all applications hosted by the Program Neighborhood application.
  • 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.
  • Fig. 2A shows an exemplary process by which a server launches the Program
  • PN Neighborhood
  • the server can launch the PN application in response to a request 42 by the client node 10 for a particular application program.
  • the request passes to the master server node, in this example
  • the master server node 30 taking load-balancing and application availability into
  • server 32 The client node 10 and server 32 establish a connection (arrows 45 and 46). By this connection, the server 32 can transfer the executable code of the particular application to the client node 10, when the client node 10 and server 32 are operating according to the client-based
  • server 32 can execute the particular application and transfer
  • node 30 or the server 32 can execute the Program Neighborhood application 41 and push the
  • Program Neighborhood application the program neighborhood is already available at the client
  • Fig. 2B shows another exemplary process by which the client node 10 initiates execution
  • the client node 10 launches the Program Neighborhood application (e.g., by
  • Program Neighborhood application is directed to the master server node, in this example
  • the master server node 30 can execute the Program Neighborhood application, if the application is on the master server node 30, and return the results to the client node 10.
  • the master server node 30 can indicate (arrow 51) to the client node 10 that the
  • Program Neighborhood application 41 is available on another server, in this example server 32.
  • the client node 10 and server 32 establish a connection (arrows 53 and 54) by which the client
  • the server 32 can
  • Fig. 2C shows another exemplary process by which a client node 10 initiates execution of the Program Neighborhood application, in this example via the World Wide Web.
  • a client node 10 initiates execution of the Program Neighborhood application, in this example via the World Wide Web.
  • NETSCAPE NAVIGATOR manufactured by Adobe Systems Inc.
  • EXPLORER manufactured by Microsoft Corporation of Redmond, Washington.
  • the client node via the web browser 80, transmits a request 82 to access a Uniform
  • URL Resource Locator
  • the first HTML page returned 84 to the client node 20 by the server 30 is an
  • the authentication page allows the client node 20 to transmit user credentials, via the web
  • the server 30 runs the WINDOWS NT operating system
  • the UNIX security domain may be said to have been projected
  • User credentials may be transmitted "in the clear,” or they may be encrypted.
  • user credentials may be transmitted via a Secure Socket Layer (SSL) connection, which encrypts data using the RC3 algorithm, manufactured by RS A Data Security, Inc. of San
  • SSL Secure Socket Layer
  • the server 30 may verify the user credentials received from the client node 20.
  • the server 30 may pass the user credentials to another server for authentication.
  • 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 or in fields that are not displayed by the web browser 80, or in any other manner
  • server 30 is associated may allow guest users, i.e., users that do not have assigned user
  • the authentication page may provide a mechanism for allowing a client node 20 to identify that it is a
  • the server 30 may
  • server prepares and transmits to the client node 20 an HTML page 88 that includes a Program Neighborhood window 58 in which appears graphical icons 57, 57' representing application
  • a user of client node 20 invokes execution of
  • Fig. 3 A shows an exemplary process of communication among the client node 10, the
  • the client node 10 has an
  • connection 72 to exchange information regarding the execution of a first application program.
  • the user credentials of the client node 10 are stored at the client node. Such storage of the user
  • Program Neighborhood application runs on the client node 10.
  • the client node display has a Program Neighborhood window 58 in which appears a graphical user interface.
  • icon 57 representing a second application program.
  • a user of the client node 10 can launch the
  • 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
  • the client node 10 and the server 32 communicate with each
  • Fig. 3B shows an exemplary process of communication among the client node 20, the
  • the master server node in this example server 30, and servers 32, 34, and 36.
  • the client node 20 has an active connection 73 with the server 32.
  • the client node 20 and server 32 can use the active
  • connection 73 to exchange information regarding the execution of a first application program.
  • the user credentials of the client node 20 are stored at the server 32 in cache memory or in
  • the Program Neighborhood application runs on the server 32.
  • server 32 includes software providing a server-based client engine 62, enabling the server 32 to
  • 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.
  • the request to launch the second application program passes to the server 32 via active connection 73, and the server
  • the master server node 30 indicates (arrow 65) to the server 32 that the sought-after
  • 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
  • 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.
  • the information exchanged between the client node 20 and the server 34 "passes through” the server 32.
  • 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.
  • server 32 forwards the request to the master server node 30, which considers load-balancing and
  • the master server node indicates that server 36 can run the third application program.
  • the server 32 and server 36 establish a connection (arrow 74) by which the server 32
  • server 36 can authenticate the user credentials of the client node 20, which are obtained from the
  • the server 32 forwards the graphical user interface results to the client node 20 where
  • client node 20 can run multiple application programs through one connection with the server 32, while the server 32 maintains
  • 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
  • Fig. 3C shows an exemplary process of communication among the client node 20, the
  • the client node 20 has an
  • the client node 20 and server 32 can use the active connection 76 to exchange information regarding the execution of a first application program.
  • the client node 20 can store the user credentials in cache memory or in persistent storage.
  • the Program Neighborhood application runs on the server 32.
  • 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
  • the client node 20 then communicates with the master server node 30 via connection 77 to determine the server for executing the
  • That server is server 34.
  • the client node 20 then retrieves the second application program.
  • Server 34 requests the user credentials from the
  • the client node 20 can have multiple active connections between the multiple servers.
  • Fig. 3D shows an exemplary process of communicating between the client node 20, a
  • server 30 that in this example acts as a web server, and server 32.
  • the client node 20 is a web server, and server 32.
  • the sever 30 accesses an output display template 90, such as an SGML, HTML or
  • the template may be stored in volatile or persistent memory associated with the
  • server 30 or it may be stored in mass memory 92, such as a disk drive or optical device, as shown
  • the template 90 is a standard SGML, HTML, or XML document
  • tags indicate to the server 30 where in the output display to insert information corresponding to
  • Neighborhood-specific tags are embedded within comments inside the file, allowing the file to
  • Neighborhood-specific tags are extensions of the markup language used as the base for the template.
  • HTML tags Examples of HTML tags that may be used in a template in accordance with the present
  • the template is constructed dynamically using, for example, COLD
  • the template may be static.
  • the Program Neighborhood application parses the template, replacing
  • a template parser object is provided that accepts an HTML template
  • 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
  • Program Neighborhood application allows scripts to accept to
  • Scripts may be written in, for example, VBScript or Jscript.
  • the scripting language is used to dynamically generate
  • a user of the client node 20 can launch an application by double-clicking with a mouse
  • each icon 57, 57' displayed in the Program Neighborhood web page.
  • each icon 57, 57' displayed in the Program Neighborhood web page.
  • icon 57, 57' is an encoded URL that specifies: the location of the application (i.e., on which
  • 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
  • the client node 20 establishes
  • server 32 and exchanges information regarding execution of the desired application.
  • connection 94 is made using the Independent Computing Architecture (ICA) protocol, manufactured by Citrix Systems, Inc. of Fort Lauderdale, Florida.
  • ICA Independent Computing Architecture
  • client node 20 may display application output in a window separate from the web browser 60, or
  • Fig. 4 illustrates an exemplary arrangement of program components for a client-based
  • a client-based implementation of Program Neighborhood application can be used in a network using either the server-based computing model in which the servers execute the Program Neighborhood application or the
  • the Program Neighborhood application includes a Program Neighborhood
  • PPSVC Program Neighborhood Application Program Interface
  • PNAPI Program Neighborhood Application Program Interface
  • the application server 30 for example, includes the service component (PNSVC) 44 and
  • the client node 10 which is a representative example of a client
  • 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
  • ICA asynchronous transfer mode
  • protocol provides for virtual channels, which are session-oriented transmission connections that
  • the virtual virtual machine can be used by application-layer code to issue commands for exchanging data.
  • the virtual virtual code can be used by application-layer code to issue commands for exchanging data.
  • channel commands are designed to be closely integrated with the functions of client nodes.
  • the Program Neighborhood virtual channel protocol can include four groups of
  • the application database 48 is a cache of the authorized user and group information for
  • 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
  • the database 48 can be implemented in a
  • ITU Telecommunication Union
  • the application database 48 includes a list of application servers. Each server in the list
  • each application has an associated set of applications.
  • application-related information can include the application name, a list of servers, and client users that are
  • Table 1 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
  • server 30 hosts the Spreadsheet program, the Customer Database and the Word Processor. User A is authorized to use the Spreadsheet, User
  • the user information stored in the database can be any suitable user information stored in the database.
  • the user information stored in the database can be any suitable user information stored in the database.
  • the server 30 obtains the application-related information from each other server in the server farm regarding the
  • 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 and is accessible to all of the servers in the server farm. Accordingly, the application-
  • the application database 48 can be maintained at each of the application servers
  • each server obtains from communications with each other server in the server farm.
  • PPSVC Program Neighborhood Service Program
  • the PNSVC software 44 operating on each server
  • the servers 30, 32, 34 and 36 exchange the application-related information on the named pipes.
  • 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-
  • PNSVC 44 software also maintains the relationships of groups and users to published
  • An administrator of the server 30 can use a user interface to configure the PNSVC
  • PNSVC software 44 includes implementing the services and functions requested by the PNAPI 52 and communicating with the PNAPI 52 on the client node
  • VDPN Program Neighborhood virtual device driver
  • 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,
  • the PNAPI 52 provides a generic mechanism for
  • the launch mechanism When the client node 10 launches an available application, the launch mechanism
  • the PNAPI 52 provides all published application information to the user interface
  • the PNAPI 52 also manages server farm log-ons in a local database of logon credentials (e.g., passwords) for users of the client node 10 to support the single authentication feature. Credentials may or may not be
  • the PNAPI 52 provides automatic and manual management for Program Neighborhood
  • the local cache 60 can either be refreshed
  • the PNAPI 52 can build remote
  • 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 displayed information is a mixture of information generated by a user of the client node 10 and
  • 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
  • a display of a combination of such graphical user interface components is generally
  • a desktop produced by the user interface module 56 can include a Program Neighborhood window displaying the neighborhood of application programs available
  • the user interface module 56 can generate a Program Neighborhood window for each server farm or merge the applications
  • the Program Neighborhood window includes a folder for each server farm.
  • Program Neighborhood window becomes the focal point for launching published applications
  • the user interface module 56 can be used to launch applications through the PNAPI 52.
  • the user of the client node 10 can use the mouse 18 to select one of the displayed icons
  • a feature of a client-based implementation is that the user can browse the objects
  • the client node 10 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
  • Fig. 5 shows an exemplary arrangement of program components for a server-based
  • the components include a Service
  • PNAPI User Interface Interface
  • the PNSVC 44' communicates with the application database 48' and with the PNAPI 52' using local procedure calls.
  • the PNAPI 52' also communicates with the
  • the client node 20 logs on to the
  • the server 30' develops and maintains a database containing the application related
  • the application server 30' is established between the server 30' and the client node 20.
  • the application server 30' is in
  • connection 62' can be established by an ICA virtual channel protocol (e.g., Thinwire).
  • ICA virtual channel protocol e.g., Thinwire
  • Thinwire protocol can be used to transmit presentation commands from Windows-based
  • the client node 20 can
  • 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.
  • the server 30' uses the user
  • a Program Neighborhood graphical window is returned to the client node 20 and
  • This window can contain icons representing the available and, possibly, the unavailable application programs that are in the program neighborhood of the client
  • the user of the client node 20 can select and launch one of the application programs
  • Neighborhood application can execute the application on the same server 30', where applicable,
  • the PNAPI 52' can include a launch mechanism for launching a
  • application can launch the application via the server 30' (i.e., server-based client) using the server 30' (i.e., server-based client) using the server 30' (i.e., server-based client) using the server 30' (i.e., server-based client) using the server 30' (i.e., server-based client) using the server 30' (i.e., server-based client) using the server 30' (i.e., server-based client) using the server 30' (i.e., server-based client) using the
  • the web-based Program Neighborhood application includes a group
  • the application is a of objects that manage various aspects of the application.
  • the application is a of objects that manage various aspects of the application.
  • the application is a of objects that manage various aspects of the application.
  • gateway object class includes three primary object classes that "plus in" to a web server: a gateway object class; a
  • object classes are provided as Java beans.
  • the three primary object classes facilitate: validation
  • the objects can be accessed in a number of different ways.
  • Java beans may be compiled as COM objects and made available to the web server as ActiveX components.
  • the Java beans can be used in their native form,
  • the Java beans can be instantiated and used directly in a Java servlet.
  • 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.
  • the credentials object is an abstract class that cannot be instantiated and represents a user's credentials.
  • 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.
  • a "clear text credentials" extension may be provided that stores user's name domain, and password in plain text.
  • a gateway object class handles communications with a target server farm.
  • 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
  • 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.
  • 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 to application information.
  • An application 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
  • An application object acts as a
  • the applications base class contains information about published applications and is used
  • gateway base class to return information about applications hosted by the server farm in order to create the Program Neighborhood web page.
  • Fig. 6 A is a screenshot of an exemplary Program Neighborhood window 120 that can be
  • the window 120 includes graphical icons 122. Each icon 122
  • Each represented application is available to the user of the client node for execution. The user can select and launch one of the applications using the mouse 18, 28 or keyboard 14,
  • Fig. 6B is a screenshot of another exemplary Program Neighborhood window 124 that can be displayed on the screen 18, 22 of either client node 10, 20 after the Program
  • the window 124 includes graphical icons 126, 128.
  • Each icon 126, 128 represents an application program that is hosted by one of the servers 30, 32,
  • Each application program represented by one of the icons 126 is
  • 122, 166, 128 are displayed within a browser window.
  • Fig. 7 shows an exemplary process by which a user of either client node 10, 20 can be
  • step 80 the client node 10, 20 requests log-on service from one of the servers,
  • server 32 e.g., server 32.
  • the server 32 requires valid user credentials to establish the connection.
  • step 82 receives the user credentials from the client node 10 (step 82), and authenticates the user for log-on (step 84).
  • a desktop is displayed at the client node 10, 20 (step 85).
  • the desktop can include a graphical icon representing the Program Neighborhood application program.
  • step 86 the application server 32 establishes a connection with each other servers 30,
  • step 90 the application server 32
  • server 30, 34, 36 in the server farm can develop a database equivalent to the database of the
  • the database of the server 32 can be a centralized database that is accessible to each other application server 30, 34,
  • the collecting of application-related information can occur independently
  • step 92 the client node 10, 20 can request execution of an application program from
  • 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
  • the application server 32 may provide the service to the client node 10, 20 (step 94).
  • the application server 32 may provide the service to the client node 10, 20 (step 94).
  • the application server 32 may provide the service to the client node 10, 20 (step 94).
  • step 96 the client node 10,
  • step 93 the Program Neighborhood application
  • the authorized application programs are in the program neighborhood of the client node 10, 20. This program neighborhood of available application
  • step 104 Program Neighborhood graphical window
  • the Program Neighborhood window may include applications that
  • the available (and unavailable) application programs can be represented by
  • the user of the client node 10, 20 can select and launch one of the application programs
  • 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
  • the software programs may be stored on or in one or more articles of manufacture as

Abstract

An apparatus and method for determining a program neighborhood of a client node in a client-server network is described. The program neighborhood of the client node includes application programs hosted by application servers on the network. The present invention enables a user of a client node to learn of these application programs. The user is not required to know where to find such applications or to manually establish links to such applications. To make the client node aware of its program neighborhood, a host server collects application-related information corresponding to application programs hosted by the servers in the network. The application-related information can include the application name, the server location of the application, minimum capabilities required of client nodes for executing the application, and those users who are authorized to use that application. User credentials are received from the client system. The user credentials are used to filter the application-related information. Information representing those application programs that are available to the client node is transmitted from the host server to the client system for display. In a Windows-based client node, the information can be represented by a graphical icon for each available application program.

Description

AN APPARATUS AND METHOD FOR DETERMINING A PROGRAM NEIGHBORHOOD FOR A CLIENT NODE IN A CLIENT-SERVER NETWORK
Related Applications
This application claims the benefit of U.S. Provisional Application, Serial No. 60/114,099 filed December 29, 1998 and is a continuation-in-part of United States Patent Application Serial No. 09/252,391, filed February 18, 1999.
Field of the Invention
The invention relates generally to client-server networks. More specifically, the
invention relates to a method for informing a client system of application programs installed at
server systems that are available to the client system for execution.
Background of the Invention 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 existing 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, Florida. 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. Summarv of the Invention
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.
Brief Description of the Drawings
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:
Fig. 1 is a diagram of an embodiment of client nodes in communication with a group of
server nodes via a network, wherein a program neighborhood of a client node can be determined according to the principles of the invention;
Fig. 2 A is a block diagram illustrating an exemplary process by which one of the server nodes can initiate execution of an application program for determining the program
neighborhood of a client node;
Fig. 2B is a block diagram illustrating an exemplary process by which a client node can
initiate execution of an application program for determining the program neighborhood of that
client node;
Fig. 2C is a block diagram illustrating an exemplary process by which a client node uses a
web browser application to determine its program neighborhood;
Figs. 3A, 3B, and 3C are block diagrams illustrating exemplary processes by which a client node can launch an application program from a Program Neighborhood window displayed
at that client node;
Figs. 3D is a block diagram illustrating an exemplary process by which a client node can
launch an application program from a Program Neighborhood web page displayed at that client
node; Fig. 4 is a block diagram of a client-based computing embodiment in which a client node having an installed program neighborhood application of the invention is in communication with one of the server nodes;
Fig. 5 is a block diagram of a server-based computing embodiment in which a client node
is in communication with a server node having an installed program neighborhood application
program of the invention;
Fig. 6A is a screen shot of an exemplary display on the display screen of a client node
after the program neighborhood application program of the invention is executed;
Fig. 6B is a screen shot of another exemplary display on the display screen of a client
node after the program neighborhood application program of the invention is executed;
Fig. 7 is a flow chart representation of an embodiment of a process by which a client node is informed as to the availability for use of application programs on the application servers.
Detailed Description of the Invention
FIG. 1 shows a first computing system (client node) 10 and a second computing system
(client node) 20 in communication with computing systems (application servers) 30, 32, 34, and
36 over a network 40. The network 40 can be a local-area network (LAN) or a wide area
network (WAN) such as the Internet or the World Wide Web. Users of the client nodes 10, 20
can be connected to the network 40 through a variety of connections including standard
telephone lines, LAN or WAN links (e.g., Tl, T3, 56kb, X.25), broadband connections (ISDN,
Frame Relay, ATM), and wireless connections. The connections can be established using a
variety of communication protocols (e.g., TCP/IP, IPX, SPX, NetBIOS, Ethernet, RS232, and
direct asynchronous connections).
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, Washington, 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 logon 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 Figs. 2A-2C. The results are displayed on the display
screen 12, 22 of the client node 10, 20. In a graphical windows-based implementation, the
results can be displayed in a Program Neighborhood graphical window and each authorized
application program can be represented by a graphical icon in that window.
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.
Fig. 2A shows an exemplary process by which a server launches the Program
Neighborhood (PN) application and presents results of the PN application to the client node 10. The server can launch the PN application in response to a request 42 by the client node 10 for a particular application program. The request passes to the master server node, in this example
server 30. The master server node 30, taking load-balancing and application availability into
account, indicates (arrow 43) to the client node 10 that the sought-after application is available
on server 32. The client node 10 and server 32 establish a connection (arrows 45 and 46). By this connection, the server 32 can transfer the executable code of the particular application to the client node 10, when the client node 10 and server 32 are operating according to the client-based
computing model. Alternatively, the server 32 can execute the particular application and transfer
the graphical user interface to the client node 10, when the client node 10 and server 32 are
operating according to the server-based computing model. In addition, either the master server
node 30 or the server 32 can execute the Program Neighborhood application 41 and push the
results (arrows 43 or 46) back to the client node 10 so that when the client node 10 requests the
Program Neighborhood application, the program neighborhood is already available at the client
node 10.
Fig. 2B shows another exemplary process by which the client node 10 initiates execution
the Program Neighborhood application and a server presents the results of the PN application to
the client node 10. The client node 10 launches the Program Neighborhood application (e.g., by
clicking on the Program Neighborhood icon 47 representing the application). The request 50 for
the Program Neighborhood application is directed to the master server node, in this example
server 30. The master server node 30 can execute the Program Neighborhood application, if the application is on the master server node 30, and return the results to the client node 10.
Alternatively, the master server node 30 can indicate (arrow 51) to the client node 10 that the
Program Neighborhood application 41 is available on another server, in this example server 32.
The client node 10 and server 32 establish a connection (arrows 53 and 54) by which the client
node 10 requests execution of the Program Neighborhood application 41. The server 32 can
execute the application 41 and transfer the results (i.e., the graphical user interface) to the client
node 10.
Fig. 2C shows another exemplary process by which a client node 10 initiates execution of the Program Neighborhood application, in this example via the World Wide Web. A client node
20 executes a web browser application 80, such as NETSCAPE NAVIGATOR, manufactured by
Netscape Communications, Inc. of Mountain View, California or MICROSOFT INTERNET
EXPLORER, manufactured by Microsoft Corporation of Redmond, Washington.
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 serve 30 or by another server in the farm. This allows a security domained 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, Washington, 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 RS A Data Security, Inc. of San
Mateo, California.
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 or 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 Fig. 2C, once the client node 20 is authenticated by the server 30, the
server prepares and transmits to the client node 20 an HTML page 88 that includes a Program Neighborhood window 58 in which appears graphical icons 57, 57' representing application
programs to which the client node 20 has access. A user of client node 20 invokes execution of
an application represented by icon 57 by clicking that icon 57.
Fig. 3 A shows an exemplary process of communication among the client node 10, the
master server node, in this example server 30, and the server 32. The client node 10 has an
active connection 72 with the server 32. The client node 10 and server 32 can use the active
connection 72 to exchange information regarding the execution of a first application program.
The user credentials of the client node 10 are stored at the client node. Such storage of the user
credentials can be in cache memory or persistent storage. 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.
Fig. 3B shows an exemplary process of communication among the client node 20, the
master server node, in this example server 30, and servers 32, 34, and 36. The client node 20 has an active connection 73 with the server 32. The client node 20 and server 32 can use the active
connection 73 to exchange information regarding the execution of a first application program. The user credentials of the client node 20 are stored at the server 32 in cache memory or in
persistent storage.
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 server 36 can run the third application program.
The server 32 and 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.
Fig. 3C shows an exemplary process of communication among the client node 20, the
master server node, in this example server 30, and servers 32 and 34. The client node 20 has an
active connection 76 with the server 32. The client node 20 and server 32 can use the active connection 76 to exchange information regarding the execution of a first application program.
The client node 20 can store the user credentials in cache memory or in persistent storage.
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.
Fig. 3D shows an exemplary process of communicating between the client node 20, a
server 30 that in this example acts as a web server, and server 32. The client node 20
authenticates itself to the server 30 as described above in connection with Fig. 2C. In one
embodiment, the sever 30 accesses an output display template 90, such as an SGML, HTML or
XML file, to use as a base for constructing the Program Neighborhood window to transmit to the
client node 20. The template may be stored in volatile or persistent memory associated with the
server 30 or it may be stored in mass memory 92, such as a disk drive or optical device, as shown
in Fig. 3D.
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 the 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 : TABLE 1
Figure imgf000022_0001
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, Massachusetts or ACTIVE SERVER
PAGES manufactured by Microsoft Corporation of Redmond, Washington. 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 output 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 accept 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 crated 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, Florida. Thus, the
client node 20 may display application output in a window separate from the web browser 60, or
it may "embed" application output within the web browser.
Fig. 4 illustrates an exemplary arrangement of program components for a client-based
implementation of the Program Neighborhood application. A client-based implementation of Program Neighborhood application can be used in a network using either the server-based computing model in which the servers execute the Program Neighborhood application or the
client-based computing model in which the client node 10 executes the Program Neighborhood
application locally. The Program Neighborhood application includes a Program Neighborhood
Service (PNSVC) component 44, an Application Database component 48, a Program Neighborhood Application Program Interface (PNAPI) component 52, a Program Neighborhood
User Interface component 56, and a local cache 60.
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:
(1) initialization-related commands;
(2) single authentication related commands that can be supported by each client node
wanting a copy of the user credentials;
(3) application data related commands for implementing the Program Neighborhood
user interface; and
(4) application launch callback-related commands for running the user interface on an application server.
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 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 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 1. 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
Figure imgf000026_0001
Table 1 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, 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 and is 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
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 of the client node 10. The PNAPI 52 also manages server farm log-ons in a local database of logon credentials (e.g., passwords) for users of the client node 10 to support the single authentication feature. Credentials may or may not be
persistent across bootings (power-off and on cycles) of the client node 10.
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 of the client node 10. The displayed information is a mixture of information generated by a user of the client node 10 and
information obtained by the Program Neighborhood application. The user interface module 56
can also show the user all applications that the user is currently running and all active and
disconnected sessions.
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. A display of a combination of such graphical user interface components is generally
referred to as a "desktop." A desktop produced by the user interface module 56 can include a Program Neighborhood window displaying the neighborhood of application programs available
to the user of the client node 10 for use. These application programs are a filtered combination
of the published applications hosted by a server farm on the network. The user interface module 56 can generate a Program Neighborhood window for each server farm or merge the applications
from different server farms under a single Program Neighborhood window.
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 produces a window containing a representation
(e.g., an icon) of each hosted application available to the user, e.g., see Figs. 6A and 6B. The
Program Neighborhood window becomes the focal point for launching published applications,
and the user interface module 56 can be used to launch applications through the PNAPI 52. For
example, the user of the client node 10 can use the mouse 18 to select one of the displayed icons
and launch the associated application.
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.
Fig. 5 shows an exemplary arrangement of program components for a server-based
implementation of the Program Neighborhood application. The components include a Service
(PNSVC) component 44', an Application Database component 48', an Application Program
Interface (PNAPI) component 52', a User Interface component 56' and a local cache 60'. Each
software component 44', 48', 52', 56', and 60' is installed on the application server 30'. The
software components for the server-based implementation correspond to the software
components for the client-based implementation of Fig. 4. The functionality of each server-
based software component is similar to the client-based counterpart, with differences or added
capabilities described below. The PNSVC 44' communicates with the application database 48' and with the PNAPI 52' using local procedure calls. The PNAPI 52' also communicates with the
user interface module 56' and the local cache 60'.
Similar to that described in Fig. 4 for the client node 10, the client node 20 logs on to the
network 40, the server 30' develops and maintains a database containing the application related
information collected from the other servers 32, 34 in the server farm, and a communication link
is established between the server 30' and the client node 20. The application server 30' is in
communication with the client node 20 via an ICA channel connection 62'. The channel
connection 62' can be established by an ICA virtual channel protocol (e.g., Thinwire). The
Thinwire protocol can be used to transmit presentation commands from Windows-based
applications running on the application server 30' to the client node 20. To a user of the client
node 20, the applications appear to be running on the client node 20. The client node 20 can
include a Remote Application Manager application program 64 that communicates with the
application server 30' via the ICA channel connection 62'.
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 Fig. 4 for the server 30, the server 30' uses the user
credentials to determine those application programs that are authorized for use by the user of the
client node 20. A Program Neighborhood graphical window is returned to the client node 20 and
displayed on the client screen 22. This window can contain icons representing the available and, possibly, the unavailable application programs that are in the program neighborhood of the client
node 20.
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 Fig. 3B.
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 "plus 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 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 to application information.
An application 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 application 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 place don 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.
The applications base class contains information about published applications and is used
by the gateway base class to return information about applications hosted by the server farm in order to create the Program Neighborhood web page.
Fig. 6 A is a screenshot of an exemplary Program Neighborhood window 120 that can be
displayed on the screen 18, 22 of either client node 10, 20 after the Program Neighborhood
application has executed. The window 120 includes graphical icons 122. Each icon 122
represents an application program that is hosted by one of the servers 30, 32, 34 and 36 on the
network 40. Each represented application is available to the user of the client node for execution. The user can select and launch one of the applications using the mouse 18, 28 or keyboard 14,
24.
Fig. 6B is a screenshot of another exemplary Program Neighborhood window 124 that can be displayed on the screen 18, 22 of either client node 10, 20 after the Program
Neighborhood application has executed. The window 124 includes graphical icons 126, 128.
Each icon 126, 128 represents an application program that is hosted by one of the servers 30, 32,
34 and 36 on the network 40. Each application program represented by one of the icons 126 is
available to the user of the client node 10, 20 for execution. The user can select and launch one
of the applications using the mouse 18, 28 or keyboard 14, 24. For web-based program
neighborhood environments, the screenshots of Figs. 6A and 6B are similar, except that icons
122, 166, 128 are displayed within a browser window.
Each application program represented by one of the icons 128 is unavailable to the user of
the client node 10, 20, although such applications are present in the server farm. The
unavailability of these application programs can be noted on the display screen (e.g., "X"s can be
drawn through the icons 128). An attempt to launch such an application program can trigger a
message indicating that the user is not authorized to use the application.
Fig. 7 shows an exemplary process by which a user of either client node 10, 20 can be
informed about the availability of applications hosted by application servers 30, 32, 34 and 36 on
the network 40. In step 80, the client node 10, 20 requests log-on service from one of the servers,
e.g., server 32. The server 32 requires valid user credentials to establish the connection. The
server 32 receives the user credentials from the client node 10 (step 82), and authenticates the user for log-on (step 84). A desktop is displayed at the client node 10, 20 (step 85). The desktop can include a graphical icon representing the Program Neighborhood application program. 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.

Claims

What is claimed is:
1. In a network including a client system and a plurality of servers including a host server,
the plurality of servers hosting application programs, a method for presenting to the client system
application programs that are available for use, the method comprising the steps of:
(a) receiving at the host server application-related information corresponding to
application programs hosted by the plurality of servers;
(b) receiving user credentials from the client system;
(c) determining for each application program hosted by the plurality of servers
whether that hosted application program is available to the client system based on the
user credentials and the application-related information; and
(d) transmitting information from the host server to the client system indicating to
the client system each hosted application program that is available to the client system for
execution.
2. The method of claim 1 further comprising the step of establishing a connection between
the client system and the host server using an Independent Computing Architecture (ICA)
protocol.
3. The method of claim 2 wherein the ICA protocol establishes a virtual channel to transmit
the information to the client system indicating each hosted application program that is available
to the client system.
4. The method of claim 1 further comprising the steps of:
establishing a connection between the client system and the host server; receiving a request to execute one of the available hosted application programs;
and
establishing in response to the request a second connection between the client
system and the host server to exchange information associated with an execution of the
requested application program.
5. The method of claim 1 further comprising the steps of:
establishing a first connection between the client system and the host server;
receiving a request to execute one of the available hosted application programs;
establishing in response to the request a second connection between the host
server and a second server hosting the requested application; and
exchanging information associated with an execution of the requested application
program between the second server and the client system via the host server.
6. The method claim 5 further comprising the steps of:
receiving a second request to execute a second one of the available hosted
application programs;
establishing in response to the second request a third connection between the host
server and a third server hosting the second requested application; and
exchanging information associated with an execution of the second requested
application program between the third server and the client system via the host server.
7. The method of claim 6 further comprising the step of merging information received from
the second and third servers for transmission to the client system via the first connection.
8. The method claim 1 further comprising the steps of:
establishing a first connection between the client system and the host server; receiving a request to execute one of the available hosted application programs;
providing application information to the client system in response to the request;
and
establishing, in response to the provided application information, a second
connection between the client system and a second server hosting the requested
application.
9. The method of claim 1 wherein the transmitted information displays at the client system
icons representing the available application programs in a graphical user interface window.
10. The method of claim 1 further comprising the step of communicating, by the host server,
with each of the other servers in the plurality to determine application programs hosted by those
other servers.
11. The method of claim 1 further comprising the step of establishing a communications link
between the host server and the client system, wherein the communications link includes at least
one virtual channel.
12. The method of claim 1 further comprising the steps of:
receiving user credentials from the client system;
authenticating at the host server the user of the client system based on the
received user credentials; and
executing a selected one of the available application programs hosted by one of
the plurality of servers other than the host server without requiring further input of user
credentials by the user of the client system.
13. The method of claim 1 wherein the host server transmits the available application
information in response to a request for the available application information by the client system.
14. The method of claim 1 further comprising the step of maintaining a database at the host
server for storing the application-related information, wherein the database is accessible to each
of the other servers of the plurality.
15. The method of claim 1 further comprising the step of maintaining a database at each of
the plurality of servers for storing the application-related information.
16. The method of claim 1 wherein the transmitted information further discloses to the user
of the client system each hosted application program that the user of the client system is
unauthorized to use.
17. In a network including a server hosting at least one application, a method for displaying
each application available to a client system, the method comprising the steps of:
(a) receiving user credentials from the client system;
(b) maintaining application-related information corresponding to each application
program hosted by the server;
(c) determining whether each application program hosted by the server is
available for use by a user of the client system based on the user credentials and the
application-related information; and (d) transmitting information from the server to the client system responsive to the
application-related information, the transmitted information disclosing each application
program that is determined to be available for use by the user of the client system.
18. In a network including a client system and a plurality of servers hosting applications, a
server comprising:
a service module collecting application-related information corresponding to
application programs hosted by the plurality of servers;
a receiver receiving user credentials from the client system;
a database storing the collected application-related information wherein the
service module determines for each application program hosted by the plurality of servers
whether that hosted application program is available to the client system for execution
based on the user credentials and the application-related information stored in the
database; and
a transmitter transmitting information to the client system indicating to the client
system each hosted application program that is available to the client system for
execution.
19. The server of claim 18 wherein said service module transmits a datagram to other servers
in the plurality to collect the application-related information corresponding to the application
programs hosted by those servers.
20. The server of claim 18 wherein the database includes client information.
21. The server of claim 18 wherein said transmitter transmits available application
information using a virtual channel communications protocol.
22. The method of claim 1 wherein step (d) comprises:
(d-a) creating an output display indicating each hosted application program that is
available to the client system for execution; and (d-b) transmitting the created output display to the client system.
23. The method of claim 22 wherein step (a) further comprises receiving by a web server
application-related information corresponding to application programs hosted by at least one of a
plurality of servers.
24. The method of claim 23 further comprising the steps of:
(e) parsing an SGML document;
(f) retrieving, responsive to the parsed SGML document, application-related
information corresponding to application programs hosted by at least one of the plurality
of servers.
25. The method of claim 22 wherein step (b) comprises receiving by the host system
biometric user credentials from a client system.
26. The method of claim 22 wherein step (b) comprises receiving by the host system
encrypted user credentials from a client system.
27. The method of claim 22 wherein step (d-a) further comprises:
(a) receiving by the host system user credentials from a client system;
(b) authenticating at the host server the user of the client system based on the
received user credentials; and
(c) executing a selected one of the available application programs hosted by one
of the plurality of servers without requiring further receipt of user credentials from the
client system.
28. The method of claim 22 wherein step (d-a) comprises creating an SGML output
display indicating each hosted application program that is available to the client system for
execution.
29. The method of claim 22 wherein step (d-a) comprises creating an HTML output
display indicating each hosted application program that is available to the client system for execution.
30. The method of claim 22 wherein step (d-a) comprises creating an output display
representing the available application programs as icons in a graphical user interface window.
31. The method of claim 22 wherein step (d-b) comprises transmitting the created output
display to the client system using HTTP
32. The method of claim 22 further comprising the step of:
(e) receiving a request to execute one of the available hosted application
programs; and
(f) executing the requested application program.
33. The method of claim 32 wherein step (f) further comprises executing the requested
application in a window contained in the output display page.
34. The method of claim 32 further comprising the step of establishing a connection between
the client system and the server hosting the requested application.
35. The method of claim 22 further comprising the step of communicating, by the host
server, with the plurality of servers in order to determine application programs hosted by the
plurality of servers.
36. The method of claim 17 wherein step (d) comprises:
(d-a) creating, responsive to the determination, an output display indicating each
hosted application program that is available to the client system for execution; and (d-b) transmitting the created output display to the client system.
37. The network of claim 18 wherein the server further comprises:
an output display creation engine creating output displays indicating each hosted
program available to the client system for execution; and
a transmitter transmitting created output displays to the client system.
38. The server of claim 37 wherein said service module transmits a datagram to the plurality
of servers to collect the application-related information corresponding to the application
programs hosted by those servers.
39. The server of claim 37 wherein said output display creation engine parses SGML
document templates.
40. The server of claim 39 wherein said transmitter transmits available application
information using HTTP.
PCT/US1999/030827 1998-12-29 1999-12-27 An apparatus and method for determining a program neighborhood for a client node in a client-server network WO2000039678A1 (en)

Priority Applications (9)

Application Number Priority Date Filing Date Title
DK99966622T DK1141828T3 (en) 1998-12-29 1999-12-27 Device and method for determining a program neighborhood for a client node in a client / server network
JP2000591506A JP2002533830A (en) 1998-12-29 1999-12-27 Apparatus and method for determining a neighbor program of a client node in a client-server network
EP99966622A EP1141828B1 (en) 1998-12-29 1999-12-27 An apparatus and method for determining a program neighborhood for a client node in a client-server network
IL14376299A IL143762A0 (en) 1998-12-29 1999-12-27 An apparatus and method for determining a program neighborhood for a client node in a client-server network
AT99966622T ATE252744T1 (en) 1998-12-29 1999-12-27 APPARATUS AND METHOD FOR DETERMINING A PROGRAM NEIGHBORHOOD FOR A CUSTOMER NODE IN A CUSTOMER OPERATOR NETWORK
AU22129/00A AU2212900A (en) 1998-12-29 1999-12-27 An apparatus and method for determining a program neighborhood for a client nodein a client-server network
DE69912317T DE69912317T2 (en) 1998-12-29 1999-12-27 DEVICE AND METHOD FOR DETERMINING A PROGRAM NEIGHBORHOOD FOR A CUSTOMER NODE IN A CUSTOMER OPERATOR NETWORK
IL143762A IL143762A (en) 1998-12-29 2001-06-14 Apparatus and method for determining a program neighborhood for a client node in a client-server network
HK02101823.9A HK1040124B (en) 1998-12-29 2002-03-11 An apparatus and method for determining a program neighborhood for a client node in a client-server network

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US11409998P 1998-12-29 1998-12-29
US60/114,099 1998-12-29
US09/252,391 1999-02-18
US09/252,391 US6643690B2 (en) 1998-12-29 1999-02-18 Apparatus and method for determining a program neighborhood for a client node in a client-server network
US09/390,928 1999-09-07
US09/390,928 US6928469B1 (en) 1998-12-29 1999-09-07 Apparatus and method for determining a program neighborhood for a client node in a client-server network using markup language techniques

Publications (1)

Publication Number Publication Date
WO2000039678A1 true WO2000039678A1 (en) 2000-07-06

Family

ID=27381447

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1999/030827 WO2000039678A1 (en) 1998-12-29 1999-12-27 An apparatus and method for determining a program neighborhood for a client node in a client-server network

Country Status (15)

Country Link
US (2) US6928469B1 (en)
EP (1) EP1141828B1 (en)
JP (1) JP2002533830A (en)
KR (1) KR100630212B1 (en)
AT (1) ATE252744T1 (en)
AU (2) AU2212900A (en)
CA (1) CA2293127C (en)
DE (1) DE69912317T2 (en)
DK (1) DK1141828T3 (en)
ES (1) ES2209549T3 (en)
GB (1) GB2349488A (en)
HK (1) HK1040124B (en)
IL (1) IL143762A0 (en)
PT (1) PT1141828E (en)
WO (1) WO2000039678A1 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002041601A2 (en) * 2000-11-16 2002-05-23 Telefonaktiebolaget Lm Ericsson (Publ) User authentication apparatus, controlling method thereof, and network system
WO2003084165A1 (en) * 2002-03-28 2003-10-09 Siemens Aktiengesellschaft Methods and devices for informing the user of a mobile radio terminal about data services that are currently available to said user via the server of a mobile radio network service
WO2004051962A1 (en) * 2002-11-27 2004-06-17 Hewlett-Packard Development Company, L.P. Methods and systems for transferring events including multimedia data
US7401125B1 (en) 2000-10-10 2008-07-15 Ricoh Corporation System, computer program product and method for managing documents
US20160006800A1 (en) * 2014-07-07 2016-01-07 Citrix Systems, Inc. Peer to peer remote application discovery
US9356938B2 (en) 2005-02-04 2016-05-31 Koninklijke Philips N.V. Method, device, system, token creating authorized domains
US11283866B2 (en) 2014-07-07 2022-03-22 Citrix Systems, Inc. Providing remote access to applications through interface hooks

Families Citing this family (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7216225B2 (en) * 2000-05-24 2007-05-08 Voltaire Ltd. Filtered application-to-application communication
US7117239B1 (en) 2000-07-28 2006-10-03 Axeda Corporation Reporting the state of an apparatus to a remote computer
AU2001292738A1 (en) * 2000-09-19 2002-04-02 Phatnoise, Inc. Device-to-device network
US8108543B2 (en) 2000-09-22 2012-01-31 Axeda Corporation Retrieving data from a server
US7185014B1 (en) 2000-09-22 2007-02-27 Axeda Corporation Retrieving data from a server
US8095624B2 (en) 2000-12-28 2012-01-10 CenterBeam Inc. Architecture for serving and managing independent access devices
JP2002278903A (en) * 2001-03-15 2002-09-27 Sony Corp Information processor, information processing method, recording medium and program
US7231486B2 (en) * 2001-08-24 2007-06-12 Intel Corporation General input/output architecture, protocol and related methods to support legacy interrupts
US9836424B2 (en) 2001-08-24 2017-12-05 Intel Corporation General input/output architecture, protocol and related methods to implement flow control
JP2003067274A (en) * 2001-08-27 2003-03-07 Murata Mach Ltd Client device and processing server
US20030088714A1 (en) * 2001-10-15 2003-05-08 Scott Madlener User internet interface
US7254601B2 (en) 2001-12-20 2007-08-07 Questra Corporation Method and apparatus for managing intelligent assets in a distributed environment
US6996620B2 (en) * 2002-01-09 2006-02-07 International Business Machines Corporation System and method for concurrent security connections
US8135843B2 (en) 2002-03-22 2012-03-13 Citrix Systems, Inc. Methods and systems for providing access to an application
US7178149B2 (en) 2002-04-17 2007-02-13 Axeda Corporation XML scripting of soap commands
GB2388002B (en) * 2002-04-26 2004-05-12 Oracle Int Corp Graphical modelling system
US9171049B2 (en) * 2002-06-13 2015-10-27 Salesforce.Com, Inc. Offline simulation of online session between client and server
US20080313282A1 (en) 2002-09-10 2008-12-18 Warila Bruce W User interface, operating system and architecture
US7966418B2 (en) 2003-02-21 2011-06-21 Axeda Corporation Establishing a virtual tunnel between two computer programs
US8082339B2 (en) * 2003-02-28 2011-12-20 Hewlett-Packard Development Company, L.P. Electronic device network having graceful denial of service
US7287083B1 (en) * 2003-03-20 2007-10-23 Novell, Inc. Computing environment failover in a branch office environment
US7698435B1 (en) * 2003-04-15 2010-04-13 Sprint Spectrum L.P. Distributed interactive media system and method
US7305375B2 (en) * 2003-04-23 2007-12-04 Hewlett-Packard Development Company, L.P. Method and system for distributed remote resources
US7702668B2 (en) * 2003-06-16 2010-04-20 Microsoft Corporation Asset composition
US7562154B2 (en) * 2003-06-30 2009-07-14 International Business Machines Corporation System and method for filtering stale messages resulting from membership changes in a distributed computing environment
US7475125B2 (en) * 2003-11-24 2009-01-06 Microsoft Corporation Seamless discovery of workstation-installed remote applications from an extranet
US7823192B1 (en) * 2004-04-01 2010-10-26 Sprint Communications Company L.P. Application-to-application security in enterprise security services
FR2870022B1 (en) * 2004-05-07 2007-02-02 Canon Kk METHOD AND DEVICE FOR DISTRIBUTING DIGITAL DATA, IN PARTICULAR FOR A PAIR-A-PAIR NETWORK
US8095940B2 (en) 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US7680758B2 (en) 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US8117559B2 (en) 2004-09-30 2012-02-14 Citrix Systems, Inc. Method and apparatus for virtualizing window information
US8171479B2 (en) 2004-09-30 2012-05-01 Citrix Systems, Inc. Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers
US7853947B2 (en) * 2004-09-30 2010-12-14 Citrix Systems, Inc. System for virtualizing access to named system objects using rule action associated with request
US7752600B2 (en) * 2004-09-30 2010-07-06 Citrix Systems, Inc. Method and apparatus for providing file-type associations to multiple applications
US20070083620A1 (en) * 2005-10-07 2007-04-12 Pedersen Bradley J Methods for selecting between a predetermined number of execution methods for an application program
US8131825B2 (en) 2005-10-07 2012-03-06 Citrix Systems, Inc. Method and a system for responding locally to requests for file metadata associated with files stored remotely
US7779034B2 (en) 2005-10-07 2010-08-17 Citrix Systems, Inc. Method and system for accessing a remote file in a directory structure associated with an application program executing locally
AU2006302674A1 (en) * 2005-10-07 2007-04-19 Citrix Systems, Inc. Methods for selecting between a predetermined number of execution methods for an application program
US20070169165A1 (en) * 2005-12-22 2007-07-19 Crull Robert W Social network-enabled interactive media player
US8732284B2 (en) * 2006-01-06 2014-05-20 Apple Inc. Data serialization in a user switching environment
US7802243B1 (en) * 2006-04-20 2010-09-21 Open Invention Network Llc System and method for server customization
US20070274314A1 (en) * 2006-05-23 2007-11-29 Werber Ryan A System and method for creating application groups
US8555350B1 (en) * 2006-06-23 2013-10-08 Cisco Technology, Inc. System and method for ensuring persistent communications between a client and an authentication server
US8370479B2 (en) 2006-10-03 2013-02-05 Axeda Acquisition Corporation System and method for dynamically grouping devices based on present device conditions
US8065397B2 (en) 2006-12-26 2011-11-22 Axeda Acquisition Corporation Managing configurations of distributed devices
US8341651B2 (en) 2007-01-10 2012-12-25 Microsoft Corporation Integrating enterprise search systems with custom access control application programming interfaces
GB0707492D0 (en) * 2007-04-18 2007-05-23 Canon Europa Nv A print apparatus, a method of controlling printing, and a program
US8024407B2 (en) * 2007-10-17 2011-09-20 Citrix Systems, Inc. Methods and systems for providing access, from within a virtual world, to an external resource
US7925694B2 (en) 2007-10-19 2011-04-12 Citrix Systems, Inc. Systems and methods for managing cookies via HTTP content layer
US8171483B2 (en) 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
US7792934B2 (en) * 2008-01-02 2010-09-07 Citrix Systems International Gmbh Loading of server-stored user profile data
US8090877B2 (en) 2008-01-26 2012-01-03 Citrix Systems, Inc. Systems and methods for fine grain policy driven cookie proxying
US8169958B2 (en) * 2008-03-27 2012-05-01 Cisco Technology, Inc. Obtaining information regarding services available from a wireless local area network
US8837465B2 (en) 2008-04-02 2014-09-16 Twilio, Inc. System and method for processing telephony sessions
EP3484135A1 (en) 2008-04-02 2019-05-15 Twilio Inc. System and method for processing telephony sessions
US8964726B2 (en) 2008-10-01 2015-02-24 Twilio, Inc. Telephony web event system and method
US9270785B2 (en) 2008-12-18 2016-02-23 Citrix Systems, Inc. System and method for a distributed virtual desktop infrastructure
WO2010101935A1 (en) 2009-03-02 2010-09-10 Twilio Inc. Method and system for a multitenancy telephone network
US9152401B2 (en) * 2009-05-02 2015-10-06 Citrix Systems, Inc. Methods and systems for generating and delivering an interactive application delivery store
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
US9210275B2 (en) 2009-10-07 2015-12-08 Twilio, Inc. System and method for running a multi-module telephony application
US9054913B1 (en) 2009-11-30 2015-06-09 Dell Software Inc. Network protocol proxy
KR101633366B1 (en) * 2010-04-09 2016-06-24 삼성전자주식회사 Method and system for providing application store service
US20120208495A1 (en) 2010-06-23 2012-08-16 Twilio, Inc. System and method for monitoring account usage on a platform
US9590849B2 (en) 2010-06-23 2017-03-07 Twilio, Inc. System and method for managing a computing cluster
US8838707B2 (en) 2010-06-25 2014-09-16 Twilio, Inc. System and method for enabling real-time eventing
KR101662660B1 (en) * 2010-09-30 2016-10-06 삼성전자주식회사 Server and service method thereof
US20120117490A1 (en) * 2010-11-10 2012-05-10 Harwood William T Methods and systems for providing access, from within a virtual world, to an external resource
US8649268B2 (en) 2011-02-04 2014-02-11 Twilio, Inc. Method for processing telephony sessions of a network
WO2012162397A1 (en) 2011-05-23 2012-11-29 Twilio, Inc. System and method for connecting a communication to a client
US9648006B2 (en) 2011-05-23 2017-05-09 Twilio, Inc. System and method for communicating with a client application
US20140044123A1 (en) 2011-05-23 2014-02-13 Twilio, Inc. System and method for real time communicating with a client application
JP2013025671A (en) * 2011-07-25 2013-02-04 Fujitsu Ltd Server device, control method for server device, control program for server device, and computer
US10182147B2 (en) 2011-09-21 2019-01-15 Twilio Inc. System and method for determining and communicating presence information
JP5733136B2 (en) 2011-09-26 2015-06-10 富士通株式会社 Information processing apparatus control method, control program, and information processing apparatus
WO2013056228A1 (en) * 2011-10-13 2013-04-18 Citrix Systems, Inc. System and method for a distributed virtual desktop infrastructure
US9495227B2 (en) 2012-02-10 2016-11-15 Twilio, Inc. System and method for managing concurrent events
US9602586B2 (en) 2012-05-09 2017-03-21 Twilio, Inc. System and method for managing media in a distributed communication network
US9247062B2 (en) 2012-06-19 2016-01-26 Twilio, Inc. System and method for queuing a communication session
US8737962B2 (en) 2012-07-24 2014-05-27 Twilio, Inc. Method and system for preventing illicit use of a telephony platform
US8938053B2 (en) 2012-10-15 2015-01-20 Twilio, Inc. System and method for triggering on platform usage
US8948356B2 (en) 2012-10-15 2015-02-03 Twilio, Inc. System and method for routing communications
US9282124B2 (en) 2013-03-14 2016-03-08 Twilio, Inc. System and method for integrating session initiation protocol communication in a telecommunications platform
US9225840B2 (en) 2013-06-19 2015-12-29 Twilio, Inc. System and method for providing a communication endpoint information service
US9240966B2 (en) 2013-06-19 2016-01-19 Twilio, Inc. System and method for transmitting and receiving media messages
US9380040B1 (en) * 2013-07-11 2016-06-28 Parallels IP Holdings GmbH Method for downloading preauthorized applications to desktop computer using secure connection
US9274858B2 (en) 2013-09-17 2016-03-01 Twilio, Inc. System and method for tagging and tracking events of an application platform
US9137127B2 (en) 2013-09-17 2015-09-15 Twilio, Inc. System and method for providing communication platform metadata
US9553799B2 (en) 2013-11-12 2017-01-24 Twilio, Inc. System and method for client communication in a distributed telephony network
US9325624B2 (en) 2013-11-12 2016-04-26 Twilio, Inc. System and method for enabling dynamic multi-modal communication
US10044787B1 (en) * 2013-11-20 2018-08-07 Simon Frazier File transfer in a multi-node network
US9344573B2 (en) 2014-03-14 2016-05-17 Twilio, Inc. System and method for a work distribution service
US9226217B2 (en) 2014-04-17 2015-12-29 Twilio, Inc. System and method for enabling multi-modal communication
US9246694B1 (en) 2014-07-07 2016-01-26 Twilio, Inc. System and method for managing conferencing in a distributed communication network
US9251371B2 (en) 2014-07-07 2016-02-02 Twilio, Inc. Method and system for applying data retention policies in a computing platform
US9774687B2 (en) 2014-07-07 2017-09-26 Twilio, Inc. System and method for managing media and signaling in a communication platform
US9516101B2 (en) 2014-07-07 2016-12-06 Twilio, Inc. System and method for collecting feedback in a multi-tenant communication platform
EP3210350B1 (en) 2014-10-21 2020-05-20 Twilio, Inc. Method for providing a miro-services communication platform
US9477975B2 (en) * 2015-02-03 2016-10-25 Twilio, Inc. System and method for a media intelligence platform
US9948703B2 (en) 2015-05-14 2018-04-17 Twilio, Inc. System and method for signaling through data storage
US10419891B2 (en) 2015-05-14 2019-09-17 Twilio, Inc. System and method for communicating through multiple endpoints
US10659349B2 (en) 2016-02-04 2020-05-19 Twilio Inc. Systems and methods for providing secure network exchanged for a multitenant virtual private cloud
US10686902B2 (en) 2016-05-23 2020-06-16 Twilio Inc. System and method for a multi-channel notification service
US10063713B2 (en) 2016-05-23 2018-08-28 Twilio Inc. System and method for programmatic device connectivity

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997018635A2 (en) * 1995-11-14 1997-05-22 International Business Machines Corporation Multiprotocol communication between a generic web browser and several access servers
US5689708A (en) * 1995-03-31 1997-11-18 Showcase Corporation Client/server computer systems having control of client-based application programs, and application-program control means therefor
US5729734A (en) * 1995-11-03 1998-03-17 Apple Computer, Inc. File privilege administration apparatus and methods
US5737592A (en) * 1995-06-19 1998-04-07 International Business Machines Corporation Accessing a relational database over the Internet using macro language files
US5794207A (en) * 1996-09-04 1998-08-11 Walker Asset Management Limited Partnership Method and apparatus for a cryptographically assisted commercial network system designed to facilitate buyer-driven conditional purchase offers
AU5303198A (en) * 1997-02-21 1998-08-27 Dudley John Mills Network-based classified information systems
US5826027A (en) * 1995-10-11 1998-10-20 Citrix Systems, Inc. Method for supporting an extensible and dynamically bindable protocol stack in a distrubited process system

Family Cites Families (259)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4387425A (en) 1980-05-19 1983-06-07 Data General Corporation Masterless and contentionless computer network
USRE32632E (en) 1982-07-19 1988-03-29 Apple Computer, Inc. Display system
US4499499A (en) 1982-12-29 1985-02-12 International Business Machines Corporation Method for identification and compression of facsimile symbols in text processing systems
US4779189A (en) 1985-06-28 1988-10-18 International Business Machines Corporation Peripheral subsystem initialization method and apparatus
JPS62282328A (en) 1986-02-21 1987-12-08 Hitachi Ltd Multiple picture control system
US4937036A (en) 1986-04-28 1990-06-26 Xerox Corporation Concurrent display of data from two different display processors and user interface therefore
JP2585535B2 (en) 1986-06-02 1997-02-26 株式会社日立製作所 Process connection method in compound computer system
US5062060A (en) 1987-01-05 1991-10-29 Motorola Inc. Computer human interface comprising user-adjustable window for displaying or printing information
US4887204A (en) 1987-02-13 1989-12-12 International Business Machines Corporation System and method for accessing remote files in a distributed networking environment
US5202971A (en) 1987-02-13 1993-04-13 International Business Machines Corporation System for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lock
US5175852A (en) 1987-02-13 1992-12-29 International Business Machines Corporation Distributed file access structure lock
US5072412A (en) 1987-03-25 1991-12-10 Xerox Corporation User interface with multiple workspaces for sharing display system objects
US4949281A (en) 1987-04-23 1990-08-14 H. Berthold Ag Method and apparatus for generating and producing two-dimensional graphic object by polynominal parametric curves
US4903218A (en) 1987-08-13 1990-02-20 Digital Equipment Corporation Console emulation for a graphics workstation
US5367688A (en) 1987-09-04 1994-11-22 Digital Equipment Corporation Boot system for distributed digital data processing system
US4974173A (en) 1987-12-02 1990-11-27 Xerox Corporation Small-scale workspace representations indicating activities by other users
US5014221A (en) 1988-01-29 1991-05-07 Digital Equipment Corporation Mechanism for arbitrating client access to a networked print server
JPH01246656A (en) 1988-03-29 1989-10-02 Nec Corp Inter-processor sharing memory control system
US5103303A (en) 1988-04-19 1992-04-07 Konica Corporation Multicolor imaging forming apparatus
US4958303A (en) 1988-05-12 1990-09-18 Digital Equipment Corporation Apparatus for exchanging pixel data among pixel processors
US4949248A (en) 1988-07-15 1990-08-14 Caro Marshall A System for shared remote access of multiple application programs executing in one or more computers
US5155847A (en) 1988-08-03 1992-10-13 Minicom Data Corporation Method and apparatus for updating software at remote locations
US5255361A (en) 1988-12-19 1993-10-19 International Business Machines Corporation Method of and system for updating a display unit
US5031089A (en) 1988-12-30 1991-07-09 United States Of America As Represented By The Administrator, National Aeronautics And Space Administration Dynamic resource allocation scheme for distributed heterogeneous computer systems
EP0381645A3 (en) 1989-01-18 1992-08-05 International Business Machines Corporation System and method for communicating between a plurality of processors
US5349678A (en) * 1991-08-21 1994-09-20 Norand Corporation Versatile RF data capture system
DE69030340T2 (en) 1989-02-24 1997-11-20 Digital Equipment Corp Broker for the selection of computer network servers
US5341477A (en) 1989-02-24 1994-08-23 Digital Equipment Corporation Broker for computer network server selection
KR930003126B1 (en) 1989-04-20 1993-04-19 가부시기가이샤 도시바 Method and system for detemining connection states of straight short vectors
US5305440A (en) 1989-05-15 1994-04-19 International Business Machines Corporation File extension by clients in a distributed data processing system
US5187790A (en) 1989-06-29 1993-02-16 Digital Equipment Corporation Server impersonation of client processes in an object based computer operating system
EP0414624B1 (en) 1989-08-24 1996-12-18 International Business Machines Corporation System for calling procedures on a remote network node
US5119319A (en) 1989-12-14 1992-06-02 Options Unlimited Research Corp. Full-duplex video communication system
US5301270A (en) 1989-12-18 1994-04-05 Anderson Consulting Computer-assisted software engineering system for cooperative processing environments
US5309555A (en) 1990-05-15 1994-05-03 International Business Machines Corporation Realtime communication of hand drawn images in a multiprogramming window environment
CA2041992A1 (en) 1990-05-18 1991-11-19 Yeshayahu Artsy Routing objects on action paths in a distributed computing system
EP0463251A1 (en) 1990-06-28 1992-01-02 International Business Machines Corporation Software installation
AU639802B2 (en) 1990-08-14 1993-08-05 Oracle International Corporation Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment
EP0475581A3 (en) 1990-08-30 1993-06-23 Hewlett-Packard Company Method and apparatus for window sharing between computer displays
US5583992A (en) 1990-09-14 1996-12-10 Kabushiki Kaisha Toshiba Computer network system for detecting global deadlock
US5303198A (en) 1990-09-28 1994-04-12 Fuji Photo Film Co., Ltd. Method of recording data in memory card having EEPROM and memory card system using the same
US5204947A (en) 1990-10-31 1993-04-20 International Business Machines Corporation Application independent (open) hypermedia enablement services
US5241625A (en) 1990-11-27 1993-08-31 Farallon Computing, Inc. Screen image sharing among heterogeneous computers
EP0773685B1 (en) 1990-12-26 2002-06-05 Canon Kabushiki Kaisha Multi-media communication apparatus
US5249290A (en) 1991-02-22 1993-09-28 At&T Bell Laboratories Method of and apparatus for operating a client/server computer network
JPH04271454A (en) 1991-02-27 1992-09-28 Toshiba Corp Loosely-coupled computer system
JPH04311252A (en) * 1991-04-10 1992-11-04 Hitachi Ltd Method, system and terminal equipment for processing information utilizing network
JPH04342055A (en) * 1991-05-20 1992-11-27 Nec Corp User certifying method for plural computer systems
CA2069355C (en) 1991-06-07 1998-10-06 Robert C. Pike Global user interface
US5559958A (en) * 1991-06-24 1996-09-24 Compaq Computer Corporation Graphical user interface for computer management system and an associated management information base
US5204897A (en) 1991-06-28 1993-04-20 Digital Equipment Corporation Management interface for license management system
JPH0546568A (en) 1991-08-08 1993-02-26 Internatl Business Mach Corp <Ibm> Dispersion application execution device and method
IL99923A0 (en) 1991-10-31 1992-08-18 Ibm Israel Method of operating a computer in a network
US5315711A (en) 1991-11-01 1994-05-24 Unisys Corporation Method and apparatus for remotely and centrally controlling a plurality of host processors
US5619716A (en) 1991-11-05 1997-04-08 Hitachi, Ltd. Information processing system having a configuration management system for managing the software of the information processing system
US5351129A (en) 1992-03-24 1994-09-27 Rgb Technology D/B/A Rgb Spectrum Video multiplexor-encoder and decoder-converter
WO1993020511A1 (en) * 1992-03-31 1993-10-14 Aggregate Computing, Inc. An integrated remote execution system for a heterogenous computer network environment
FR2690260B1 (en) 1992-04-17 1997-01-03 Bull Sa USE OF A VERY HIGH LEVEL BIDIRECTIONAL PROTOCOL FOR COMMUNICATION BETWEEN A HYPERMEDIA SYSTEM AND A PLURALITY OF EDITORS.
WO1993025962A1 (en) 1992-06-18 1993-12-23 International Business Machines Corporation Distributed applications processing network
US5440719A (en) 1992-10-27 1995-08-08 Cadence Design Systems, Inc. Method simulating data traffic on network in accordance with a client/sewer paradigm
US5329619A (en) 1992-10-30 1994-07-12 Software Ag Cooperative processing interface and communication broker for heterogeneous computing environments
JP3553987B2 (en) 1992-11-13 2004-08-11 株式会社日立製作所 Client server system
JP2505974B2 (en) 1992-12-08 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション A method for integrating multiple application programs into an integrated graphical user interface processing environment.
US5566302A (en) 1992-12-21 1996-10-15 Sun Microsystems, Inc. Method for executing operation call from client application using shared memory region and establishing shared memory region when the shared memory region does not exist
US5572674A (en) 1993-01-07 1996-11-05 Bmc Software, Inc. Method of dynamically adjusting SNA network control program parameters
US5325527A (en) 1993-01-19 1994-06-28 Canon Information Systems, Inc. Client/server communication system utilizing a self-generating nodal network
US5469540A (en) 1993-01-27 1995-11-21 Apple Computer, Inc. Method and apparatus for generating and displaying multiple simultaneously-active windows
US5671379A (en) 1993-01-29 1997-09-23 International Business Machines Corporation System and method for managing windows
US5459837A (en) * 1993-04-21 1995-10-17 Digital Equipment Corporation System to facilitate efficient utilization of network resources in a computer network
US5930473A (en) * 1993-06-24 1999-07-27 Teng; Peter Video application server for mediating live video services
JP2576762B2 (en) 1993-06-30 1997-01-29 日本電気株式会社 Information collection method between nodes in ring network
EP0746816B1 (en) 1993-08-03 2001-10-24 Sun Microsystems, Inc. Flexible multi-platform partitioning for computer applications
US5359593A (en) 1993-08-26 1994-10-25 International Business Machines Corporation Dynamic bandwidth estimation and adaptation for packet communications networks
US5844553A (en) 1993-08-30 1998-12-01 Hewlett-Packard Company Mechanism to control and use window events among applications in concurrent computing
DE4417588A1 (en) 1993-08-30 1995-03-02 Hewlett Packard Co Method and apparatus for capturing and forwarding window events to a plurality of existing applications for simultaneous execution
GB2281793A (en) 1993-09-11 1995-03-15 Ibm A data processing system for providing user load levelling in a network
US5553242A (en) 1993-11-03 1996-09-03 Wang Laboratories, Inc. Client/server connection sharing
US5574934A (en) 1993-11-24 1996-11-12 Intel Corporation Preemptive priority-based transmission of signals using virtual channels
US5548726A (en) 1993-12-17 1996-08-20 Taligeni, Inc. System for activating new service in client server network by reconfiguring the multilayer network protocol stack dynamically within the server node
US5515508A (en) 1993-12-17 1996-05-07 Taligent, Inc. Client server system and method of operation including a dynamically configurable protocol stack
US5499343A (en) 1993-12-17 1996-03-12 Taligent, Inc. Object-oriented networking system with dynamically configurable communication links
US5495411A (en) 1993-12-22 1996-02-27 Ananda; Mohan Secure software rental system using continuous asynchronous password verification
US5592626A (en) * 1994-02-07 1997-01-07 The Regents Of The University Of California System and method for selecting cache server based on transmission and storage factors for efficient delivery of multimedia information in a hierarchical network of servers
JP3454285B2 (en) 1994-02-15 2003-10-06 富士ゼロックス株式会社 Data processing device and data processing method
US5473599A (en) 1994-04-22 1995-12-05 Cisco Systems, Incorporated Standby router protocol
CA2145921A1 (en) 1994-05-10 1995-11-11 Vijay Pochampalli Kumar Method and apparatus for executing a distributed algorithm or service on a simple network management protocol based computer network
US5596745A (en) 1994-05-16 1997-01-21 International Business Machines Corporation System and procedure for concurrent database access by multiple user applications through shared connection processes
US5594490A (en) 1994-05-23 1997-01-14 Cable Services Technologies, Inc. System for distributing video/audio files from central location to a plurality of cable headends
US5517617A (en) 1994-06-29 1996-05-14 Digital Equipment Corporation Automatic assignment of addresses in a computer communications network
EP0692891A1 (en) 1994-07-12 1996-01-17 T.R.T. Telecommunications Radioelectriques Et Telephoniques System and equipment for the interconnection of LAN's using a source routing protocol
US5655218A (en) 1994-07-29 1997-08-05 Motorola, Inc. Radiotelephone communication unit displaying chronological information
JP3160830B2 (en) * 1994-08-02 2001-04-25 日本電信電話株式会社 Multimedia system access method, access method and connection control device
US5557732A (en) 1994-08-11 1996-09-17 International Business Machines Corporation Method and apparatus for protecting software executing on a demonstration computer
US5485460A (en) 1994-08-19 1996-01-16 Microsoft Corporation System and method for running multiple incompatible network protocol stacks
TW252248B (en) 1994-08-23 1995-07-21 Ibm A semiconductor memory based server for providing multimedia information on demand over wide area networks
US5541927A (en) 1994-08-24 1996-07-30 At&T Corp. Method of multicasting
AUPM813394A0 (en) 1994-09-14 1994-10-06 Dolphin Software Pty Ltd A method and apparatus for preparation of a database document in a local processing apparatus and loading of the database document with data from remote sources
US5586312A (en) 1994-10-11 1996-12-17 Unisys Corporation Method and apparatus for using an independent transaction processing application as a service routine
US5838906A (en) 1994-10-17 1998-11-17 The Regents Of The University Of California Distributed hypermedia method for automatically invoking external application providing interaction and display of embedded objects within a hypermedia document
US5913920A (en) 1994-12-13 1999-06-22 International Business Machines Corporation Indicating updates from a remote display
US5623656A (en) 1994-12-15 1997-04-22 Lucent Technologies Inc. Script-based data communication system and method utilizing state memory
EP0718784B1 (en) 1994-12-20 2003-08-27 Sun Microsystems, Inc. Method and system for the retrieval of personalized information
US5530852A (en) 1994-12-20 1996-06-25 Sun Microsystems, Inc. Method for extracting profiles and topics from a first file written in a first markup language and generating files in different markup languages containing the profiles and topics for use in accessing data described by the profiles and topics
US5680549A (en) 1994-12-30 1997-10-21 Compuserve Incorporated System for transferring network connections from first to second program where the first enters an inactive state and resumes control of connections when second terminates
US5583563A (en) 1995-01-12 1996-12-10 Us West Marketing Resources Group, Inc. Method and system for delivering an application in an interactive television network
US5682478A (en) 1995-01-19 1997-10-28 Microsoft Corporation Method and apparatus for supporting multiple, simultaneous services over multiple, simultaneous connections between a client and network server
US5557748A (en) 1995-02-03 1996-09-17 Intel Corporation Dynamic network configuration
JPH08235114A (en) * 1995-02-28 1996-09-13 Hitachi Ltd Server access method and charge information managing method
US5819093A (en) 1995-03-03 1998-10-06 Sun Microsystems, Inc. System and method for a distributed debugger for debugging distributed application programs
US5655081A (en) * 1995-03-08 1997-08-05 Bmc Software, Inc. System for monitoring and managing computer resources and applications across a distributed computing environment using an intelligent autonomous agent architecture
US5857102A (en) 1995-03-14 1999-01-05 Sun Microsystems, Inc. System and method for determining and manipulating configuration information of servers in a distributed object environment
US5870552A (en) * 1995-03-28 1999-02-09 America Online, Inc. Method and apparatus for publishing hypermedia documents over wide area networks
US5721876A (en) 1995-03-30 1998-02-24 Bull Hn Information Systems Inc. Sockets application program mechanism for proprietary based application programs running in an emulation environment
US5666501A (en) 1995-03-30 1997-09-09 International Business Machines Corporation Method and apparatus for installing software
US5692183A (en) 1995-03-31 1997-11-25 Sun Microsystems, Inc. Methods and apparatus for providing transparent persistence in a distributed object operating environment
US5710918A (en) 1995-06-07 1998-01-20 International Business Machines Corporation Method for distributed task fulfillment of web browser requests
US5734865A (en) 1995-06-07 1998-03-31 Bull Hn Information Systems Inc. Virtual local area network well-known port routing mechanism for mult--emulators in an open system environment
US5774668A (en) 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
US5701451A (en) 1995-06-07 1997-12-23 International Business Machines Corporation Method for fulfilling requests of a web browser
JP3535267B2 (en) 1995-07-03 2004-06-07 富士通株式会社 Monitoring system display device for monitoring system
US5874960A (en) 1995-07-05 1999-02-23 Microsoft Corporation Method and system for sharing applications between computer systems
JP3137173B2 (en) * 1995-07-20 2001-02-19 富士ゼロックス株式会社 Authentication information management device
US5644720A (en) * 1995-07-31 1997-07-01 West Publishing Company Interprocess communications interface for managing transaction requests
US5767849A (en) 1995-08-18 1998-06-16 International Business Machines Corporation Personality neutral window management subsystem
US5657390A (en) 1995-08-25 1997-08-12 Netscape Communications Corporation Secure socket layer application program apparatus and method
JPH0997227A (en) * 1995-09-29 1997-04-08 Fujitsu Ltd Job operating system for client/server style
US5758186A (en) 1995-10-06 1998-05-26 Sun Microsystems, Inc. Method and apparatus for generically handling diverse protocol method calls in a client/server computer system
US5913060A (en) 1995-10-11 1999-06-15 Citrix Systems, Inc. Method for deadlock avoidance in a distributed process system using a synchronous procedure call
JPH09114783A (en) * 1995-10-13 1997-05-02 Sony Corp Device and method for processing information
US5572643A (en) 1995-10-19 1996-11-05 Judson; David H. Web browser with dynamic display of information objects during linking
US5802306A (en) 1995-10-31 1998-09-01 International Business Machines Corporation Supporting multiple client-server sessions from a protocol stack associated with a single physical adapter through use of a plurality of logical adapters
US7555529B2 (en) 1995-11-13 2009-06-30 Citrix Systems, Inc. Interacting with software applications displayed in a web page
US6088515A (en) * 1995-11-13 2000-07-11 Citrix Systems Inc Method and apparatus for making a hypermedium interactive
US6950991B2 (en) 1995-11-13 2005-09-27 Citrix Systems, Inc. Interacting with software applications displayed in a web page
US5684861A (en) 1995-12-04 1997-11-04 Lewis; Walter F. Apparatus and method for monitoring cellular telephone usage
US6161126A (en) 1995-12-13 2000-12-12 Immersion Corporation Implementing force feedback over the World Wide Web and other computer networks
US6101531A (en) 1995-12-19 2000-08-08 Motorola, Inc. System for communicating user-selected criteria filter prepared at wireless client to communication server for filtering data transferred from host to said wireless client
US5748896A (en) * 1995-12-27 1998-05-05 Apple Computer, Inc. Remote network administration methods and apparatus
US5706437A (en) 1995-12-29 1998-01-06 Mci Communications Corporation System and method for accessing a service on a services network
DE19602718B4 (en) 1996-01-26 2004-03-25 Loewe Opta Gmbh Method for influencing at least the connection establishment of a telecommunication terminal to a telephone network and circuit arrangement therefor
US5862348A (en) * 1996-02-09 1999-01-19 Citrix Systems, Inc. Method and apparatus for connecting a client node to a server node based on load levels
JPH09233467A (en) 1996-02-21 1997-09-05 Fujitsu Ltd Image data communication equipment and communication data amount control method for image data communication system
US5961588A (en) 1996-02-22 1999-10-05 Alcatel Usa Sourcing, L.P. Handling of commands passed between the server and client stations of a telecommunications system
US6167432A (en) 1996-02-29 2000-12-26 Webex Communications, Inc., Method for creating peer-to-peer connections over an interconnected network to facilitate conferencing among users
US5761507A (en) 1996-03-05 1998-06-02 International Business Machines Corporation Client/server architecture supporting concurrent servers within a server with a transaction manager providing server/connection decoupling
US5764915A (en) 1996-03-08 1998-06-09 International Business Machines Corporation Object-oriented communication interface for network protocol access using the selected newly created protocol interface object and newly created protocol layer objects in the protocol stack
US5938733A (en) 1996-03-08 1999-08-17 International Business Machines Corporation Object oriented representation of network requests in a client server model
US5838910A (en) * 1996-03-14 1998-11-17 Domenikos; Steven D. Systems and methods for executing application programs from a memory device linked to a server at an internet site
US5748892A (en) 1996-03-25 1998-05-05 Citrix Systems, Inc. Method and apparatus for client managed flow control on a limited memory computer system
US5625683A (en) 1996-03-25 1997-04-29 Motorola, Inc. Method of and telephone with call-reminding and auto-dialing
US6101528A (en) * 1996-03-27 2000-08-08 Intel Corporation Method and apparatus for discovering server applications by a client application in a network of computer systems
US5754830A (en) 1996-04-01 1998-05-19 Openconnect Systems, Incorporated Server and web browser terminal emulator for persistent connection to a legacy host system and method of operation
US5905866A (en) * 1996-04-30 1999-05-18 A.I. Soft Corporation Data-update monitoring in communications network
US5802258A (en) 1996-05-03 1998-09-01 International Business Machines Corporation Loosely coupled system environment designed to handle a non-disruptive host connection switch after detection of an error condition or during a host outage or failure
US5864678A (en) 1996-05-08 1999-01-26 Apple Computer, Inc. System for detecting and reporting data flow imbalance between computers using grab rate outflow rate arrival rate and play rate
JP4086340B2 (en) * 1996-05-17 2008-05-14 富士通株式会社 Network authentication system
US6034689A (en) 1996-06-03 2000-03-07 Webtv Networks, Inc. Web browser allowing navigation between hypertext objects using remote control
US5918013A (en) * 1996-06-03 1999-06-29 Webtv Networks, Inc. Method of transcoding documents in a network environment using a proxy server
US6175854B1 (en) 1996-06-11 2001-01-16 Ameritech Services, Inc. Computer system architecture and method for multi-user, real-time applications
US6014133A (en) 1996-06-14 2000-01-11 Seiko Epson Corporation Data transmitter/receiver apparatus, data transmitter, data receiver, and data compression method
US5881241A (en) 1996-06-19 1999-03-09 Sun Microsystems, Inc. System for transmitting data packet after matching data packet's routing pattern with predetermined data routes stored in a route table
US6272556B1 (en) 1996-07-01 2001-08-07 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for migrating a client-server application (#5)
US6031533A (en) * 1996-07-03 2000-02-29 Sun Microsystems, Inc. Graphical user interface for use in a de-centralized network environment
KR100203266B1 (en) 1996-07-09 1999-06-15 윤종용 A contour decoding apparatus
US5764908A (en) 1996-07-12 1998-06-09 Sofmap Future Design, Inc. Network system containing program modules residing in different computers and executing commands without return results to calling modules
US5757925A (en) 1996-07-23 1998-05-26 Faybishenko; Yaroslav Secure platform independent cross-platform remote execution computer system and method
US6115744A (en) * 1996-07-30 2000-09-05 Bea Systems, Inc. Client object API and gateway to enable OLTP via the internet
US5828840A (en) 1996-08-06 1998-10-27 Verifone, Inc. Server for starting client application on client if client is network terminal and initiating client application on server if client is non network terminal
EP0853788A1 (en) 1996-08-08 1998-07-22 Agranat Systems, Inc. Embedded web server
US5898835A (en) 1996-08-16 1999-04-27 Electronic Data Systems Corporation System and method for remotely executing a command
US5842206A (en) 1996-08-20 1998-11-24 Iconovex Corporation Computerized method and system for qualified searching of electronically stored documents
US5805166A (en) * 1996-08-23 1998-09-08 Intenational Business Machines Corp. Segmented status area for dynamically reporting status in a data processing system
US6195678B1 (en) * 1996-09-03 2001-02-27 Fujitsu Limited Remote resource management system for automatically downloading required files from application server depending on contents of selected files on requesting computer
US5979757A (en) 1996-09-05 1999-11-09 Symbol Technologies, Inc. Method and system for presenting item information using a portable data terminal
US5944791A (en) 1996-10-04 1999-08-31 Contigo Software Llc Collaborative web browser
US5960409A (en) 1996-10-11 1999-09-28 Wexler; Daniel D. Third-party on-line accounting system and method therefor
US5884046A (en) 1996-10-23 1999-03-16 Pluris, Inc. Apparatus and method for sharing data and routing messages between a plurality of workstations in a local area network
GB9623298D0 (en) 1996-11-08 1997-01-08 Int Computers Ltd Updating mechanism for software
US5870545A (en) 1996-12-05 1999-02-09 Hewlett-Packard Company System and method for performing flexible workflow process compensation in a distributed workflow management system
US6061695A (en) * 1996-12-06 2000-05-09 Microsoft Corporation Operating system shell having a windowing graphical user interface with a desktop displayed as a hypertext multimedia document
US6065059A (en) * 1996-12-10 2000-05-16 International Business Machines Corporation Filtered utilization of internet data transfers to reduce delay and increase user control
US6067568A (en) 1996-12-10 2000-05-23 International Business Machines Corporation Automatic setup of services for computer system users
US6131116A (en) 1996-12-13 2000-10-10 Visto Corporation System and method for globally accessing computer services
US5889942A (en) 1996-12-18 1999-03-30 Orenshteyn; Alexander S. Secured system for accessing application services from a remote station
US6374237B1 (en) * 1996-12-24 2002-04-16 Intel Corporation Data set selection based upon user profile
US5978847A (en) 1996-12-26 1999-11-02 Intel Corporation Attribute pre-fetch of web pages
US5941988A (en) 1997-01-27 1999-08-24 International Business Machines Corporation Session and transport layer proxies via TCP glue
GB2321729B (en) 1997-02-04 2001-06-13 Ibm Data processing system, method, and server
US5790977A (en) 1997-02-06 1998-08-04 Hewlett-Packard Company Data acquisition from a remote instrument via the internet
US5923842A (en) 1997-03-06 1999-07-13 Citrix Systems, Inc. Method and apparatus for simultaneously providing anonymous user login for multiple users
JP3884123B2 (en) * 1997-03-11 2007-02-21 富士通株式会社 Access method to various services using network
US6067580A (en) * 1997-03-11 2000-05-23 International Business Machines Corporation Integrating distributed computing environment remote procedure calls with an advisory work load manager
US5949975A (en) 1997-03-12 1999-09-07 Microsoft Corp. Method and system for negotiating capabilities when sharing an application program with multiple computer systems
US5978848A (en) 1997-03-14 1999-11-02 International Business Machines Corporation Web browser method and system for backgrounding a link access during slow link access time periods
US6023507A (en) * 1997-03-17 2000-02-08 Sun Microsystems, Inc. Automatic remote computer monitoring system
US6263377B1 (en) 1997-03-28 2001-07-17 International Business Machines Corporation Method for managing distributed applications and distributed application manager
GB2323946B (en) 1997-04-04 2002-04-17 Sony Uk Ltd Database accessing method and apparatus
JPH10301874A (en) 1997-04-22 1998-11-13 Internatl Business Mach Corp <Ibm> Remote operation method, server remotely operated from terminal through network and storage medium storing html file
US6038599A (en) * 1997-04-23 2000-03-14 Mpath Interactive, Inc. Latency server and matchmaker
US6161145A (en) * 1997-05-08 2000-12-12 International Business Machines Corporation Updating server-related data at a client
US6157944A (en) 1997-05-14 2000-12-05 Citrix Systems, Inc. System and method for replicating a client/server data exchange to additional client notes connecting to the server
US6023721A (en) 1997-05-14 2000-02-08 Citrix Systems, Inc. Method and system for allowing a single-user application executing in a multi-user environment to create objects having both user-global and system global visibility
US5961586A (en) 1997-05-14 1999-10-05 Citrix Systems, Inc. System and method for remotely executing an interpretive language application
US5941949A (en) 1997-05-14 1999-08-24 Citrix Systems, Inc. System and method for transmitting data from a server application to more than one client node
US5983190A (en) 1997-05-19 1999-11-09 Microsoft Corporation Client server animation system for managing interactive user interface characters
US6038596A (en) 1997-05-23 2000-03-14 International Business Machines Corporation Method and system in a network for decreasing performance degradation triggered by multiple user redundant input events
US5877757A (en) 1997-05-23 1999-03-02 International Business Machines Corporation Method and system for providing user help information in network applications
US6035337A (en) * 1997-05-30 2000-03-07 International Business Machines Corp. Method and system for managing data flow within a collaboration system using proximity determination modules
US5930804A (en) * 1997-06-09 1999-07-27 Philips Electronics North America Corporation Web-based biometric authentication system and method
US6292827B1 (en) 1997-06-20 2001-09-18 Shore Technologies (1999) Inc. Information transfer systems and method with dynamic distribution of data, control and management of information
US5999950A (en) 1997-08-11 1999-12-07 Webtv Networks, Inc. Japanese text input method using a keyboard with only base kana characters
US6078956A (en) * 1997-09-08 2000-06-20 International Business Machines Corporation World wide web end user response time monitor
US6393015B1 (en) * 1997-09-12 2002-05-21 Genesys Telecommunications Laboratories, Inc. Method and apparatus for automatic network connection between a small business and a client
US5940075A (en) 1997-09-30 1999-08-17 Unisys Corp. Method for extending the hypertext markup language (HTML) to support enterprise application data binding
US6125387A (en) 1997-09-30 2000-09-26 The United States Of America Represented By The Secretary Of The Navy Operating methods for robust computer systems permitting autonomously switching between alternative/redundant
US5848410A (en) 1997-10-08 1998-12-08 Hewlett Packard Company System and method for selective and continuous index generation
US6009410A (en) 1997-10-16 1999-12-28 At&T Corporation Method and system for presenting customized advertising to a user on the world wide web
US6185609B1 (en) 1997-10-24 2001-02-06 Sun Microsystems, Inc. Method, apparatus and program to provide client access to a management information service residing on a server in a computer network system
DE19747583B4 (en) * 1997-10-28 2006-04-20 Telefonaktiebolaget Lm Ericsson (Publ) Communication system and method
US6104392A (en) * 1997-11-13 2000-08-15 The Santa Cruz Operation, Inc. Method of displaying an application on a variety of client devices in a client/server network
US5999179A (en) 1997-11-17 1999-12-07 Fujitsu Limited Platform independent computer network management client
US5860068A (en) * 1997-12-04 1999-01-12 Petabyte Corporation Method and system for custom manufacture and delivery of a data product
US6157705A (en) * 1997-12-05 2000-12-05 E*Trade Group, Inc. Voice control of a server
US6141759A (en) * 1997-12-10 2000-10-31 Bmc Software, Inc. System and architecture for distributing, monitoring, and managing information requests on a computer network
US6154749A (en) * 1998-01-15 2000-11-28 At&T Corp. Distributed caching scheme for database systems
US6108712A (en) 1998-05-05 2000-08-22 International Business Machines Corp. Client-server system with central application management and providing export agent capability for retrofitting existing hardware and applications into the system
US6339826B2 (en) * 1998-05-05 2002-01-15 International Business Machines Corp. Client-server system for maintaining a user desktop consistent with server application user access permissions
US6023572A (en) * 1998-05-12 2000-02-08 Unisys Corporation Computer based system and method for modeling activities of people in an organization
US6308212B1 (en) 1998-05-29 2001-10-23 Hewlett-Packard Company Web user interface session and sharing of session environment information
US6289461B1 (en) 1998-06-09 2001-09-11 Placeware, Inc. Bi-directional process-to-process byte stream protocol
US6338086B1 (en) 1998-06-11 2002-01-08 Placeware, Inc. Collaborative object architecture
US6446109B2 (en) 1998-06-29 2002-09-03 Sun Microsystems, Inc. Application computing environment
US6256666B1 (en) 1998-07-14 2001-07-03 International Business Machines Corp. Method and system for remotely managing electronic mail attachments
US6266781B1 (en) 1998-07-20 2001-07-24 Academia Sinica Method and apparatus for providing failure detection and recovery with predetermined replication style for distributed applications in a network
US6157953A (en) * 1998-07-28 2000-12-05 Sun Microsystems, Inc. Authentication and access control in a management console program for managing services in a computer network
US6738809B1 (en) * 1998-08-21 2004-05-18 Nortel Networks Limited Network presence indicator for communications management
US6336138B1 (en) * 1998-08-25 2002-01-01 Hewlett-Packard Company Template-driven approach for generating models on network services
US6311205B1 (en) * 1998-10-19 2001-10-30 International Business Machines Corporation Persistent user groups on servers managed by central servers
US6409602B1 (en) 1998-11-06 2002-06-25 New Millenium Gaming Limited Slim terminal gaming system
US6510466B1 (en) * 1998-12-14 2003-01-21 International Business Machines Corporation Methods, systems and computer program products for centralized management of application programs on a network
US6272493B1 (en) 1999-01-21 2001-08-07 Wired Solutions, Llc System and method for facilitating a windows based content manifestation environment within a WWW browser
US6263363B1 (en) 1999-01-28 2001-07-17 Skydesk, Inc. System and method for creating an internet-accessible working replica of a home computer on a host server controllable by a user operating a remote access client computer
US6792605B1 (en) 1999-06-10 2004-09-14 Bow Street Software, Inc. Method and apparatus for providing web based services using an XML Runtime model to store state session data
WO2000079460A1 (en) 1999-06-23 2000-12-28 Webango, Inc. Method for buy-side bid management
US20010052932A1 (en) 1999-12-30 2001-12-20 Young Robert S. Digital film processing method and system
JP2001195465A (en) 2000-01-11 2001-07-19 Fuji Photo Film Co Ltd Output service system
US6654784B1 (en) 2000-01-14 2003-11-25 Nexaweb Technologies, Inc Computing architecture
US6271418B1 (en) * 2000-02-22 2001-08-07 Nippon Kayaku Co., Ltd. Process for preparing (hetero) aromatic substituted benzene derivatives
US7237114B1 (en) 2000-04-26 2007-06-26 Pronvest, Inc. Method and system for signing and authenticating electronic documents
US7028025B2 (en) 2000-05-26 2006-04-11 Citrix Sytems, Inc. Method and system for efficiently reducing graphical display data for transmission over a low bandwidth transport protocol mechanism
US7958185B2 (en) 2000-09-18 2011-06-07 Bentley Systems, Inc. Spatial data enabled engineering, construction, and operations computer-aided design (CAD) project system, method and computer program product
GB2368930B (en) 2000-10-17 2005-04-06 Hewlett Packard Co Establishment of a deferred network communication session
US6986040B1 (en) 2000-11-03 2006-01-10 Citrix Systems, Inc. System and method of exploiting the security of a secure communication channel to secure a non-secure communication channel
US6912582B2 (en) 2001-03-30 2005-06-28 Microsoft Corporation Service routing and web integration in a distributed multi-site user authentication system
US20050198379A1 (en) 2001-06-13 2005-09-08 Citrix Systems, Inc. Automatically reconnecting a client across reliable and persistent communication sessions
EP1321853A3 (en) 2001-12-10 2009-12-23 Sap Ag Dynamic component transfer based on resource negotiations between computer systems
US7984157B2 (en) 2002-02-26 2011-07-19 Citrix Systems, Inc. Persistent and reliable session securely traversing network components using an encapsulating protocol
US7266582B2 (en) 2002-08-09 2007-09-04 Sun Microsystems, Inc. Method and system for automating generation of web services from existing service components
US7296022B2 (en) 2003-07-14 2007-11-13 Microsoft Corporation Method and system for accessing a network database as a web service

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5689708A (en) * 1995-03-31 1997-11-18 Showcase Corporation Client/server computer systems having control of client-based application programs, and application-program control means therefor
US5737592A (en) * 1995-06-19 1998-04-07 International Business Machines Corporation Accessing a relational database over the Internet using macro language files
US5826027A (en) * 1995-10-11 1998-10-20 Citrix Systems, Inc. Method for supporting an extensible and dynamically bindable protocol stack in a distrubited process system
US5729734A (en) * 1995-11-03 1998-03-17 Apple Computer, Inc. File privilege administration apparatus and methods
WO1997018635A2 (en) * 1995-11-14 1997-05-22 International Business Machines Corporation Multiprotocol communication between a generic web browser and several access servers
US5794207A (en) * 1996-09-04 1998-08-11 Walker Asset Management Limited Partnership Method and apparatus for a cryptographically assisted commercial network system designed to facilitate buyer-driven conditional purchase offers
AU5303198A (en) * 1997-02-21 1998-08-27 Dudley John Mills Network-based classified information systems

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
B. CLIFFORD NEUMAN: "PROXY-BASED AUTHORIZATION AND ACCOUNTING FOR DISTRIBUTED SYSTEMS", PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON DISTRIBUTED COMPUTING SYSTEMS,US,LOS ALAMITOS, IEEE COMP. SOC. PRESS, vol. CONF. 13, 1993, pages 283 - 291, XP000399398, ISBN: 0-8186-3770-6 *
BRIDGET ALLISON, ROBERT HAWLEY, ANDREA BORR, MARK MUHLESTEIN, DAVID HITZ: "File System Security: Secure Network Data Sharing for NT and UNIX", INTERNET DOCUMENT, 1998, XP002138587, Retrieved from the Internet <URL:http://www.netapp.com/tech_library/1003.html> [retrieved on 20000522] *
TOM YAGER: "OS Paradise", BYTE, November 1995 (1995-11-01), pages 81 - 98, XP002138588 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8275852B2 (en) 2000-10-10 2012-09-25 Ricoh Americas Corporation System, computer program product and method for managing documents
US7401125B1 (en) 2000-10-10 2008-07-15 Ricoh Corporation System, computer program product and method for managing documents
WO2002041601A3 (en) * 2000-11-16 2002-12-19 Ericsson Telefon Ab L M User authentication apparatus, controlling method thereof, and network system
WO2002041601A2 (en) * 2000-11-16 2002-05-23 Telefonaktiebolaget Lm Ericsson (Publ) User authentication apparatus, controlling method thereof, and network system
US7065341B2 (en) 2000-11-16 2006-06-20 Telefonaktiebolaget Lm Ericsson (Publ) User authentication apparatus, controlling method thereof, and network system
WO2003084165A1 (en) * 2002-03-28 2003-10-09 Siemens Aktiengesellschaft Methods and devices for informing the user of a mobile radio terminal about data services that are currently available to said user via the server of a mobile radio network service
WO2004051962A1 (en) * 2002-11-27 2004-06-17 Hewlett-Packard Development Company, L.P. Methods and systems for transferring events including multimedia data
US9356938B2 (en) 2005-02-04 2016-05-31 Koninklijke Philips N.V. Method, device, system, token creating authorized domains
US20160006800A1 (en) * 2014-07-07 2016-01-07 Citrix Systems, Inc. Peer to peer remote application discovery
WO2016007181A1 (en) * 2014-07-07 2016-01-14 Citrix Systems, Inc. Peer to peer remote application discovery
US11283866B2 (en) 2014-07-07 2022-03-22 Citrix Systems, Inc. Providing remote access to applications through interface hooks
US11310312B2 (en) * 2014-07-07 2022-04-19 Citrix Systems, Inc. Peer to peer remote application discovery
US11895184B2 (en) 2014-07-07 2024-02-06 Citrix Systems, Inc. Peer to peer remote application discovery

Also Published As

Publication number Publication date
HK1040124A1 (en) 2002-05-24
IL143762A0 (en) 2002-04-21
KR100630212B1 (en) 2006-10-02
AU2212900A (en) 2000-07-31
EP1141828A1 (en) 2001-10-10
AU6555299A (en) 2000-07-06
GB9930782D0 (en) 2000-02-16
US6928469B1 (en) 2005-08-09
GB2349488A (en) 2000-11-01
KR20060096474A (en) 2006-09-11
US20050198292A1 (en) 2005-09-08
CA2293127A1 (en) 2000-06-29
DE69912317D1 (en) 2003-11-27
JP2002533830A (en) 2002-10-08
AU765088B2 (en) 2003-09-11
HK1040124B (en) 2004-05-14
EP1141828B1 (en) 2003-10-22
DK1141828T3 (en) 2004-02-23
US8527615B2 (en) 2013-09-03
PT1141828E (en) 2004-03-31
CA2293127C (en) 2011-03-01
ATE252744T1 (en) 2003-11-15
DE69912317T2 (en) 2004-07-29
ES2209549T3 (en) 2004-06-16

Similar Documents

Publication Publication Date Title
CA2293127C (en) An apparatus and method for determining a program neighborhood for a client node in a client-server network using markup language techniques
US7117243B2 (en) Methods for distributed program execution with file-type association in a client-server network
US7330872B2 (en) Method for distributed program execution with web-based file-type association
US6952714B2 (en) Method for distributed program execution with server-based file type association
AU2002332001B2 (en) Methods for distributed program execution with file-type association in a client-server network
US6643690B2 (en) Apparatus and method for determining a program neighborhood for a client node in a client-server network
AU2002332001A1 (en) Methods for distributed program execution with file-type association in a client-server network
US8006098B2 (en) Integrating legacy application/data access with single sign-on in a distributed computing environment
US7281139B2 (en) Authenticating legacy service via web technology
US20030233439A1 (en) Central administration of one or more resources
EP1411429A2 (en) An apparatus and method for determining a program neighbourhood for a client node in a client-server network
KR100678252B1 (en) An apparatus and method for determining a program neighborhood for a client node in a client?server network
AU2006233277B2 (en) Methods for distributed program execution with file-type association in a client-server network
AU2006233857B2 (en) Methods for distributed program execution with file-type association in a client-server network

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AL AM AT AU AZ BA BB BG BR BY CA CH CN CR CU CZ DE DK DM EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: IN/PCT/2001/617/KOL

Country of ref document: IN

WWE Wipo information: entry into national phase

Ref document number: 143762

Country of ref document: IL

ENP Entry into the national phase

Ref document number: 2000 591506

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 1020017008399

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 1999966622

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1999966622

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWP Wipo information: published in national office

Ref document number: 1020017008399

Country of ref document: KR

WWG Wipo information: grant in national office

Ref document number: 1999966622

Country of ref document: EP

WWG Wipo information: grant in national office

Ref document number: 1020017008399

Country of ref document: KR