1. Technical Field
The invention relates generally to integrating web services, and more specifically, to a solution that provides client-based aggregation and management of web services.
2. Background Art
Increasingly, the Internet is changing from a network primarily used to transfer files, to one that is used to provide services. A “web service” comprises an application that dynamically interacts with another application over the Internet. Typically, rather than transferring a file, the source application transfers data to the destination application, which in turn processes the data in some manner for display. For example, a weather web service can provide data on the weather for a given location that is subsequently formatted by a destination application for display as part of a custom web page.
An Internet portal (e.g., Yahoo, America Online, etc.) commonly allows a user to set up a personalized home page that can include customized selections of content. The personalized home page can include one or more “portlets” (e.g., sports, weather, business, etc.) that the user selects. Each portlet comprises a designated area of the home page in which information obtained from a web service is displayed. Unfortunately, in creating the home page, the user is limited to those selections that are provided by the Internet portal. Moreover, aggregation and management of the selected content occurs at the server.
As the popularity of web services increases, users increasingly desire more flexibility in selecting web services. Many users do not want to be limited to those selections provided by a particular Internet portal. Further, as the number of web services available increases, users also desire the ability to search and select web services based on specified criteria such as cost, reliability, etc. As a result, many users will become frustrated with the current limitations, and will desire to manage and aggregate content at their client computers.
As a result, a need exists for an improved system, method, and program product for integrating web services. In particular, a need exists for the selection and aggregation of web services to occur at a client computer, rather than through an Internet portal or the like.
The invention provides a solution for integrating web services on a client computer. Specifically, under the present invention, a set of web services is selected at a client computer based on a user-specified selection criteria. Subsequently, service data from each of the selected web services is received and aggregated at the client computer. Further, one embodiment of the invention stores the service data in a structured data object. Use of the structured data object allows the service data to be cached, pre-fetched, etc. As a result, the invention allows a user to directly select desired web services at the client computer, without any constraints inherent in relying on those web services made available by a particular web site or another third party. Consequently, no mediator is necessary between the end user and providers of the web services.
A first aspect of the invention provides a method of integrating web services on a client computer, the method comprising: selecting a set of web services at the client computer based on selection criteria; receiving service data over a network from each of the selected set of web services; and aggregating the service data at the client computer.
A second aspect of the invention provides a method of integrating web services on a client computer, the method comprising: receiving selection criteria at the client computer; selecting a set of web services based on the selection criteria; receiving service data over a network from each of the selected set of web services; aggregating the service data at the client computer; and displaying the aggregated service data at the client computer.
A third aspect of the invention provides a system for integrating web services on a client computer, the system comprising: a selection system for selecting a set of web services at the client computer based on selection criteria; a communication system for receiving service data on the client computer over a network from each of the selected set of web services; and an aggregation system for aggregating the service data on the client computer.
A fourth aspect of the invention provides a program product stored on a recordable medium for integrating web services on a client computer, which when executed comprises: program code for selecting a set of web services at the client computer based on selection criteria; program code for receiving service data at the client computer over a network from each of the selected set of web services; program code for aggregating the service data at the client computer.
The illustrative aspects of the present invention are designed to solve the problems herein described and other problems not discussed, which are discoverable by a skilled artisan.
These and other features of this invention will be more readily understood from the following detailed description of the various aspects of the invention taken in conjunction with the accompanying drawings in which:
It is noted that the drawings of the invention are not to scale. The drawings are intended to depict only typical aspects of the invention, and therefore should not be considered as limiting the scope of the invention. In the drawings, like numbering represents like elements between the drawings.
As indicated above, the invention provides a solution for integrating web services on a client computer. Specifically, under the present invention, a set of web services is selected at a client computer based on a user-specified selection criteria. Subsequently, service data from each of the selected web services is received and aggregated at the client computer. Further, one embodiment of the invention stores the service data in a structured data object. Use of the structured data object allows the service data to be cached, pre-fetched, etc. As a result, the invention allows a user to directly select desired web services at the client computer, without any constraints inherent in relying on those web services made available by a particular web site or another third party. Consequently, no mediator is necessary between the end user and providers of the web services.
It should be understood in advance that as used herein, “web service” is intended to refer to any type of service that can be delivered over a network. To this extent, a web service can provide data such as numerical data, text, graphics, sounds, or any combination thereof to another application over a network. Further, it should be understood that the term “set,” as used herein, denotes “one or more.”
Turning to the drawings,
Many web services 28A-E generate and communicate data for a particular content area (e.g., weather, sports, financial, etc.). Data may be communicated upon request, upon a change in data, periodically, or some combination of these. Rather than selecting several web services 28A-E in varying content areas, a portal service 44 can be selected. Portal service 44 comprises a web service that generates and communicates portal pages. A portal page comprises a web page that includes one or more portlets. A portlet comprises an area of a portal page that is filled with content from a remote portlet server (not shown). Each portlet can include content from a different content area. It is understood that each portlet could comprise a standard or remote portlet (e.g., Web Services for Remote Portals). As a result, portal service 44 can communicate data from a variety of content areas, and frequently formats the data for presentation to user 26.
Still further, a virtual web service 46 can be selected. Virtual web service 46 comprises a web service that obtains data from a variety of web services 28C-E in a particular content area (e.g., weather). Virtual web service 46 then selects data from one or more of the web services 28C-E to communicate to computer 12 as its own data. From the perspective of computer 12, all the data it receives originates from virtual web service 46. However, virtual web service 46 may automatically change the web service(s) 28C-E from which the data is selected, or combine data from multiple web services 28C-E. The selection can be based on selection criteria such as performance, price, accuracy, etc. Selection criteria can be provided by user 26 (e.g., price) via computer 12 and/or can be implemented automatically by virtual web service 46 (e.g., performance).
For example, web services 28C-E can comprise distinct providers of weather-related data. Virtual web service 46 can receive the data from each of the web services 28C-E. However, virtual web service 46 can selectively use the weather data from one or more of the web services 28C-E to provide to computer 12. For example, web service 28C may be the most accurate, so virtual web service 46 can initially select its data. Over time, however, web service 28C may not timely provide weather data due to a communication failure or the like. As a result, virtual web service 46 may then provide a combination of weather data from web services 28D-E.
As shown, computer 12 generally includes central processing unit (CPU) 14, memory 16, input/output (I/O) interface 18, bus 20, external I/O devices/resources 22, and a storage unit 24. CPU 14 may comprise a single processing unit, or be distributed across one or more processing units in one or more locations, e.g., on a client and server. Memory 16 may comprise any known type of data storage and/or transmission media, including magnetic media, optical media, random access memory (RAM), read-only memory (ROM), a data cache, a data object, etc. Storage unit 24 may comprise any type of data storage for providing more static storage of data used in the present invention. As such, storage unit 24 may include one or more storage devices, such as a magnetic disk drive or an optical disk drive. Moreover, similar to CPU 14, memory 16 and/or storage unit 24 may reside at a single physical location, comprising one or more types of data storage, or be distributed across a plurality of physical systems in various forms. Further, memory 16 and/or storage unit 24 can include data distributed across, for example, a LAN, WAN or a storage area network (SAN) (not shown).
I/O interface 18 may comprise any system for exchanging information to/from an external source. I/O devices 22 may comprise any known type of external device, including speakers, a CRT, LED screen, handheld device, keyboard, mouse, voice recognition system, speech output system, printer, monitor/display, facsimile, pager, etc. Bus 20 provides a communication link between each of the components in computer 12 and likewise may comprise any known type of transmission link, including electrical, optical, wireless, etc. In addition, although not shown, additional components, such as cache memory, communication systems, system software, etc., may be incorporated into computer 12.
Further, it is understood that computer 12 comprises any type of computing device capable of communicating with one or more other computing devices (e.g., web services 28A-B). For example, computer 12 can comprise a server, a desktop computer, a laptop, a handheld device, a mobile phone, a pager, a personal data assistant, etc. It is understood, however, that if computer 12 is a handheld device or the like, a display could be contained within computer 12, and not as an external I/O device 22 as shown for computer 12. Similarly, web services 28A-E (
Shown stored in memory 16 is an integration system 30 that integrates web services on computer 12. Integration system 30 is shown including a criteria system 32, a selection system 34, an aggregation system 36, a display system 38, and a communication system 40. Communication system 40 sends and receives data from one or more other computing systems (e.g., web services 28A-B). When data is received, communication system 40 determines the validity of the data, whether it should be processed by computer 12, and if so, the corresponding system to which the data should be forwarded. Communication system 40 then provides the data to the appropriate system for processing. As such, it is understood that the functions performed by communication system 40 can be incorporated into the appropriate systems and/or be implemented apart from integration system 30. Communication system 40 is shown separately here for clarity. Operation of the remaining systems will be described below with reference to
A virtual web service 42 is also shown in memory 16. Virtual web service 42 functions in the same manner as virtual web service 46 shown and discussed above with reference to
Selection system 34 selects web services 28A-B based on selection criteria 50. For example, selection system 34 can provide some or all of selection criteria 50 to a global service registry implemented using an open standard such as Universal Description, Discovery and Integration (UDDI) to determine available web services 28A-B. The global service registry comprises a central list on which web services 28A-B are registered. Use of the global service registry or the like allows end users to obtain a list of available web services 28A-B by communicating with a single location. However, it is understood that web services 28A-B can be located and selected using any manner. For example, selection system 34 can broadcast a request for a web service 28A-B meeting some or all of the constraints of selection criteria 50, and various web services 28A-B can respond as being available. In any event, selection system 34 will then select the web services 28A-B that best meet selection criteria 50. In one embodiment, selection system 34 makes the selection automatically. In another embodiment, user 26 (
Once selected, web services 28A-B communicate service data to computer 12 for processing.
As noted, display system 38 displays the aggregated service data at computer 12 as a custom page 56. In order to do this, display system 38 can obtain display attributes 54 for user 26 (
In one embodiment, web services 28A-B (
Use of the display markup attribute or the like allows the display and user interface attributes to be separated from the web service itself (i.e., providing of service data). Consequently, service data 52A-B can be managed in a manner similar to data generated on computer 12. For example, aggregation system 36 can generate and maintain a structured data object for the service data 52A-B. Computer 12 can manage the structured data object according to the caching rules and the like of computer 12. The structured data object can also be used to pre-fetch service data 52A-B. Frequently, custom page 56 can include service data 52A-B that comprises a summary of a larger amount of data. Custom page 56 can provide user 26 (
Aggregation system 36 could also anticipate that user 26 may seek to view the additional data, and can obtain the additional service data 52A-B from the appropriate web service 28A-B prior to its selection and store it in the structured data object. For example, custom page 56 can include the total amount of money in user's 26 bank accounts (e.g., savings account and checking account). When aggregation system 36 establishes a connection with the bank's web service, aggregation system 36 can create a structured data object for the account information. Subsequently, the account information can be filled in as service data is received from the bank's web service. User 26 can select to view the most recent transactions for the savings account. Upon this selection, display system 38 can first determine if the data object already includes the necessary service data. If the service data is included, it can be used to assemble the new page. If it is not available, aggregation system 36 can retrieve the necessary service data and store it in the data object for future use. Subsequently, user 26 may select to return to the initial account summary view, display system 38 can use the information stored in the structured data object to assemble the page. As a result, aggregation system 36 does not need to obtain this information from the bank's web service a second time.
It is understood that the present invention can be realized in hardware, software, or a combination of hardware and software. Any kind of computer/server system(s)—or other apparatus adapted for carrying out the methods described herein—is suited. A typical combination of hardware and software could be a general-purpose computer system with a computer program that, when loaded and executed, carries out the respective methods described herein. Alternatively, a specific use computer, containing specialized hardware for carrying out one or more of the functional tasks of the invention, could be utilized. The present invention can also be embedded in a computer program product, which comprises all the respective features enabling the implementation of the methods described herein, and which—when loaded in a computer system—is able to carry out these methods. Computer program, software program, program, or software, in the present context mean any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: (a) conversion to another language, code or notation; and/or (b) reproduction in a different material form.
The foregoing description of various aspects of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed, and obviously, many modifications and variations are possible. Such modifications and variations that may be apparent to a person skilled in the art are intended to be included within the scope of the invention as defined by the accompanying claims.