US20060253558A1 - Web dispatch service - Google Patents

Web dispatch service Download PDF

Info

Publication number
US20060253558A1
US20060253558A1 US11/458,184 US45818406A US2006253558A1 US 20060253558 A1 US20060253558 A1 US 20060253558A1 US 45818406 A US45818406 A US 45818406A US 2006253558 A1 US2006253558 A1 US 2006253558A1
Authority
US
United States
Prior art keywords
service
request
application
dispatch server
server
Prior art date
Legal status (The legal status 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 status listed.)
Abandoned
Application number
US11/458,184
Inventor
Don Acree
Rian Chipman
Brooklin Gore
Craig Kickel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology 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
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Priority to US11/458,184 priority Critical patent/US20060253558A1/en
Publication of US20060253558A1 publication Critical patent/US20060253558A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • 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
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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/56Provisioning of proxy services
    • H04L67/563Data redirection of data network streams
    • 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/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • 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/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • 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]

Definitions

  • the present invention is related to software application management, and more particularly to the translation of simple service requests into complex web links.
  • Another current example is the use of stored procedures to access database information rather than using specific structured query language (SQL) commands in a given application. This moves a large portion of database intelligence out of the application and into the database server, which effectively centralizes more of the intelligence while distributing the capability. A change can be made to the centralized stored procedure to fix a bug or add functionality to all applications that use the procedure without requiring a change to each application itself.
  • SQL structured query language
  • FIG. 1A is a high-level component view of a dispatch server according to one embodiment of the present invention.
  • FIG. 1B is a high-level component view of a dispatch server and an additional server according to another embodiment of the present invention
  • FIG. 2 is a detailed view of a set of entries in a data store of the dispatch server according to one embodiment of the present invention
  • FIG. 3A is a block diagram illustrating a system that includes a dispatch server, an application server, and a client, according to one embodiment of the present invention
  • FIG. 3B is a block diagram illustrating a system that includes a dispatch server, an application server, and a client, according to another embodiment of the present invention
  • FIG. 3C is a use-case diagram illustrating various use cases in different embodiments of the present invention.
  • FIG. 4 is a flow chart illustrating a method for translating service requests into application requests according to one embodiment of the present invention
  • FIG. 5A is a flow chart illustrating a method for managing services through a user interface of a dispatch server according to one embodiment of the present invention
  • FIG. 5B is a continuation of the flow chart shown in FIG. 5A illustrating a method for managing services through a user interface of a dispatch server according to one embodiment of the present invention
  • FIG. 6 is a textual view of an example of a service request sent to a dispatch server according to one embodiment of the present invention.
  • FIG. 7 is a textual view of an example of a translation of a service command into an application command according to one embodiment of the present invention.
  • FIG. 8 is a textual view of an example of service invocation compression according to one embodiment of the present invention.
  • FIG. 9 is a textual view of an example of service request translation and parameter formatting according to one embodiment of the present invention.
  • FIG. 10 is a textual view of an example of service request translation and parameter defaults according to one embodiment of the present invention.
  • FIG. 11 is a textual view of an example of service request and method translation using form data according to one embodiment of the present invention.
  • FIG. 12 is a textual view of an example of service request and method translation parameter transparency according to another embodiment of the present invention.
  • a web application is nothing more than a collection of web pages presented to a browser with a common look, feel, and purpose.
  • the web environment itself neither cares nor knows about any application, and is, in fact, stateless.
  • the web is only concerned with requests and responses.
  • an employee lookup program i.e. white pages
  • an entry page might present a list of many things that can be done, such as looking up an employee by last name (or by user-name or employee number), or searching the phone book for phone numbers, parts of names, etc.
  • each of these capabilities is a transaction that may be executed independent of the others as long as the correct information is passed to the right server.
  • FIG. 1A is a high-level component view of a dispatch server according to one embodiment of the present invention.
  • dispatch server 100 is located on the World Wide Web, and includes data store 110 and dispatch processor 120 .
  • Dispatch processor 120 includes translator 130 and service management (user) interface 140 , and is operatively coupled to data store 110 .
  • Data store 110 has one or more entries that contain application service information, and dispatch processor 120 is programmed to translate an application service request via translator 130 into an application address.
  • service management interface 140 includes service registration 150 , service modification 160 , and service deletion 170 .
  • Dispatch processor 120 is further programmed to manage service management interface 140 .
  • Dispatch server 100 shown in FIG. 1A has various functionalities.
  • dispatch server 100 includes functionalities for service-to-application translation, service registration, service availability, parameter formatting, parameter completion (or defaults), method translation, and source routing.
  • Service-to-application translation enables a link to reference a service, rather than a particular application with all its required parameters, etc.
  • Service registration allows new applications to register their services and usages.
  • Service availability allows users to discover which services are available from different application providers.
  • Service modification allows applications to modify or delete their services after registration.
  • Parameter formatting allows a link to contain parameters without knowledge of the required format of those parameters, and also allows support for different formatting of the same parameter for different applications.
  • Parameter completion allows links to include only a subset of all required parameters to a target application.
  • Method translation allows links to include parameters for target applications without knowledge of the method required.
  • FIG. 1B is a high-level component view of a dispatch server and an additional server according to another embodiment of the present invention.
  • service management interface 140 is included in a separate and distinct run-time server 101 than dispatch server 100 .
  • Server 101 is operatively coupled to dispatch server 100 .
  • Server 101 includes processor 121 .
  • Processor 121 is programmed to manage service management interface 140 .
  • This dual-server architecture improves stability of the overall run-time system.
  • One server, such as server 101 may go down while the dispatch server 100 is still functional. In this scenario, applications could not register, modify, or delete services on server 101 , but clients could still invoke services on dispatch server 100 .
  • one embodiment includes a system with dispatch server 100 as a large-scale server, and server 101 as a cheaper, smaller platform.
  • dispatch server 100 is very flexible, such that it can operate in many different types of environments. Certain environments require specific application service message protocols and language definitions. Dispatch server 100 functions within these environments, wherein the application servers implementing any specific protocols or service language definitions will interface cleanly with dispatch server 100 during run-time operation.
  • FIG. 2 is a detailed view of a set of entries in a data store of the dispatch server according to one embodiment of the present invention.
  • data store 110 includes entries 180 through 190 that contain application service information about service 1 through service A .
  • Entry 180 includes information about a first application service 181 (service 1 ).
  • the information of entry 180 corresponding to service 1 181 is contained within data entry 182 (data 1 ) through data entry 183 (data B ).
  • Data entries 182 through 183 include various data information about service 1 181 .
  • Data entries 182 through 183 includes information that is specific to service 1 181 , and are referenced by dispatch processor 120 of dispatch server 100 .
  • data entries 182 through 183 include definitions for enablement and disablement of service 1 181 .
  • Service 1 181 is a service that has been registered on dispatch server 100 by an application provider.
  • Data entries 182 through 183 can dynamically change over time, such that the definition of service 1 181 is configurable.
  • Entry 190 includes information about an A th application service 191 (service A ).
  • the information of entry 190 corresponding to service A 191 is contained within data entry 192 (data 1 ) through data entry 193 (data C ).
  • Data entries 192 through 193 include various data information about service A 191 .
  • Data entries 192 through 193 includes information that is specific to service A 191 , and are referenced by dispatch processor 120 of dispatch server 100 .
  • data entries 192 through 193 include definitions for enablement and disablement of service A 191 .
  • Service A 191 is a service that has been registered on dispatch server 100 by an application provider.
  • Data entries 192 through 193 can dynamically change over time, such that the definition of service A 191 is configurable.
  • FIG. 3A is a block diagram illustrating a system that includes a dispatch server, an application server, and a client, according to one embodiment of the present invention.
  • system 200 includes dispatch server 100 , application server 210 , and client 220 .
  • client 220 may also be an application server.
  • Dispatch server 100 is operatively coupled to both application server 210 and client 220 .
  • Client 220 is operatively coupled to both dispatch server 100 and application server 210 .
  • Application server 210 is operatively coupled to both dispatch server 100 and client 220 .
  • System 200 provides client 220 with the ability to address application server 210 .
  • Client 220 sends service request 230 to dispatch server 100 .
  • Dispatch server 100 processes service request 230 and translates service request 230 into an application request 240 .
  • Dispatch server 100 redirects application request 240 back to client 220 .
  • Client 220 receives application request 240 and forwards it as application request 280 to application server 210 .
  • Application server 210 processes application request 280 , and sends application response 270 to client 220 .
  • client 220 is an end-user.
  • system 200 is more reliable, because the transaction time between client 220 and dispatch server 100 is quite small. Dispatch server does not need to maintain state information about its transaction with client 220 , and therefore the transaction rate can be quite high.
  • system 200 provides a clearer security model, because client 220 directly invokes application request 280 to application server 210 (i.e. dispatch server 100 redirects application request 240 back to client 220 , rather than sending it to application server 210 ). This provides a clearer security model and eases cookie management.
  • the first analogy is that of a taxi service.
  • a key benefit is that we don't need to know where a destination is, or how to get there. We can just hop in and ask to be taken to a certain location, and a while later, we arrive there. For less common destinations, we may have to provide a specific address to the taxi driver, but we still don't have to know how to get there. And, for generic locations, we may not even need to know the name of the location. For example, we might just say to the taxi driver, “Take me to the closest book store.” This is an example of how we minimize the information we need to do something (i.e. get to a destination) by relying on another source (i.e. the taxi driver) for that information.
  • the second analogy is that of a vacation in Mexico. Let's say you decide to vacation in Mexico and don't speak Spanish, but your traveling companion does. While in a restaurant, you need to use a restroom (which you are quite certain that the restaurant has). You ask your traveling companion for help. She tells you how to ask for the restroom in Spanish, and further informs you that you can ask a clerk in the restaurant, such that the clerk will understand your request, and also be able to give you a correct response (as to how to find the restroom). There are at least two important points in this analogy: (1) your traveling companion did not ask for you, but told you how to ask, and (2) your traveling companion also told you where to ask.
  • the dispatch server is basically telling you how and where to ask. By returning the application request in a redirect message, the dispatch server is letting the client make the request, not actually calling the target application server directly.
  • application requests 240 and 280 are complex addresses.
  • service request 230 includes a URL.
  • the processing of service request 230 on dispatch server 100 includes validating service request 230 , and checking service request 230 for parameters.
  • application server 210 also sends user interface commands 250 to dispatch server 100 . These user interface commands 250 will be processed by the user interface of dispatch server 100 , and then user interface responses 260 will be sent back to application server 210 . In this way, application server 210 can register services on dispatch server 100 . In another embodiment, application server 210 can modify and delete services on dispatch server 100 . In this way, service definitions can change without having to change service requests.
  • Dispatch server 100 has centralized management of complex web links, such that client 220 sends the same service request 230 to dispatch server 100 after the service definitions have changed. In some embodiments, client 220 sends additional commands to dispatch server 100 to discover which services are currently available.
  • FIG. 3B is a block diagram illustrating a system that includes a dispatch server, an application server, and a client, according to another embodiment of the present invention.
  • system 201 includes dispatch server 100 , application server 210 , and client 220 .
  • Dispatch server 100 directly sends application request 240 to application server 210 .
  • Application server 210 processes application request 240 , and sends application response 270 back to dispatch server 100 .
  • Dispatch server includes an amount of state information, so that it can send application response 271 to client 220 .
  • dispatch server 100 acts substantially similar to a reverse proxy.
  • Client 220 never needs to know the exact address of application server 210 , nor does it need send requests to application server 210 .
  • Dispatch 100 handles all of the transactional work with application server 210 .
  • Client 220 only needs to send simple service requests to dispatch server 100 , and in one embodiment, these requests can easily be bookmarked as URL favorites on client 220 .
  • FIG. 3C is a use-case diagram illustrating various use cases in different embodiments of the present invention.
  • use-case diagram 281 shows use cases involving a service user 283 and a service provider 282 .
  • service provider 282 implements use 292 for use case 284 to register a service on a dispatch provider.
  • User interface 291 aids in the registration process.
  • Database 290 is updated to include the new service.
  • service user 283 implements use 296 for use case 288 to invoke a service on the dispatch provider.
  • Dispatcher 289 handles the service request sent from service user 283 , and database 290 is used to query information about the requested service.
  • service user 283 implements use 295 for use case 287 to discover available services on the dispatch provider.
  • User interface 291 aids in the discovery process, and database 290 is used to query information about available services on the dispatch provider.
  • service provider 282 implements use 293 for use case 285 to modify an existing service on the dispatch provider.
  • User interface 291 aids in the modification process, and database 290 is updated for the modified service.
  • service provider 282 implements use 294 for use case 286 to delete an existing service on the dispatch provider.
  • User interface 291 aids in the deletion process, and database 290 is updated to delete the indicated service.
  • FIG. 4 is a flow chart illustrating a method for translating service requests into application requests according to one embodiment of the present invention.
  • flow diagram 300 begins with step 310 , when dispatch server 100 receives a service request from a browser.
  • dispatch server 100 parses the request to determine the format and contents of the request.
  • dispatch server 100 determines if the service request is valid. If it is not, an error message is displayed, and an error is returned to the browser. If the service request is valid, dispatch server then checks if the service invoked by the service request is in data store 110 at checkpoint 340 .
  • Data store 110 contains service data entries (definitions) for each of the services registered on dispatch server 100 .
  • dispatch server 100 determines if the service request contains any parameters. If the request does not contain any parameters, then dispatch server redirects the application request to the browser in step 430 .
  • dispatch server determines if the parameters are valid for the indicated service at checkpoint 380 . Again, dispatch server references data store 110 in determining if these parameters are valid for the particular service in question. If the parameters are invalid, an error message is displayed, and an error is returned to the browser. If the parameters are valid, dispatch server 100 processes the parameters in step 390 . At checkpoint 400 , dispatch server determines if any of the parameters are POST method parameters. As will be described in more detail below, parameters may be passed to an application server via the POST method, which passes parameters in data (other than in the URL) that is sent to the application server. If there are no POST method parameters, then dispatch server 100 redirects the application request to the browser in step 430 .
  • dispatch server 100 creates a form using these parameters in step 410 .
  • dispatch server 100 returns the form with an invocation of the onload event that calls the form's submit method, and then redirects the application request (which includes the form) to the browser in step 430 .
  • Flow diagram 300 ends with step 450 .
  • FIGS. 5A and 5B show a flow chart illustrating a method for managing services through a user interface of a dispatch server according to one embodiment of the present invention.
  • user interface requests can be used to add, delete, and modify services and service definitions on the dispatch server.
  • Flow diagram 500 begins with step 510 , when a user interface request is received by the dispatch server. As discussed earlier, this user interface request will be sent to the dispatch server from an application server. In step 520 , a welcome page with links will be displayed on dispatch server 100 .
  • dispatch server 100 determines if the user interface request has made a selection to view registered services on dispatch server 100 . After such a selection is made, dispatch server 100 displays all available services from database 110 . Database 110 includes information for all currently registered services on dispatch server 100 .
  • dispatch server 100 determines if the user interface request includes a request to add a new service. If the request is to add a new service, step 670 enters the name of the new service from the request. In one embodiment, the request is parsed to extract the new service name. Step 680 checks database 110 for a similar service name. Database 110 includes information for all currently registered services on dispatch server 100 . At checkpoint 690 , dispatch server 100 determines if the new service name is unique from other service names currently registered in the system. If the name is not unique, control is returned to step 670 to enter another name for the new service. If the name is unique, then step 700 enters the service definition from the user interface request.
  • the user interface request is parsed to extract the service definition.
  • the new service is registered in step 710 into database 110 .
  • Database 110 contains the service definition for the new service.
  • dispatch server 100 determines if the service has parameters. If it does not, then dispatch server 100 determines if any more services are to be added at checkpoint 730 . If the service does have parameters, then the parameters are entered in step 740 .
  • the user interface request is parsed to extract the parameters. In step 750 , the new parameters are registered into database 110 for the new service.
  • dispatch server determines if the user interface request includes a request to edit an existing service. If the user interface request includes such a request, then step 560 queries database 110 to display the current service definition for the given service. In one embodiment, the user interface request is parsed to extract service information.
  • dispatch server 100 determines if the user interface request includes a request to delete a service. If it does not, the service definition is edited at step 590 . Then, at checkpoint 600 , dispatch server 100 determines if the parameters are to be edited. If they are not, then the service is updated in step 610 and database 110 is also updated for the edited service. If the parameters are to be edited at checkpoint 600 , then current parameters are displayed in step 620 .
  • dispatch server 100 determines if a parameter is to be deleted. If not, then the parameter definitions are edited in step 650 , and the service is updated in step 610 (such that database 110 is updated). If the parameter is to be deleted, then the parameter is removed from database 110 in step 640 . If dispatch server 100 determines that the service is to be deleted at checkpoint 570 , then the enter service is removed from database 110 in step 580 .
  • FIG. 6 is a textual view of an example of a service request sent to a dispatch server according to one embodiment of the present invention.
  • the core feature provided by the dispatch server is the ability to abstract the details of a specific web address into a generic service definition that hides much of the intelligence typically required in a link.
  • Service request 800 shows the basic format for linking to a web application that is defined as a dispatch service.
  • Textual element 801 of service request 800 is the name of the dispatch server.
  • Textual element 802 of service request 800 is the name of a registered service on the dispatch server.
  • Textual element 803 of service request 800 contains the parameters and/or values required for the indicated service.
  • a service request 800 sent to a dispatch server includes a dispatch server name, a registered service name, and parameter values.
  • the service request includes only a dispatch server name and a registered service name.
  • FIG. 7 is a textual view of an example of a translation of a service command into an application command according to one embodiment of the present invention.
  • Service command 810 is translated into application command 820 by a dispatch server.
  • Textual element 811 of service command 810 is the communication protocol.
  • Textual element 812 of service command 810 is the name of the dispatch server.
  • Textual element 813 of service command 810 is the name of a registered employee lookup service on the dispatch server.
  • the client who has sent this service command has discovered this service by name on the dispatch server.
  • Textual element 814 of service command 810 is the parameter required by the service indicated by textual element 813 .
  • This parameter can be sent directly in service command 810 .
  • the dispatch server of this embodiment of the invention translates the service command 810 into application command 820 .
  • Application command 820 includes textual elements 821 , 822 , 823 , and 824 .
  • Textual element 821 is the communication protocol.
  • Textual element 822 is the name of the server running the particular application.
  • Application command 820 is sent to this server.
  • Textual element 823 is the path and name of the application running on the server.
  • Textual element 824 is the information that the application needs in order to return the desired information for employee number 48 .
  • service registration and request redirection functionalities allow the dispatch server to translate service command 810 into application command 820 .
  • the employee lookup application owner Before service command 810 arrives at the dispatch server, the employee lookup application owner must register the “employee lookup by_workno” service with the dispatch server, including a required parameter “emp” that designates a single employee number. Additionally, during registration, dispatch server must store data for the given service indicating that the program “emp/default.asp” on server “iisprod” must be invoked with a single parameter “emp.” Parameters may be passed to an application using a GET method, and also may be passed using a POST method. The GET method passes parameters to an application directly in the address (e.g. URL).
  • the POST method passes parameters in other data that is sent to the application.
  • the parameter “emp” is passed using the GET method.
  • the dispatch server also stores data for the given service that associates a description and owner with the service, and this information is provided to clients during service discovery.
  • a client After service registration, a client sends service command 810 to the dispatch server. After service command 810 is translated into application command 820 by the dispatch server, application command 820 is redirected back to the client. By sending the client back the application command in a redirect message, the dispatch server lets the client make the request to the application server directly. This approach has certain benefits. After the dispatch server has translated the request, it is basically done. This involves a simple database query and some possible data formatting, all of which can be done quite quickly. The dispatch server then sends a small amount of data back to the client. It does not have to wait for the target application to respond, nor does it route the results from the target application back to the client.
  • the dispatch server does not need to maintain any state information, and that the dispatch server will be able to handle many service commands per second.
  • the application command redirection approach minimizes the network path (and traffic) for the results to get from the target application back to the client. It also is important for usage logging, access tracking, and security management.
  • the dispatch server directly sends application command 820 to the application server, and routes an application response back to the client.
  • the dispatch server would need to maintain some state information.
  • the service registration process is at least partially automated.
  • a dispatch interface is designed so that an application can register itself for all of its available services.
  • the Extensible Markup Language (XML) provides a simple, hierarchical messaging protocol whereby the required service components are described, filed, and updated by existing applications.
  • the dispatch server provides currently available service information to clients who send service inquiry requests to the dispatch server. In this way, clients find out about (i.e. discover) services offered by the dispatch server.
  • a client can inquire about a reserved service, such as a service named “info,” from the dispatch server. After receiving this inquiry, the dispatch server would return information about itself to the client. Further, if the “info” service is called with a “services” parameter (which is a reserved parameter name for the reserved service “info”), then the dispatch server will directly respond to the client with a list of published services, their names, required parameters, a description, and human contact information.
  • the service inquiry (i.e. discovery) process is also at least partially automated. In this embodiment, an XML-enabled interface is provided, such that clients inquire which services are available, and how to access them.
  • FIG. 8 is a textual view of an example of service invocation compression according to one embodiment of the present invention.
  • service invocation 830 is compressed into a smaller service invocation 840 .
  • Both service invocations 830 and 840 of the present embodiment are in Uniform Resource Locator (URL) format.
  • URL Uniform Resource Locator
  • Service invocation 830 includes two GET method parameters, “var1” and “var2”.
  • the “var1” parameter is set equal to “value1” and the “var2” parameter is set equal to “value2.”
  • Service invocation 840 takes full advantage of URL compression via parameter translation. The values “value1” and “value2” are passed directly in the service invocation, thus making service invocation 840 more compact.
  • FIG. 9 is a textual view of an example of service request translation and parameter formatting according to one embodiment of the present invention.
  • service request 850 is translated into content request 860 , such that one of the parameters of the service request is properly formatted.
  • Service request 850 includes a DnR service.
  • FIG. 9 (and some of the other figures and portions of the present specification) make reference to DnR capabilities of Top Tier's Drag and Relate, these figures are used only as examples to show the utility of these embodiments of the present invention in various operating environments.
  • Top Tier's Drag and Relate technologies are in no way associated with, or required by, these embodiments of the present invention. They are shown in the figures and further described only to exemplify the flexibility of use of a dispatch server in certain operating environments of these embodiments.
  • the DnR server To send content request 860 to a DnR server, the DnR server requires the employee number to be an 8 digit integer with zero left padding. (In this scenario, DnR server is a content server.) In this instance, the formatting is performed by the dispatch server, and the formatting code is eliminated from the employee lookup program (i.e. client). FIG. 9 shows the format of the call to the dispatch server and the URL that is re-directed back to the client. We assume that the service “dnr_return_workno” has been previously registered with the dispatch server and in doing so, the format of the parameter is specified as an 8 digit integer with zero left padding.
  • Content request 860 is a DnR link, where “hrnp://” is the Hyper Relational Navigation Protocol (for Top Tier Drag and Relate). “ntitsqaw03:9997” is the server (on port 9997 in this case). “BUS1065” is the name of the object. “OBJECTKEY” is the name of the objectid. And “00000048” is the parameter formatted that is being drag and related for employee number 48 .
  • FIG. 9 is somewhat artificial, in that DnR links in DEAs (DnR Enabled Applications) are only meant, as the name implies, to be drug to a DnR aware server and not simply clicked on as are other HTML links. Therefore, the client cannot return content request 860 as specified above.
  • the link shown must be available as is so it is dragable (i.e., since we don't actually click on the link, it can't be sent to the dispatch server for interpretation).
  • FIG. 10 we present another embodiment of the dispatch server and demonstrate a more legitimate way to engage the dispatch server to remove DnR intelligence from DEAs.
  • FIG. 10 is a textual view of an example of service request translation and parameter defaults according to one embodiment of the present invention.
  • service request 870 is translated into application link 880 .
  • DNR a variable that if present (via the GET or POST method) indicates to a target application that it is in DnR mode.
  • the embodiment of the dispatch server's parameter completion feature further removes intelligence from the calling application.
  • the service “employee lookup_by_workeno_withDNR” has been previously defined with two parameters, one being the required employee number (emp), and also a second optional parameter (DNR) with a default value of “hrnp://ntitsqaw03:9997/BUS 1065/OBJECTKEY/#PARAM#emp”.
  • the “#PARAM#” string tells the dispatch server to substitute the value of another, non-default parameter, which in this case is “emp” that has a value of 48.
  • the default “DNR” parameter was specified to require left-zero formatting.
  • FIG. 11 is a textual view of an example of service request and method translation using form data according to one embodiment of the present invention.
  • the dispatch server is able to handle the case when a target application (on a service provider) is expecting parameters via the POST method.
  • Dispatch server translates service request 890 into application link 900 , wherein application link 900 includes the required POST method parameters with the form's “action” variable set to the target application's URL.
  • application link 900 also includes an invocation of the “onload” event that calls the form's “submit” method.
  • FIG. 12 is a textual view of an example of service request, method translation, and parameter transparency according to another embodiment of the present invention.
  • the dispatch server will simply pass on the path or parameter information in the same manner in which it was received. This provides maximum flexibility for migrating links to take full advantage of the dispatch service.
  • service request 910 having GET parameters (“var” is implicitly provided by “value1,” and “var2” is explicitly provided as “value2”) is translated into POST method application request 920 .
  • variable2 is not defined in the service database of the dispatch server, and thus it is simply passed along transparently as a parameter from service request 910 into application request 920 , while “value1” is translated into a POST method parameter, and “value3” is supplied as a default value.
  • the dispatch server provides source routing.
  • service requests are translated into application requests just as before.
  • the dispatch server determines the geographic location of the requesting client and one or more application servers that provide the requested service. That is to say, there can be many application servers in different geographic locations that provide the requested service.
  • Source routing occurs when the dispatch server determines the closest application server to the requesting client when translating a service request and redirecting an application request back to the client.
  • application servers in the United States, Italy, and Japan all provide a common service of “employee_stock_quoting.”
  • a client in Italy sends a service request for “employee_stock_quoting” to the dispatch server.
  • the dispatch server will achieve source routing by assessing the client's location (Italy), and determining that the nearest application server that provides the requested service is the one in Italy.
  • the dispatch server will redirect an application request back to the client, wherein the application request includes the address of the application server in Italy.
  • the dispatch server uses a load-balancing strategy when choosing the appropriate application server and thereby creating an application request. In this way, routing of requests is achieved to maximize the load-balancing strategy used by the dispatch server. This occurs when multiple application servers in a given geographic location provide the requested service.
  • the dispatch server implements a load-balancing strategy to determine which application server will handle the application request.
  • the load-balancing strategy includes a round-robin strategy.

Abstract

A system and method for accessing an application server includes sending a service command from a requestor to a dispatch server, processing the service command on the dispatch server, translating the service command on the dispatch server into an application request to the application server, wherein the translating is based on a service definition stored on the dispatch server, and processing the application request. In one embodiment, the dispatch server includes a dispatch processor that is further programmed to manage a user interface, wherein the user interface includes a service registration interface, a service modification interface, and a service deletion interface.

Description

  • This application is a Divisional of application Ser. No. 10/140,347, filed on May 56, 2002, which is incorporated herein by reference.
  • FIELD OF THE INVENTION
  • The present invention is related to software application management, and more particularly to the translation of simple service requests into complex web links.
  • BACKGROUND OF THE INVENTION
  • Computer science has forever grappled with solving the following, contrary statements: systems become more brittle as intelligence is distributed, but systems also become less scalable as intelligence is centralized. How can we enjoy the benefits of distributed scalability with the superior availability and reliability of centralization? There has been a steady evolution of tools and methods to answer this question. The advent of libraries and routines that could be included (linked) in multiple applications migrated to shared libraries that mitigated the need to rebuild every application when a referenced routine was changed. Later, the concept of objects promoted reuse and portability by only exposing necessary methods and properties to the using application. Today, we routinely use object brokers that provide objects as services to applications, further insulating developers from the intricacies of a desired capability while still providing the functionality required.
  • Another current example is the use of stored procedures to access database information rather than using specific structured query language (SQL) commands in a given application. This moves a large portion of database intelligence out of the application and into the database server, which effectively centralizes more of the intelligence while distributing the capability. A change can be made to the centralized stored procedure to fix a bug or add functionality to all applications that use the procedure without requiring a change to each application itself.
  • Today, however, we have no similar mechanism for minimizing intelligence required by one web application that needs to access the services of another web application. For example, to display employee information in a web application, one could use an employee lookup program. However, to use that application, one must know things such as the server the application is currently running on, the path to and name of the application, and what information the program needs to provide the desired service. All of this information may be encoded in a Universal Resource Locator (URL) or link. This is not necessarily a lot of information to maintain, but if any of that information changes, the link will break. As the number of copies of this link grow, and if the link itself becomes more complex, then the maintenance could become more significant.
  • Clearly, the information required by a web application can be even more involved in certain circumstances. For example, enabling applications with Top Tier's Drag and Relate (DnR) capability, while powerful, can require significantly more intelligence in the enabled application. Additionally, most DnR Enabled Applications (DEAs) need to know when they are DnR enabled, since displaying DnR links outside of DnR aware environments could be confusing to the user, and simply won't work if activated. Further, DEAs must encode information into the DnR links so the DnR servers understand what to do with the DnR link. Again, if any of that information changes, then the application will break. This approach becomes untenable in a large enterprise with many applications cross-linking each other.
  • For the reasons stated above, and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need for the present invention.
  • BRIEF SUMMARY OF THE DRAWINGS
  • In the following drawings, where the same number reflects similar function in each of the drawings,
  • FIG. 1A is a high-level component view of a dispatch server according to one embodiment of the present invention;
  • FIG. 1B is a high-level component view of a dispatch server and an additional server according to another embodiment of the present invention;
  • FIG. 2 is a detailed view of a set of entries in a data store of the dispatch server according to one embodiment of the present invention;
  • FIG. 3A is a block diagram illustrating a system that includes a dispatch server, an application server, and a client, according to one embodiment of the present invention;
  • FIG. 3B is a block diagram illustrating a system that includes a dispatch server, an application server, and a client, according to another embodiment of the present invention;
  • FIG. 3C is a use-case diagram illustrating various use cases in different embodiments of the present invention;
  • FIG. 4 is a flow chart illustrating a method for translating service requests into application requests according to one embodiment of the present invention;
  • FIG. 5A is a flow chart illustrating a method for managing services through a user interface of a dispatch server according to one embodiment of the present invention;
  • FIG. 5B is a continuation of the flow chart shown in FIG. 5A illustrating a method for managing services through a user interface of a dispatch server according to one embodiment of the present invention;
  • FIG. 6 is a textual view of an example of a service request sent to a dispatch server according to one embodiment of the present invention;
  • FIG. 7 is a textual view of an example of a translation of a service command into an application command according to one embodiment of the present invention;
  • FIG. 8 is a textual view of an example of service invocation compression according to one embodiment of the present invention;
  • FIG. 9 is a textual view of an example of service request translation and parameter formatting according to one embodiment of the present invention;
  • FIG. 10 is a textual view of an example of service request translation and parameter defaults according to one embodiment of the present invention;
  • FIG. 11 is a textual view of an example of service request and method translation using form data according to one embodiment of the present invention; and
  • FIG. 12 is a textual view of an example of service request and method translation parameter transparency according to another embodiment of the present invention.
  • DETAILED DESCRIPTION
  • In the following detailed description of the preferred embodiments, reference is made to the accompanying drawings which form a part hereof, and in which is shown by way of illustration specific preferred embodiments in which the inventions may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that logical, mechanical and electrical changes may be made without departing from the spirit and scope of the present invention. In certain embodiments, reference is made to certain outside technologies to exemplify the utility of these embodiments of the invention. These technologies are not associated with, or required by, these embodiments of the invention for operation, but are described only to demonstrate the flexibility and utility of these embodiments of the invention in various operating environments. The following detailed description is not to be taken in a limiting sense, and the scope of the present invention is defined by the claims.
  • INTRODUCTION
  • It is interesting to consider web pages and applications in terms of objects and transactions. One can consider a single, static web page as a simple object with a single method called “display my contents.” The method is invoked via the web link for that page. Web pages generated by an application are just slightly more complex objects that now include zero or more properties. These properties are sent to the application in the link itself or through other data that a browser can send to the link's destination. Thus, the method of an application is just a bit more complex and may be called something like “display my contents based on my properties.”
  • By the nature of the environment, web applications are transaction-based. A web application is nothing more than a collection of web pages presented to a browser with a common look, feel, and purpose. The web environment itself neither cares nor knows about any application, and is, in fact, stateless. The web is only concerned with requests and responses. Using an employee lookup program (i.e. white pages) example, an entry page might present a list of many things that can be done, such as looking up an employee by last name (or by user-name or employee number), or searching the phone book for phone numbers, parts of names, etc. In fact, each of these capabilities is a transaction that may be executed independent of the others as long as the correct information is passed to the right server.
  • This object and transaction orientation makes the web very flexible and powerful. This same capability, however, can also cause reliability, availability, and scalability (RAS) issues in an enterprise if not carefully managed. RAS issues have been around in the software development field for many years, and new technologies have evolved over time to address them. Such technologies are less mature in the web environment. Certain embodiments of the present invention described below apply some of the lessons learned in traditional software development to a web environment of linked objects and transactions.
  • DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • FIG. 1A is a high-level component view of a dispatch server according to one embodiment of the present invention. In this embodiment, dispatch server 100 is located on the World Wide Web, and includes data store 110 and dispatch processor 120. Dispatch processor 120 includes translator 130 and service management (user) interface 140, and is operatively coupled to data store 110. Data store 110 has one or more entries that contain application service information, and dispatch processor 120 is programmed to translate an application service request via translator 130 into an application address. In this embodiment, service management interface 140 includes service registration 150, service modification 160, and service deletion 170. Dispatch processor 120 is further programmed to manage service management interface 140. Dispatch server 100 shown in FIG. 1A has various functionalities. In different embodiments, dispatch server 100 includes functionalities for service-to-application translation, service registration, service availability, parameter formatting, parameter completion (or defaults), method translation, and source routing. Service-to-application translation enables a link to reference a service, rather than a particular application with all its required parameters, etc. Service registration allows new applications to register their services and usages. Service availability allows users to discover which services are available from different application providers. Service modification allows applications to modify or delete their services after registration. Parameter formatting allows a link to contain parameters without knowledge of the required format of those parameters, and also allows support for different formatting of the same parameter for different applications. Parameter completion allows links to include only a subset of all required parameters to a target application. Method translation allows links to include parameters for target applications without knowledge of the method required.
  • FIG. 1B is a high-level component view of a dispatch server and an additional server according to another embodiment of the present invention. In this embodiment, service management interface 140 is included in a separate and distinct run-time server 101 than dispatch server 100. Server 101 is operatively coupled to dispatch server 100. Server 101 includes processor 121. Processor 121 is programmed to manage service management interface 140. This dual-server architecture improves stability of the overall run-time system. One server, such as server 101, may go down while the dispatch server 100 is still functional. In this scenario, applications could not register, modify, or delete services on server 101, but clients could still invoke services on dispatch server 100. Considering the potential high transaction-rate of dispatch server 100, one embodiment includes a system with dispatch server 100 as a large-scale server, and server 101 as a cheaper, smaller platform.
  • In the embodiments shown in FIGS. 1A and 1B, dispatch server 100 is very flexible, such that it can operate in many different types of environments. Certain environments require specific application service message protocols and language definitions. Dispatch server 100 functions within these environments, wherein the application servers implementing any specific protocols or service language definitions will interface cleanly with dispatch server 100 during run-time operation.
  • FIG. 2 is a detailed view of a set of entries in a data store of the dispatch server according to one embodiment of the present invention. In this embodiment, data store 110 includes entries 180 through 190 that contain application service information about service1 through serviceA. Entry 180 includes information about a first application service 181 (service1). The information of entry 180 corresponding to service1 181 is contained within data entry 182 (data1) through data entry 183 (dataB). Data entries 182 through 183 include various data information about service 1 181. Data entries 182 through 183 includes information that is specific to service 1 181, and are referenced by dispatch processor 120 of dispatch server 100. In some embodiments, data entries 182 through 183 include definitions for enablement and disablement of service 1 181. Service 1 181 is a service that has been registered on dispatch server 100 by an application provider. Data entries 182 through 183 can dynamically change over time, such that the definition of service 1 181 is configurable. Entry 190 includes information about an Ath application service 191 (serviceA). The information of entry 190 corresponding to serviceA 191 is contained within data entry 192 (data1) through data entry 193 (dataC). Data entries 192 through 193 include various data information about service A 191. Data entries 192 through 193 includes information that is specific to service A 191, and are referenced by dispatch processor 120 of dispatch server 100. In some embodiments, data entries 192 through 193 include definitions for enablement and disablement of service A 191. Service A 191 is a service that has been registered on dispatch server 100 by an application provider. Data entries 192 through 193 can dynamically change over time, such that the definition of service A 191 is configurable.
  • FIG. 3A is a block diagram illustrating a system that includes a dispatch server, an application server, and a client, according to one embodiment of the present invention. In this embodiment, system 200 includes dispatch server 100, application server 210, and client 220. In some embodiments, client 220 may also be an application server. Dispatch server 100 is operatively coupled to both application server 210 and client 220. Client 220 is operatively coupled to both dispatch server 100 and application server 210. Application server 210 is operatively coupled to both dispatch server 100 and client 220. System 200 provides client 220 with the ability to address application server 210. Client 220 sends service request 230 to dispatch server 100. Dispatch server 100 processes service request 230 and translates service request 230 into an application request 240. Dispatch server 100 redirects application request 240 back to client 220. Client 220 receives application request 240 and forwards it as application request 280 to application server 210. Application server 210 processes application request 280, and sends application response 270 to client 220. In system 200, client 220 is an end-user.
  • This embodiment provides several advantages. First, system 200 is more reliable, because the transaction time between client 220 and dispatch server 100 is quite small. Dispatch server does not need to maintain state information about its transaction with client 220, and therefore the transaction rate can be quite high. Second, system 200 provides a clearer security model, because client 220 directly invokes application request 280 to application server 210 (i.e. dispatch server 100 redirects application request 240 back to client 220, rather than sending it to application server 210). This provides a clearer security model and eases cookie management.
  • To further exemplify the advantages of this embodiment, we can use two analogies. The first analogy is that of a taxi service. Aside from not having to drive, a key benefit is that we don't need to know where a destination is, or how to get there. We can just hop in and ask to be taken to a certain location, and a while later, we arrive there. For less common destinations, we may have to provide a specific address to the taxi driver, but we still don't have to know how to get there. And, for generic locations, we may not even need to know the name of the location. For example, we might just say to the taxi driver, “Take me to the closest book store.” This is an example of how we minimize the information we need to do something (i.e. get to a destination) by relying on another source (i.e. the taxi driver) for that information.
  • The second analogy is that of a vacation in Mexico. Let's say you decide to vacation in Mexico and don't speak Spanish, but your traveling companion does. While in a restaurant, you need to use a restroom (which you are quite certain that the restaurant has). You ask your traveling companion for help. She tells you how to ask for the restroom in Spanish, and further informs you that you can ask a clerk in the restaurant, such that the clerk will understand your request, and also be able to give you a correct response (as to how to find the restroom). There are at least two important points in this analogy: (1) your traveling companion did not ask for you, but told you how to ask, and (2) your traveling companion also told you where to ask. By correctly formatting (and redirecting) an application request in this embodiment, the dispatch server is basically telling you how and where to ask. By returning the application request in a redirect message, the dispatch server is letting the client make the request, not actually calling the target application server directly.
  • In some embodiments, application requests 240 and 280 are complex addresses. In other embodiments, service request 230 includes a URL. In other embodiments, the processing of service request 230 on dispatch server 100 includes validating service request 230, and checking service request 230 for parameters.
  • In the embodiment shown in FIG. 3A, application server 210 also sends user interface commands 250 to dispatch server 100. These user interface commands 250 will be processed by the user interface of dispatch server 100, and then user interface responses 260 will be sent back to application server 210. In this way, application server 210 can register services on dispatch server 100. In another embodiment, application server 210 can modify and delete services on dispatch server 100. In this way, service definitions can change without having to change service requests. Dispatch server 100 has centralized management of complex web links, such that client 220 sends the same service request 230 to dispatch server 100 after the service definitions have changed. In some embodiments, client 220 sends additional commands to dispatch server 100 to discover which services are currently available.
  • FIG. 3B is a block diagram illustrating a system that includes a dispatch server, an application server, and a client, according to another embodiment of the present invention. In this embodiment, system 201 includes dispatch server 100, application server 210, and client 220. Dispatch server 100 directly sends application request 240 to application server 210. Application server 210 processes application request 240, and sends application response 270 back to dispatch server 100. Dispatch server includes an amount of state information, so that it can send application response 271 to client 220. In this case, dispatch server 100 acts substantially similar to a reverse proxy. Client 220 never needs to know the exact address of application server 210, nor does it need send requests to application server 210. Dispatch 100 handles all of the transactional work with application server 210. Client 220 only needs to send simple service requests to dispatch server 100, and in one embodiment, these requests can easily be bookmarked as URL favorites on client 220.
  • FIG. 3C is a use-case diagram illustrating various use cases in different embodiments of the present invention. In this embodiment, use-case diagram 281 shows use cases involving a service user 283 and a service provider 282. In one use case, service provider 282 implements use 292 for use case 284 to register a service on a dispatch provider. User interface 291 aids in the registration process. Database 290 is updated to include the new service. In another use case, service user 283 implements use 296 for use case 288 to invoke a service on the dispatch provider. Dispatcher 289 handles the service request sent from service user 283, and database 290 is used to query information about the requested service.
  • In another embodiment, service user 283 implements use 295 for use case 287 to discover available services on the dispatch provider. User interface 291 aids in the discovery process, and database 290 is used to query information about available services on the dispatch provider.
  • In another embodiment, service provider 282 implements use 293 for use case 285 to modify an existing service on the dispatch provider. User interface 291 aids in the modification process, and database 290 is updated for the modified service.
  • In another embodiment, service provider 282 implements use 294 for use case 286 to delete an existing service on the dispatch provider. User interface 291 aids in the deletion process, and database 290 is updated to delete the indicated service.
  • FIG. 4 is a flow chart illustrating a method for translating service requests into application requests according to one embodiment of the present invention. In this embodiment, flow diagram 300 begins with step 310, when dispatch server 100 receives a service request from a browser. In step 320, dispatch server 100 parses the request to determine the format and contents of the request. At checkpoint 330, dispatch server 100 determines if the service request is valid. If it is not, an error message is displayed, and an error is returned to the browser. If the service request is valid, dispatch server then checks if the service invoked by the service request is in data store 110 at checkpoint 340. Data store 110 contains service data entries (definitions) for each of the services registered on dispatch server 100. If the service is not located in data store 110, an error message is displayed, and an error is returned to the browser. If the service is in data store 110, then dispatch server next determines if the service is available at checkpoint 350. If the service is not available, an error message is displayed, and an error is returned to the browser. If the service is available, step 360 then resolves the service request into an application request. To do this, dispatch server 100 references data store 110 to determine the service definitions that are relevant to the invoked service. At checkpoint 370, dispatch server 100 determines if the service request contains any parameters. If the request does not contain any parameters, then dispatch server redirects the application request to the browser in step 430. If the request does contain parameters, then dispatch server determines if the parameters are valid for the indicated service at checkpoint 380. Again, dispatch server references data store 110 in determining if these parameters are valid for the particular service in question. If the parameters are invalid, an error message is displayed, and an error is returned to the browser. If the parameters are valid, dispatch server 100 processes the parameters in step 390. At checkpoint 400, dispatch server determines if any of the parameters are POST method parameters. As will be described in more detail below, parameters may be passed to an application server via the POST method, which passes parameters in data (other than in the URL) that is sent to the application server. If there are no POST method parameters, then dispatch server 100 redirects the application request to the browser in step 430. If there are POST method parameters, then dispatch server 100 creates a form using these parameters in step 410. In step 420, dispatch server 100 returns the form with an invocation of the onload event that calls the form's submit method, and then redirects the application request (which includes the form) to the browser in step 430. Flow diagram 300 ends with step 450.
  • FIGS. 5A and 5B (hereinafter referred to collectively as FIG. 5) show a flow chart illustrating a method for managing services through a user interface of a dispatch server according to one embodiment of the present invention. In this embodiment, user interface requests can be used to add, delete, and modify services and service definitions on the dispatch server. Flow diagram 500 begins with step 510, when a user interface request is received by the dispatch server. As discussed earlier, this user interface request will be sent to the dispatch server from an application server. In step 520, a welcome page with links will be displayed on dispatch server 100. At checkpoint 530, dispatch server 100 determines if the user interface request has made a selection to view registered services on dispatch server 100. After such a selection is made, dispatch server 100 displays all available services from database 110. Database 110 includes information for all currently registered services on dispatch server 100.
  • At checkpoint 660 of FIG. 5, dispatch server 100 determines if the user interface request includes a request to add a new service. If the request is to add a new service, step 670 enters the name of the new service from the request. In one embodiment, the request is parsed to extract the new service name. Step 680 checks database 110 for a similar service name. Database 110 includes information for all currently registered services on dispatch server 100. At checkpoint 690, dispatch server 100 determines if the new service name is unique from other service names currently registered in the system. If the name is not unique, control is returned to step 670 to enter another name for the new service. If the name is unique, then step 700 enters the service definition from the user interface request. In one embodiment, the user interface request is parsed to extract the service definition. After the service definition has been entered, the new service is registered in step 710 into database 110. Database 110 at this point contains the service definition for the new service. At checkpoint 720, dispatch server 100 determines if the service has parameters. If it does not, then dispatch server 100 determines if any more services are to be added at checkpoint 730. If the service does have parameters, then the parameters are entered in step 740. In one embodiment, the user interface request is parsed to extract the parameters. In step 750, the new parameters are registered into database 110 for the new service.
  • At checkpoint 550 of FIG. 5, dispatch server determines if the user interface request includes a request to edit an existing service. If the user interface request includes such a request, then step 560 queries database 110 to display the current service definition for the given service. In one embodiment, the user interface request is parsed to extract service information. At checkpoint 570, dispatch server 100 determines if the user interface request includes a request to delete a service. If it does not, the service definition is edited at step 590. Then, at checkpoint 600, dispatch server 100 determines if the parameters are to be edited. If they are not, then the service is updated in step 610 and database 110 is also updated for the edited service. If the parameters are to be edited at checkpoint 600, then current parameters are displayed in step 620. At the next checkpoint 630, dispatch server 100 determines if a parameter is to be deleted. If not, then the parameter definitions are edited in step 650, and the service is updated in step 610 (such that database 110 is updated). If the parameter is to be deleted, then the parameter is removed from database 110 in step 640. If dispatch server 100 determines that the service is to be deleted at checkpoint 570, then the enter service is removed from database 110 in step 580.
  • FIG. 6 is a textual view of an example of a service request sent to a dispatch server according to one embodiment of the present invention. In this embodiment, the core feature provided by the dispatch server is the ability to abstract the details of a specific web address into a generic service definition that hides much of the intelligence typically required in a link. Service request 800 shows the basic format for linking to a web application that is defined as a dispatch service. Textual element 801 of service request 800 is the name of the dispatch server. Textual element 802 of service request 800 is the name of a registered service on the dispatch server. Textual element 803 of service request 800 contains the parameters and/or values required for the indicated service. Thus, in this embodiment, a service request 800 sent to a dispatch server includes a dispatch server name, a registered service name, and parameter values. In some embodiments, the service request includes only a dispatch server name and a registered service name.
  • FIG. 7 is a textual view of an example of a translation of a service command into an application command according to one embodiment of the present invention. In this embodiment, an example of an employee lookup program is used to demonstrate the service-to-application translation capabilities of the dispatch server. Service command 810 is translated into application command 820 by a dispatch server. Textual element 811 of service command 810 is the communication protocol. Textual element 812 of service command 810 is the name of the dispatch server. Textual element 813 of service command 810 is the name of a registered employee lookup service on the dispatch server. At some previous time, the client who has sent this service command has discovered this service by name on the dispatch server. Textual element 814 of service command 810 is the parameter required by the service indicated by textual element 813. This parameter can be sent directly in service command 810. The dispatch server of this embodiment of the invention translates the service command 810 into application command 820. Application command 820 includes textual elements 821, 822, 823, and 824. Textual element 821 is the communication protocol. Textual element 822 is the name of the server running the particular application. Application command 820 is sent to this server. Textual element 823 is the path and name of the application running on the server. Textual element 824 is the information that the application needs in order to return the desired information for employee number 48.
  • In this embodiment, service registration and request redirection functionalities allow the dispatch server to translate service command 810 into application command 820. Before service command 810 arrives at the dispatch server, the employee lookup application owner must register the “employee lookup by_workno” service with the dispatch server, including a required parameter “emp” that designates a single employee number. Additionally, during registration, dispatch server must store data for the given service indicating that the program “emp/default.asp” on server “iisprod” must be invoked with a single parameter “emp.” Parameters may be passed to an application using a GET method, and also may be passed using a POST method. The GET method passes parameters to an application directly in the address (e.g. URL). The POST method passes parameters in other data that is sent to the application. In the present embodiment, the parameter “emp” is passed using the GET method. In some embodiments, the dispatch server also stores data for the given service that associates a description and owner with the service, and this information is provided to clients during service discovery.
  • After service registration, a client sends service command 810 to the dispatch server. After service command 810 is translated into application command 820 by the dispatch server, application command 820 is redirected back to the client. By sending the client back the application command in a redirect message, the dispatch server lets the client make the request to the application server directly. This approach has certain benefits. After the dispatch server has translated the request, it is basically done. This involves a simple database query and some possible data formatting, all of which can be done quite quickly. The dispatch server then sends a small amount of data back to the client. It does not have to wait for the target application to respond, nor does it route the results from the target application back to the client. This means that the dispatch server does not need to maintain any state information, and that the dispatch server will be able to handle many service commands per second. Further, the application command redirection approach minimizes the network path (and traffic) for the results to get from the target application back to the client. It also is important for usage logging, access tracking, and security management.
  • In another embodiment, the dispatch server directly sends application command 820 to the application server, and routes an application response back to the client. In this embodiment, the dispatch server would need to maintain some state information.
  • In yet another embodiment, the service registration process is at least partially automated. In this embodiment, a dispatch interface is designed so that an application can register itself for all of its available services. In one specific embodiment, the Extensible Markup Language (XML) provides a simple, hierarchical messaging protocol whereby the required service components are described, filed, and updated by existing applications.
  • In yet another embodiment, the dispatch server provides currently available service information to clients who send service inquiry requests to the dispatch server. In this way, clients find out about (i.e. discover) services offered by the dispatch server. In one specific embodiment, a client can inquire about a reserved service, such as a service named “info,” from the dispatch server. After receiving this inquiry, the dispatch server would return information about itself to the client. Further, if the “info” service is called with a “services” parameter (which is a reserved parameter name for the reserved service “info”), then the dispatch server will directly respond to the client with a list of published services, their names, required parameters, a description, and human contact information. In another embodiment, the service inquiry (i.e. discovery) process is also at least partially automated. In this embodiment, an XML-enabled interface is provided, such that clients inquire which services are available, and how to access them.
  • FIG. 8 is a textual view of an example of service invocation compression according to one embodiment of the present invention. In this example embodiment, service invocation 830 is compressed into a smaller service invocation 840. Both service invocations 830 and 840 of the present embodiment are in Uniform Resource Locator (URL) format. It is widely known that some web browsers and servers limit the length of a URL to 255 characters, which in turn limits the amount of information that can be passed to an application via the path or GET method. Because the web dispatch service limits the amount of information required in the links, the service also has the effect of compressing a URL (such as in a service invocation), which is to say that more information can be implicitly communicated in less space. Service invocation 830 includes two GET method parameters, “var1” and “var2”. The “var1” parameter is set equal to “value1” and the “var2” parameter is set equal to “value2.” Service invocation 840 takes full advantage of URL compression via parameter translation. The values “value1” and “value2” are passed directly in the service invocation, thus making service invocation 840 more compact.
  • Additional decoupling is available between calling and target applications if the dispatch server provides parameter formatting. This not only removes the burden of parameter formatting from the calling application, but also eliminates the need to possibly support multiple formatting of the same parameter for different target applications. FIG. 9 is a textual view of an example of service request translation and parameter formatting according to one embodiment of the present invention. In this embodiment, service request 850 is translated into content request 860, such that one of the parameters of the service request is properly formatted. Service request 850 includes a DnR service. Although FIG. 9 (and some of the other figures and portions of the present specification) make reference to DnR capabilities of Top Tier's Drag and Relate, these figures are used only as examples to show the utility of these embodiments of the present invention in various operating environments. Top Tier's Drag and Relate technologies are in no way associated with, or required by, these embodiments of the present invention. They are shown in the figures and further described only to exemplify the flexibility of use of a dispatch server in certain operating environments of these embodiments.
  • To send content request 860 to a DnR server, the DnR server requires the employee number to be an 8 digit integer with zero left padding. (In this scenario, DnR server is a content server.) In this instance, the formatting is performed by the dispatch server, and the formatting code is eliminated from the employee lookup program (i.e. client). FIG. 9 shows the format of the call to the dispatch server and the URL that is re-directed back to the client. We assume that the service “dnr_return_workno” has been previously registered with the dispatch server and in doing so, the format of the parameter is specified as an 8 digit integer with zero left padding. Content request 860 is a DnR link, where “hrnp://” is the Hyper Relational Navigation Protocol (for Top Tier Drag and Relate). “ntitsqaw03:9997” is the server (on port 9997 in this case). “BUS1065” is the name of the object. “OBJECTKEY” is the name of the objectid. And “00000048” is the parameter formatted that is being drag and related for employee number 48.
  • It should be noted that the example shown in FIG. 9 is somewhat artificial, in that DnR links in DEAs (DnR Enabled Applications) are only meant, as the name implies, to be drug to a DnR aware server and not simply clicked on as are other HTML links. Therefore, the client cannot return content request 860 as specified above. The link shown must be available as is so it is dragable (i.e., since we don't actually click on the link, it can't be sent to the dispatch server for interpretation). In FIG. 10, we present another embodiment of the dispatch server and demonstrate a more legitimate way to engage the dispatch server to remove DnR intelligence from DEAs.
  • Another key feature of another embodiment of a dispatch server is accepting a service request from a client that has only a subset of a target application's required parameters. This is to say that the dispatch server can provide default parameters if they are omitted. Continuing with the example embodiment above in FIG. 9, our goal is to remove intelligence from the employee lookup program (i.e. client), yet still allow it to be fully DnR enabled. The worker information is dynamic and must be passed to the employee lookup program in each call. However, the DnR information is static and constant across all calls. FIG. 10 is a textual view of an example of service request translation and parameter defaults according to one embodiment of the present invention. In this embodiment, service request 870 is translated into application link 880. We define a variable DNR that if present (via the GET or POST method) indicates to a target application that it is in DnR mode. We can further require that the value of the DnR variable be the DnR enabled link that the application must display. In FIG. 10, the embodiment of the dispatch server's parameter completion feature further removes intelligence from the calling application. In FIG. 10, we assume that the service “employee lookup_by_workeno_withDNR” has been previously defined with two parameters, one being the required employee number (emp), and also a second optional parameter (DNR) with a default value of “hrnp://ntitsqaw03:9997/BUS 1065/OBJECTKEY/#PARAM#emp”. Here, the “#PARAM#” string tells the dispatch server to substitute the value of another, non-default parameter, which in this case is “emp” that has a value of 48. When registering this application, we also expect that the default “DNR” parameter was specified to require left-zero formatting.
  • FIG. 11 is a textual view of an example of service request and method translation using form data according to one embodiment of the present invention. In this embodiment, the dispatch server is able to handle the case when a target application (on a service provider) is expecting parameters via the POST method. Dispatch server translates service request 890 into application link 900, wherein application link 900 includes the required POST method parameters with the form's “action” variable set to the target application's URL. In addition, application link 900 also includes an invocation of the “onload” event that calls the form's “submit” method. As soon as the form is received by the client from the dispatch server, it is immediately submitted, which is consistent with the redirect method used with the GET and path parameters (directly passed in the URL path) described in earlier embodiments of the invention. The two parameter values “value1” and “value2” are passed to the dispatch server via the path method have been translated to POST method variables via the form, and that a third parameter “var3” has been added as well. This third parameter is required by the application and automatically supplied by dispatch using parameter completion with its default value, “value3”. In this embodiment, additional bookmarking of applications is also allowed with the type of form data shown in application link 900. Typically, applications requiring POST method parameters cannot be bookmarked (or saved as a URL favorite), because there is no way to store the parameters in the URL, which is all that is saved in a bookmark. By allowing the parameters to be specified in a URL and later converted via the dispatch server to the expected POST method, an application that previously did not support bookmarking now does.
  • FIG. 12 is a textual view of an example of service request, method translation, and parameter transparency according to another embodiment of the present invention. In this embodiment, if path or parameter information is passed to the dispatch server for which no associated parameters are listed, then the dispatch server will simply pass on the path or parameter information in the same manner in which it was received. This provides maximum flexibility for migrating links to take full advantage of the dispatch service. In FIG. 12, service request 910 having GET parameters (“var” is implicitly provided by “value1,” and “var2” is explicitly provided as “value2”) is translated into POST method application request 920. In this embodiment, “var2” is not defined in the service database of the dispatch server, and thus it is simply passed along transparently as a parameter from service request 910 into application request 920, while “value1” is translated into a POST method parameter, and “value3” is supplied as a default value.
  • In another embodiment of the present invention, the dispatch server provides source routing. In this embodiment, service requests are translated into application requests just as before. However, during the translation process, the dispatch server determines the geographic location of the requesting client and one or more application servers that provide the requested service. That is to say, there can be many application servers in different geographic locations that provide the requested service. Source routing occurs when the dispatch server determines the closest application server to the requesting client when translating a service request and redirecting an application request back to the client. For example, in a specific embodiment, application servers in the United States, Italy, and Japan all provide a common service of “employee_stock_quoting.” A client in Italy sends a service request for “employee_stock_quoting” to the dispatch server. The dispatch server will achieve source routing by assessing the client's location (Italy), and determining that the nearest application server that provides the requested service is the one in Italy. The dispatch server will redirect an application request back to the client, wherein the application request includes the address of the application server in Italy.
  • In another embodiment, the dispatch server uses a load-balancing strategy when choosing the appropriate application server and thereby creating an application request. In this way, routing of requests is achieved to maximize the load-balancing strategy used by the dispatch server. This occurs when multiple application servers in a given geographic location provide the requested service. The dispatch server implements a load-balancing strategy to determine which application server will handle the application request. In one embodiment, the load-balancing strategy includes a round-robin strategy.
  • CONCLUSION
  • Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement which is calculated to achieve the same purpose may be substituted for the specific embodiment shown. This application is intended to cover any adaptations or variations of the present invention. Therefore, it is intended that this invention be limited by the claims and the equivalents thereof.

Claims (23)

1. A method for registering services on a web dispatch server, the method comprising:
sending a registration request from a host to the web dispatch server, the registration request having a first service name;
processing the registration request on the web dispatch server;
registering a new service for the registration request on the web dispatch server, the new service having a second service name; and
storing the new service in a web dispatch database,
such that a user can access the new service of the host by sending a service request to the web dispatch server.
2. The method of claim 1, wherein the first service name is substantially equal to the second service name.
3. The method of claim 1, wherein the registration request further includes one or more service parameters.
4. The method of claim 3, wherein the new service further includes one or more service parameters.
5. The method of claim 3, wherein the one or more service parameters of the registration request include a Universal Resource Locator.
6. The method of claim 4, wherein the one or more service parameters of the new service include a Universal Resource Locator.
7. The method of claim 1, further comprising:
displaying a web dispatch service user interface screen.
8. A method for centralized management of complex web links on a web dispatch provider, the method comprising:
storing an application service definition in a centralized database of the web dispatch provider, wherein the application service definition includes a service name and one or more service data entries;
receiving a first service request from an end-user;
translating the first service request into a first application request, wherein translating the first service request is at least partially based on the application service definition;
redirecting the first application request back to the end-user;
changing at least one of the one or more service data entries in the application service definition without changing the service name;
receiving a second service request from the end-user, wherein the second service request is substantially equal to the first service request;
translating the second service request into a second application request, wherein the second application request is substantially different from the first application request, and wherein translating the second service request is at least partially based on the changed application service definition; and
redirecting the second application request back to the end-user.
9. The method of claim 8, wherein the one or more service data entries of the application service definition include parameters for enablement and disablement.
10. The method of claim 8, wherein the method is performed in an order as recited in claim 8.
11. A system for registering services, the system comprising:
a web dispatch server comprising:
a data store; and
a processor programmed to process a registration request received from a host, the registration request having a first service name, registering a new service for the registration request, the new service having a second service name, and storing the new service in the data store, such that a user can access the new service of the host by sending a service request; and
the host operatively coupled to the web dispatch server, wherein the host is operable to send the registration request to the web dispatch server.
12. The method of claim 11, wherein the first service name is substantially equal to the second service name.
13. The method of claim 11, wherein the registration request further includes one or more service parameters.
14. The method of claim 11, wherein the registration request and the new service each further include one or more service parameters.
15. The method of claim 13, wherein the one or more service parameters of the registration request include a Universal Resource Locator.
16. The method of claim 13, wherein the one or more service parameters of the new service include a Universal Resource Locator.
17. The method of claim 11, wherein the processor is further programmed to initiate display of a web dispatch service user interface screen.
18. The method of claim 11, wherein the host is an application server.
19. The method of claim 11, wherein the host is a client computer.
20. A system for generating form data, the system comprising:
a web dispatch system comprising:
a data store; and
a processor programmed to direct a service request from a browser to a dispatch server, transform the service request into an application command, the application command including form data, and redirecting the application command back to the browser; and
a browser executed on a client computer and operatively coupled to the web dispatch system to send a service request to the web dispatch system.
21. The system of claim 20, wherein the service request does not include any form data.
22. The system of claim 20, wherein the browser is configured to send the service request using a POST method.
23. The system of claim 20, wherein the browser stores the service request as a browser bookmark.
US11/458,184 2002-05-06 2006-07-18 Web dispatch service Abandoned US20060253558A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/458,184 US20060253558A1 (en) 2002-05-06 2006-07-18 Web dispatch service

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/140,347 US7499983B2 (en) 2002-05-06 2002-05-06 Web dispatch service
US11/458,184 US20060253558A1 (en) 2002-05-06 2006-07-18 Web dispatch service

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/140,347 Division US7499983B2 (en) 2002-05-06 2002-05-06 Web dispatch service

Publications (1)

Publication Number Publication Date
US20060253558A1 true US20060253558A1 (en) 2006-11-09

Family

ID=29269662

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/140,347 Active 2024-05-08 US7499983B2 (en) 2002-05-06 2002-05-06 Web dispatch service
US11/458,184 Abandoned US20060253558A1 (en) 2002-05-06 2006-07-18 Web dispatch service

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10/140,347 Active 2024-05-08 US7499983B2 (en) 2002-05-06 2002-05-06 Web dispatch service

Country Status (1)

Country Link
US (2) US7499983B2 (en)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040111491A1 (en) * 2002-12-09 2004-06-10 Sun Microsystems, Inc. A Delaware Corporation Reducing overhead in reverse proxy servers when processing web pages
US20060143619A1 (en) * 2004-12-28 2006-06-29 Galin Galchev Connection manager for handling message oriented protocol-based requests
US20060143618A1 (en) * 2004-12-28 2006-06-29 Christian Fleischer Connection manager that supports failover protection
US20060155867A1 (en) * 2004-12-28 2006-07-13 Frank Kilian Connection manager having a common dispatcher for heterogeneous software suites
US7689660B2 (en) 2005-06-09 2010-03-30 Sap Ag Application server architecture
US7694065B2 (en) 2004-12-28 2010-04-06 Sap Ag Distributed cache architecture
US7840760B2 (en) 2004-12-28 2010-11-23 Sap Ag Shared closure eviction implementation
US7966412B2 (en) 2005-07-19 2011-06-21 Sap Ag System and method for a pluggable protocol handler
US7971001B2 (en) 2004-12-28 2011-06-28 Sap Ag Least recently used eviction implementation
US7996615B2 (en) 2004-12-28 2011-08-09 Sap Ag Cache region concept
US20110231477A1 (en) * 2010-03-22 2011-09-22 Ido Safruti System and method to service requests from a plurality of sources
US20110282936A1 (en) * 2010-04-22 2011-11-17 Mark Chekhanovskiy Device and service management based on layer 2 through layer 7 device attributes
US20120254374A1 (en) * 2011-04-02 2012-10-04 Recursion Software, Inc. System and method for proxy address neutrality
US20120254375A1 (en) * 2011-04-02 2012-10-04 Recursion Software, Inc. System and method for connection efficiency
US8589562B2 (en) 2005-04-29 2013-11-19 Sap Ag Flexible failover configuration
US8707323B2 (en) 2005-12-30 2014-04-22 Sap Ag Load balancing algorithm for servicing client requests
US8799359B2 (en) 2004-12-28 2014-08-05 Sap Ag Session management within a multi-tiered enterprise network
US8856907B1 (en) 2012-05-25 2014-10-07 hopTo Inc. System for and methods of providing single sign-on (SSO) capability in an application publishing and/or document sharing environment
US8863232B1 (en) 2011-02-04 2014-10-14 hopTo Inc. System for and methods of controlling user access to applications and/or programs of a computer
US9239812B1 (en) * 2012-08-08 2016-01-19 hopTo Inc. System for and method of providing a universal I/O command translation framework in an application publishing environment
US9398001B1 (en) 2012-05-25 2016-07-19 hopTo Inc. System for and method of providing single sign-on (SSO) capability in an application publishing environment
US9419848B1 (en) 2012-05-25 2016-08-16 hopTo Inc. System for and method of providing a document sharing service in combination with remote access to document applications

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7324633B2 (en) * 2002-05-30 2008-01-29 At&T Delaware Intellectual Property, Inc. Web integrated interactive voice response
US20040015543A1 (en) * 2002-07-19 2004-01-22 Martin Schmidt Manufacturing data access
EP1634423B1 (en) * 2003-06-06 2013-01-02 Computer Associates Think, Inc. System and method for compressing url request parameters
GB0313375D0 (en) * 2003-06-10 2003-07-16 Symbian Ltd Method of connecting a client running on a computing device to a server running on a different computing device
US8949311B2 (en) * 2003-08-29 2015-02-03 International Business Machines Corporation Dynamic, non-intrusive personalization of web services
US7752634B1 (en) * 2003-08-29 2010-07-06 International Business Machines Corporation Non-intrusive personalization of web services
US7647370B1 (en) * 2003-10-24 2010-01-12 Verizon Data Services Llc Screen scraping interface
US8145731B2 (en) * 2003-12-17 2012-03-27 Hewlett-Packard Development Company, L.P. System and method for determining how many servers of at least one server configuration to be included at a service provider's site for supporting an expected workload
US20060117020A1 (en) * 2004-12-01 2006-06-01 John Toebes Arrangement for selecting a server to provide distributed services from among multiple servers based on a location of a client device
US7552153B2 (en) 2004-12-28 2009-06-23 Sap Ag Virtual machine monitoring using shared memory
US7647394B2 (en) * 2005-02-15 2010-01-12 Microsoft Corporation Scaling UPnP v1.0 device eventing using peer groups
US7640329B2 (en) * 2005-02-15 2009-12-29 Microsoft Corporation Scaling and extending UPnP v1.0 device discovery using peer groups
US20060184679A1 (en) * 2005-02-16 2006-08-17 Izdepski Erich J Apparatus and method for subscribing to a web logging service via a dispatch communication system
US8583793B2 (en) * 2006-11-20 2013-11-12 Apple Inc. System and method for providing a hypertext transfer protocol service multiplexer
US7853694B2 (en) * 2006-12-07 2010-12-14 Electronics And Telecommunications Research Institute System and method for providing contents service using service relaying apparatus
US7908317B2 (en) * 2007-06-07 2011-03-15 Oracle International Corporation System and method for URL compression
KR100917606B1 (en) 2007-09-21 2009-09-17 한국전자통신연구원 System and method for provideing application service using image data
ATE505896T1 (en) * 2007-10-04 2011-04-15 U Man Universal Media Access Networks Gmbh DIGITAL MULTIMEDIA NETWORK WITH HIERARCHICAL PARAMETER CONTROL PROTOCOL
US20090094091A1 (en) * 2007-10-05 2009-04-09 Xerox Corporation Service call data selection and delivery method and system
US8566961B2 (en) * 2008-08-08 2013-10-22 Absolute Software Corporation Approaches for a location aware client
US9160611B2 (en) * 2009-04-22 2015-10-13 Webroot Inc. System and method for performing longest common prefix strings searches
US8484286B1 (en) * 2009-11-16 2013-07-09 Hydrabyte, Inc Method and system for distributed collecting of information from a network
CA2762808C (en) 2010-12-29 2019-07-09 Bce Inc. Method and system for trigger management in an interactive television environment
CN103493042B (en) * 2011-04-28 2016-04-06 乐天株式会社 The method that browing system, image server and image server perform
US9578114B2 (en) 2011-09-27 2017-02-21 Microsoft Technology Licensing, Llc External service application discovery method
US10448226B1 (en) * 2018-08-20 2019-10-15 The Boeing Company Network service exchange system and method of using same

Citations (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574904A (en) * 1990-01-19 1996-11-12 Fujitsu Limited Database management system in an intelligent network using a common request data format
US5689697A (en) * 1994-06-27 1997-11-18 International Business Machines Corporation System and method for asynchronous database command processing
US5838916A (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
US5848424A (en) * 1996-11-18 1998-12-08 Toptier Software, Inc. Data navigator interface with navigation as a function of draggable elements and drop targets
US6014660A (en) * 1996-12-09 2000-01-11 Sun Microsystems, Inc. Method and apparatus for client-sensitive name resolution using DNS
US6202159B1 (en) * 1999-06-30 2001-03-13 International Business Machines Corporation Vault controller dispatcher and methods of operation for handling interaction between browser sessions and vault processes in electronic business systems
US20020032797A1 (en) * 2000-09-08 2002-03-14 Wei Xu Systems and methods for service addressing
US20020046170A1 (en) * 2000-10-12 2002-04-18 Toptier, Israel, Ltd. User impersonation by a proxy server
US20020078168A1 (en) * 2000-09-06 2002-06-20 Jacob Christfort Developing applications online
US20020095488A1 (en) * 2000-11-13 2002-07-18 Leonard Primak System and method for discovering, advertising, and finding networked services using dynamic directory
US6441834B1 (en) * 1998-03-26 2002-08-27 Sap Portals, Inc. Hyper-relational correlation server
US6446135B1 (en) * 1996-03-05 2002-09-03 Microsoft Corporation Method and system for querying and executing commands of an application program
US20020129149A1 (en) * 2001-03-06 2002-09-12 Kenneth Schulz Method and system for automatically directing a web user to a selected web server
US6457012B1 (en) * 1997-06-10 2002-09-24 Pitney Bowes Inc. Method and system of updating address records utilizing a clientserver interface
US20020138660A1 (en) * 2001-03-23 2002-09-26 Bernd Eilers Method and system for the redirection of client requests
US20020152210A1 (en) * 2001-04-03 2002-10-17 Venetica Corporation System for providing access to multiple disparate content repositories with a single consistent interface
US6480842B1 (en) * 1998-03-26 2002-11-12 Sap Portals, Inc. Dimension to domain server
US20030078961A1 (en) * 2001-10-18 2003-04-24 International Business Machines Corporation Method and apparatus for partitioned environment for web application servers
US6567848B1 (en) * 1998-11-10 2003-05-20 International Business Machines Corporation System for coordinating communication between a terminal requesting connection with another terminal while both terminals accessing one of a plurality of servers under the management of a dispatcher
US6651072B1 (en) * 1995-10-20 2003-11-18 Ncr Corporation Method and apparatus for providing shared data to a requesting client
US6961760B2 (en) * 2001-07-17 2005-11-01 International Business Machines Corporation Transforming data automatically between communications parties in a computing network

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US46170A (en) * 1865-01-31 Alojstzo wooi
US6212565B1 (en) * 1998-08-26 2001-04-03 Sun Microsystems, Inc. Apparatus and method for improving performance of proxy server arrays that use persistent connections
US7080158B1 (en) * 1999-02-09 2006-07-18 Nortel Networks Limited Network caching using resource redirection

Patent Citations (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574904A (en) * 1990-01-19 1996-11-12 Fujitsu Limited Database management system in an intelligent network using a common request data format
US5689697A (en) * 1994-06-27 1997-11-18 International Business Machines Corporation System and method for asynchronous database command processing
US6651072B1 (en) * 1995-10-20 2003-11-18 Ncr Corporation Method and apparatus for providing shared data to a requesting client
US6446135B1 (en) * 1996-03-05 2002-09-03 Microsoft Corporation Method and system for querying and executing commands of an application program
US5838916A (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
US5848424A (en) * 1996-11-18 1998-12-08 Toptier Software, Inc. Data navigator interface with navigation as a function of draggable elements and drop targets
US6014660A (en) * 1996-12-09 2000-01-11 Sun Microsystems, Inc. Method and apparatus for client-sensitive name resolution using DNS
US6457012B1 (en) * 1997-06-10 2002-09-24 Pitney Bowes Inc. Method and system of updating address records utilizing a clientserver interface
US6480842B1 (en) * 1998-03-26 2002-11-12 Sap Portals, Inc. Dimension to domain server
US6441834B1 (en) * 1998-03-26 2002-08-27 Sap Portals, Inc. Hyper-relational correlation server
US6567848B1 (en) * 1998-11-10 2003-05-20 International Business Machines Corporation System for coordinating communication between a terminal requesting connection with another terminal while both terminals accessing one of a plurality of servers under the management of a dispatcher
US6202159B1 (en) * 1999-06-30 2001-03-13 International Business Machines Corporation Vault controller dispatcher and methods of operation for handling interaction between browser sessions and vault processes in electronic business systems
US20020078168A1 (en) * 2000-09-06 2002-06-20 Jacob Christfort Developing applications online
US20020032797A1 (en) * 2000-09-08 2002-03-14 Wei Xu Systems and methods for service addressing
US20020046170A1 (en) * 2000-10-12 2002-04-18 Toptier, Israel, Ltd. User impersonation by a proxy server
US20020095488A1 (en) * 2000-11-13 2002-07-18 Leonard Primak System and method for discovering, advertising, and finding networked services using dynamic directory
US20020129149A1 (en) * 2001-03-06 2002-09-12 Kenneth Schulz Method and system for automatically directing a web user to a selected web server
US20020138660A1 (en) * 2001-03-23 2002-09-26 Bernd Eilers Method and system for the redirection of client requests
US20020152210A1 (en) * 2001-04-03 2002-10-17 Venetica Corporation System for providing access to multiple disparate content repositories with a single consistent interface
US6961760B2 (en) * 2001-07-17 2005-11-01 International Business Machines Corporation Transforming data automatically between communications parties in a computing network
US20030078961A1 (en) * 2001-10-18 2003-04-24 International Business Machines Corporation Method and apparatus for partitioned environment for web application servers

Cited By (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409439B2 (en) * 2002-12-09 2008-08-05 Sun Microsystems Inc. Reducing overhead in reverse proxy servers when processing web pages
US20040111491A1 (en) * 2002-12-09 2004-06-10 Sun Microsystems, Inc. A Delaware Corporation Reducing overhead in reverse proxy servers when processing web pages
US7672949B2 (en) * 2004-12-28 2010-03-02 Sap Ag Connection manager having a common dispatcher for heterogeneous software suites
US20060155867A1 (en) * 2004-12-28 2006-07-13 Frank Kilian Connection manager having a common dispatcher for heterogeneous software suites
US20060143618A1 (en) * 2004-12-28 2006-06-29 Christian Fleischer Connection manager that supports failover protection
US7500133B2 (en) 2004-12-28 2009-03-03 Sap Ag Connection manager for handling message oriented protocol-based requests
US20060143619A1 (en) * 2004-12-28 2006-06-29 Galin Galchev Connection manager for handling message oriented protocol-based requests
US10007608B2 (en) 2004-12-28 2018-06-26 Sap Se Cache region concept
US7694065B2 (en) 2004-12-28 2010-04-06 Sap Ag Distributed cache architecture
US7840760B2 (en) 2004-12-28 2010-11-23 Sap Ag Shared closure eviction implementation
US7933947B2 (en) 2004-12-28 2011-04-26 Sap Ag Connection manager that supports failover protection
US9009409B2 (en) 2004-12-28 2015-04-14 Sap Se Cache region concept
US7971001B2 (en) 2004-12-28 2011-06-28 Sap Ag Least recently used eviction implementation
US7996615B2 (en) 2004-12-28 2011-08-09 Sap Ag Cache region concept
US8799359B2 (en) 2004-12-28 2014-08-05 Sap Ag Session management within a multi-tiered enterprise network
US8589562B2 (en) 2005-04-29 2013-11-19 Sap Ag Flexible failover configuration
US9432240B2 (en) 2005-04-29 2016-08-30 Sap Se Flexible failover configuration
US7689660B2 (en) 2005-06-09 2010-03-30 Sap Ag Application server architecture
US7966412B2 (en) 2005-07-19 2011-06-21 Sap Ag System and method for a pluggable protocol handler
US8707323B2 (en) 2005-12-30 2014-04-22 Sap Ag Load balancing algorithm for servicing client requests
US20110231477A1 (en) * 2010-03-22 2011-09-22 Ido Safruti System and method to service requests from a plurality of sources
US20110282936A1 (en) * 2010-04-22 2011-11-17 Mark Chekhanovskiy Device and service management based on layer 2 through layer 7 device attributes
US8626921B2 (en) * 2010-04-22 2014-01-07 Cisco Technology, Inc. Device and service management based on layer 2 through layer 7 device attributes
US9465955B1 (en) 2011-02-04 2016-10-11 hopTo Inc. System for and methods of controlling user access to applications and/or programs of a computer
US8863232B1 (en) 2011-02-04 2014-10-14 hopTo Inc. System for and methods of controlling user access to applications and/or programs of a computer
US9165160B1 (en) 2011-02-04 2015-10-20 hopTo Inc. System for and methods of controlling user access and/or visibility to directories and files of a computer
US8788630B2 (en) * 2011-04-02 2014-07-22 Open Invention Network, Llc System and method for proxy address neutrality
US9002994B2 (en) * 2011-04-02 2015-04-07 Open Invention Network, Llc System and method for connection efficiency
US20120254374A1 (en) * 2011-04-02 2012-10-04 Recursion Software, Inc. System and method for proxy address neutrality
US9571607B1 (en) * 2011-04-02 2017-02-14 Open Invention Network, Llc System and method for connection efficiency
US9876677B1 (en) * 2011-04-02 2018-01-23 Open Invention Network, Llc System and method for connection efficiency
US20120254375A1 (en) * 2011-04-02 2012-10-04 Recursion Software, Inc. System and method for connection efficiency
US9398001B1 (en) 2012-05-25 2016-07-19 hopTo Inc. System for and method of providing single sign-on (SSO) capability in an application publishing environment
US9401909B2 (en) 2012-05-25 2016-07-26 hopTo Inc. System for and method of providing single sign-on (SSO) capability in an application publishing environment
US9419848B1 (en) 2012-05-25 2016-08-16 hopTo Inc. System for and method of providing a document sharing service in combination with remote access to document applications
US8856907B1 (en) 2012-05-25 2014-10-07 hopTo Inc. System for and methods of providing single sign-on (SSO) capability in an application publishing and/or document sharing environment
US9239812B1 (en) * 2012-08-08 2016-01-19 hopTo Inc. System for and method of providing a universal I/O command translation framework in an application publishing environment

Also Published As

Publication number Publication date
US20030208563A1 (en) 2003-11-06
US7499983B2 (en) 2009-03-03

Similar Documents

Publication Publication Date Title
US7499983B2 (en) Web dispatch service
US7571208B2 (en) Creating proxies from service description metadata at runtime
US6397253B1 (en) Method and system for providing high performance Web browser and server communications
US7024451B2 (en) System and method for maintaining consistent independent server-side state among collaborating servers
US7269664B2 (en) Network portal system and methods
US7472349B1 (en) Dynamic services infrastructure for allowing programmatic access to internet and other resources
US6260078B1 (en) Using a distributed object system to find and download java-based applications
JP3967806B2 (en) Computerized method and resource nomination mechanism for nominating a resource location
US6542908B1 (en) Technique for automatically and transparently transforming software components into software components capable of execution in a client/server computing environment
US6996622B2 (en) Session managing method, session managing system, and program
US5740430A (en) Method and apparatus for server-independent caching of dynamically-generated customized pages
US7320023B2 (en) Mechanism for caching dynamically generated content
US7103627B2 (en) Web-based system and method
EP1461928B1 (en) Method and system for network caching
US7454479B2 (en) Flexible teleport architecture
US6209029B1 (en) Method and apparatus for accessing data sources in a three tier environment
US6301617B1 (en) Selection of resources utilizing virtual uniform resource locators
US6253254B1 (en) Hyper media object management
US20020065899A1 (en) System and method for delivering dynamic content
US20110321010A1 (en) Web application framework based on object oriented class mapping
US20060161685A1 (en) Client aware extensible markup language content retrieval and integration in a wireless portal system
US20080071922A1 (en) Methods, systems, and computer program products to transparently dispatch requests to remote resources in a multiple application server environment
JPH117405A (en) File shared system
CA2409882A1 (en) Persistent data storage for metadata related to web service entities
JP2002196932A (en) Extensible providing mechanism for service gateway

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: EXPRESSLY ABANDONED -- DURING EXAMINATION