CROSS-REFERENCE TO RELATED APPLICATIONS This application is a continuation of prior U.S. application Ser. No. 09/587,075, filed Jun. 2, 2000, which is a continuation-in-part of U.S. application Ser. No. 09/429,585, filed Oct. 28, 1999, now U.S. Pat. No. 7,107,548, all of which are incorporated herein in their entirety by reference.
FIELD OF THE INVENTION The present invention is directed to the field of software systems and applications, and, more particularly, to a method and system for dynamically managing the resources of at least one application stored on a computer and for permitting the customization of the operation and interface of at least one application in response to a change in user preference.
BACKGROUND OF THE INVENTION Generally speaking, software applications consist of many files, all of which interoperate to provide the overall functionality of, and the user interface to, the application. Applications can be executables, scripts, and/or libraries such as dynamic link libraries (DLLs), or any combination thereof, which may be provided with resources that support the application's functionality and interface features. At present, DLLs, which are libraries of executable code and/or data, are commonly used by programmers to provide one or more of the functions of an application. The application dynamically links to the DLLs, which are often distributed with the application. In some instances, DLLs may be shared among applications or made available by an operating system. Therefore, both the DLLs and the application code which is programmed to link to the DLLs must be present on the computer at runtime for the application to function properly.
As used herein, the term “resource” or “resources” is used in accordance with its ordinary meaning and generally refers to a library containing text strings and/or image data processed by an application, such as for example those needed to generate a portion of the user interface. The resources of an application may, for example, be encompassed in one or more DLLs, text files, executables, or data files of any type.
Increasingly, however, due to the emergence of global communication networks, such as the Internet and/or the World Wide Web (the “Web”), the global distribution of computer applications has increased markedly. Through electronic file transfer protocols, web-based application providers can distribute applications to users in many different countries. Undoubtedly, these applications will require updates and patches, which may require additional resources. Moreover, it is likely that users will have different preferences related to the operation of the application.
Currently, applications, such as executables, Active X Controls, and the like, are downloaded to a client computer where the application is processed. In many instances, however, the application accesses the Internet or other communication network to retrieve information or content, such as stock quotes, news, electronic mail, and the like. Such “web-based” applications have become popular for a variety of functions because they have the ability to extract and display information in real-time or near real-time from remote databases.
Users desiring such web-based applications commonly register with an on-line application/content provider and download the application to the user's computer, typically referred to as the client computer. During the registration process, the user may be asked to enter personal information or preferences so that the operation and interface of the application can be customized. For instance, users from different countries may have a preference for which language (i.e., English, German, French, etc.) the application utilizes to generate the graphical user interface (GUI) and to communicate with the user. Indeed, in many instances, a user may download a series of applications which may each have certain similar customizable aspects. Furthermore, these applications may utilize the same resources and may be amenable to similar updates.
The presently known methods and systems for managing such resources and for permitting the customization of the operation and interface of applications have shortcomings. For example, known programming methods cannot effectively update or patch existing resources or integrate new resources not initially incorporated into an application without having to restart the application. Therefore, these methods and systems fail to satisfactorily permit the customization of an application to different user preferences. In addition, known methods and systems do not efficiently permit an application/content provider to distribute a single international application.
One known method and system requires that the resources for customizing the application be built (or hard-coded) into the application itself and distributed with each copy. This method, however, undesirably increases the size of the application and is unable to process resources that were not incorporated into the application at the time of download and installation. Because these web-based applications are generally downloaded from remote servers using file transfer protocols (FTP), increased file size adversely affects the file transfer performance, and this increased time factor may be a deterrent to a user downloading it, in addition to increasing necessary network overhead.
Another known method requires the development of separate versions of the application with support for each particular preference. For instance, in the case of language preferences, a developer could provide a separate version for every region to which the application would be distributed. Maintaining numerous versions, however, is time consuming and can result in increased costs to the developer and users.
Yet another known solution would be to build client-side scripts or server-side software applications, which run within the user's Internet browser. In use, only the version of the scripted application that corresponds to the user's particular preference would be downloaded. A change of preference would prompt the download of a separate version of the scripted application. Such scripted applications, however, such as, for example, JavaScript™, are limited by the functionality and extensibility of the scripting language, which often does not have the same speed of operation and access to system functions as full application languages. The availability of bandwidth to users can also adversely affect the performance of scripted or server-side applications, because the scripted application must be downloaded to the client computer each time a preference change is requested. Lastly, server-side applications have limited scalability due to the limits on physical server space and memory and processing power.
There is thus a desire and unmet need to provide a method and system for more efficiently managing the resources of one or more applications. A further desirable and unmet need is to permit the customization of application resources that operates at runtime and that can be efficiently maintained. Furthermore, it is a desirable and unmet need to provide a system and method for permitting updates, patches and further customizable options to be integrated into the application resources, while keeping the application streamlined and preserving its efficiency.
SUMMARY OF THE INVENTION The present invention is directed to a system and method which overcomes shortcomings in the prior art. In particular, a system and method is provided for dynamically managing the resources of an application and for customizing the operation and interface of a web-based application in response to a change in user preference.
According to the present invention, a resource manager is programmed to identify resources by unique resource identifiers, and in response to a request for such resources, to retrieve those resources from a server if the resources are not stored locally on the client computer. Once retrieved, the resource manager passes the resources to the application. In one preferred embodiment, referred to generally as the “pull” embodiment, the application recognizes the need to process a resource and request that resource or group of resources from the resource manager, which in turn determines the availability of the resource and retrieves it from the server system if it is locally unavailable. In another preferred embodiment, referred to generally as the “push” embodiment, the server system receives a preference change request and the resource manager, with the next communication with the server system, receives the preference parameters associated with the preference change. The resource manager then looks in its map of resource identifiers to determine whether the corresponding resources are locally stored. If one or more resources are not locally stored, the resource manager retrieves, from the server system, either the entire group of resources corresponding to the preference parameters or that particular missing resource. In the meantime, the resource manager passes the locally stored resources to the application. The resource manager then passes any resources retrieved from the server system to the application, as necessary.
As used herein, the term “application” generally refers to a software program which is substantially executed by a computer located on the client side of the client-server architecture. The term “web-based application” refers generally to applications that at least partially derive the data for operation from a remote server and/or are capable of receiving data from a remote server or other computing or storage device remote from the client, either at the server location or at one or more locations in the network to which the client is connected. Such applications, for the purposes of the present invention, may be coded in any programming language known in the art. In addition, the applications may be delivered to the client side in any manner known in the art, such as via file download, electronic mail, or any other file transfer protocols that use networks of interconnected devices to transfer data. Furthermore, such applications may be distributed on any art-recognized machine readable storage medium, such as a compact disc, floppy disc, tape, or the like.
The present invention utilizes a resource manager stored on a client computer to determine whether the resources necessary to process a particular aspect of an application are present on the client computer at the time of execution of the application. In use, when the subject application is first downloaded to the client computer, the resource manager is also downloaded and stored on the client computer. The resource manager may be an integral part of the application or may stand alone as its own library, such as an “in-process” component object model (“COM”) server (DLL) or an “out of process” COM server (.exe). In each case, however, the downloaded application is programmed to interoperate with the resource manager to determine whether the necessary resources for its operation have also been downloaded or otherwise made present on the client computer.
In general, according to the present invention, the resource manager contains a library of ID maps associating a resource to a unique resource identifier. The resource identifier may be, for example, an alphanumeric code containing a resource group ID, resource ID, date ID, version ID, and the like, or any combination thereof.
In one preferred embodiment, a server system receives a request to change a preference from a client computer through a network. Based upon the request, the server system determines the resources necessary to accommodate the request. Next, the server system communicates the preference parameters to the resource manager through the network. Alternatively, the resource manager with the next communication with the server system pulls the preference parameters associated with the preference change from the server system. The resource manager uses the preference parameters to determine whether the resources associated with the group identifier are stored on the client computer. If each resource of the group of resources are found on the client computer, the resource manager loads the resources into the processing memory of the client computer and passes the resources to the application. If one or more resource is not found on the client system, the resource manager retrieves either the entire group of resources or that particular resource from the server system using the resource's unique identifier.
Alternatively, the application can be programmed to recognize the need for a resource or group of resources and notify the resource manager to retrieve the resources. In this embodiment, the application can identify the unique group IDs associated with a particular language, region, or preference (e.g., language, region, etc.), or the unique resource ID, if only one of the group is needed.
An advantage of the present invention is that as new versions of the resources are created or new regions are supported, the application provider can distribute these additional resources to the resource manager as needed. For example, an application provider providing additional resources for a web-based application may make the additional resources available for download to the client computer. Once received by the resource manager, the resources are preferably stored either in the memory space of the manager or the memory space of the application on the client computer. However, the resources can be stored on the server system and loaded temporarily into the memory of the client computer as needed.
The present invention provides advantages to both the application user and the application provider. For the application provider, new resources or versions of the resources can be incorporated into an existing application without the need to release an entirely new version of the application. In addition, in the case of web-based applications, the manager can be alerted by a server system that new resources are available, thereby causing the new resources to be downloaded to the client computer without interrupting the user's experience. Because the application is either notified of additional resources or knows to ask the manager when additional resources are needed, the application can be customized seamlessly at runtime without re-execution of the application.
Since the resources for an application are essentially libraries of data, the resources are often associated with a customizable feature of the application. The manager advantageously permits an application provider to store a set of resources pertaining to particular customizable options on a remote server. Using the manager, the application provider can permit a user to select certain customizable preference settings.
In operation, a user may request to change a particular preference setting, such as, for example, the language used to generate the user interface. In response to the request, the application will determine whether or not the resource that is needed to generate the user interface in the new language has been downloaded to the client computer, as described above. If it has not, depending upon the embodiment utilized, the application will either notify the resource manager that additional resources are needed (i.e., call an exposed function of the resource manager) or await notification from the resource manager. The resource manager in turn, in a web-enabled application example, retrieves the necessary resources from a remote server.
In addition, the manager permits additional users of the same client computer to customize the application and the user interface to their particular preferences as will be further illustrated in the detailed description in connection with the drawing figures. Furthermore, because the application is streamlined, due to the lack of a need to hard-code all of the resources necessary to provide customization capabilities, the user saves download time and disk space and avoids the need to re-start the application.
In another embodiment of the present invention, the resource manager manages the resources for a plurality of applications stored on the client computer. In accordance with this embodiment, a method of managing the resources for a plurality of applications generally comprises mapping an identifier to a resource, receiving into a server system a request to customize an application, communicating the identifier to a resource manager stored on a client computer, determining whether the resource associated to the identifier is stored on the client computer, and retrieving the resource if the resource is not stored on the client computer. Next, each application that shares the resource is notified of the resource's availability, i.e., its accessibility to be linked to by a particular application.
In addition, a client-server system for managing the resources of one or more applications generally comprises a server system having a storage device, the storage device having stored thereon a plurality of resources for use with one or more applications, and a client computer having stored thereon the one or more applications and a manager. The client computer is inter-operative with the manager so as to register the application modules with the manager when the application module is downloaded to the client computer.
Other objects and features of the present invention will become apparent from the following detailed description, considered in conjunction with the accompanying drawing figures. It is to be understood, however, that the drawings are designed solely for the purpose of illustration and not as a definition of the limits of the invention, for which reference should be made to the appended claims.
BRIEF DESCRIPTION OF THE DRAWINGS In the drawing figures, which are merely illustrative, and wherein like reference characters denote similar elements throughout the several views:
FIG. 1 is a schematic overview of the system architecture of a preferred embodiment of the present invention;
FIG. 2 is a schematic block diagram of a client computer connected to a network and upon which the present invention may be implemented;
FIG. 3 is a flow diagram of a method of managing the resources of an application in accordance with a preferred embodiment of the present invention;
FIG. 4 is a flow diagram of a method of seamlessly integrating an application update in accordance with a preferred embodiment of the present invention;
FIG. 5 is a flow diagram of a method of customizing the operation and interface of an application in accordance with a preferred embodiment of the present invention; and
FIGS. 6-10 are exemplary screenshots of a method of internationalizing an application in accordance with the various preferred embodiments of the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS According to the present invention a system and method for managing the resources for one or more applications is provided. In operation, the present invention permits the resources of one or more applications to be updated, supplemented, or patched. Furthermore, the present invention advantageously permits additional resources to be downloaded and accessed by one or more applications, thereby permitting the internationalization of a suite of applications.
With reference generally toFIGS. 1-10, aresource manager75 for use with the present invention is provided along with, prior to, or after delivery of the operating code of anapplication70. Preferably, when theapplication70 is loaded or downloaded to aclient computer50, theresource manager75 is also loaded onto theclient computer50. In the alternative, theresource manager75 can be hardcoded into theapplication70 as an integral part. Thus, as will be described further, themanager75 can be a standalone program or can be integrated within theapplication70. As previously defined, the term “resource” generally refers to a library containing the text strings and/or image data processed anapplication70, for example, to generate the user interface of an application. In use, the application links to theresource72 either statically or dynamically (as needed), to process theapplication70.
Referring now toFIG. 1, an overview of a preferred embodiment of the system architecture for use with the present invention is shown. Aserver system10 of an application/content provider is connected to aglobal communications network100 via a generally known network interface. A plurality ofclient computers50 are interconnected to theserver system10 through thenetwork100.
Theserver system10 includes one ormore storage devices15,20 for storing the content and data that is distributed through the network to theclient computers50. Theserver system10 also includes a processor, such as the Intel Pentium III Xeon processor, memory (RAM, ROM), clocks, and other components commonly included with server systems known in the art (not shown). Thestorage device15,20 is any machine-readable storage medium now known or that will be known in the art, such as by way of non-limiting example, a hard disk, optical drive, or tape drive. The particular architecture ofserver system10 is not critical to the invention and, therefore,server system10 is not depicted in detail. Thenetwork100 is preferably the Internet; although one skilled in the art will recognize that the network may be any communications network now known or that will be known that is capable of transmitting data, such as, for example, an intranet, local area network, wide area network, or other network using point-to-point protocols (PPP), wireless application protocols (WAP), and the like.
With further reference toFIG. 2, a schematic of aclient computer50 for use with the present invention is shown. Theclient computers50 are any type of personal or network computer having an operating system and, preferably, running a browser such as Microsoft Internet Explorer or Netscape Navigator.Client computers50 generally access thenetwork100 to download anapplication70 from theserver system10. Theapplication70 is then stored and processed on theclient computer50.
Client computer50 includes aninternal bus64 that facilitates communication of data between and among the various components of theclient computer50 and that also facilitates communication between theclient computer50 and external devices and systems via thenetwork interface68. Aprocessor66 is coupled to thebus64 to process data, including application programs, within theclient computer50. Theclient computer50 also includes amain memory60, such as, for example RAM or other equivalent dynamic memory storage, coupled tobus64 for receiving and storing instructions communicated by theprocessor66. Read-only memory (ROM) is also provided and coupled to thebus64 to store static data and instructions for use by the processor.
Various input andoutput devices54,56,58 are provided with theclient computer50, including, by way of non-limiting example, a display54 (e.g., cathode ray tube (CRT), liquid crystal display (LCD), etc.), and an input device56 (e.g., a keyboard, mouse, touch pad, or light pen). Asecond storage device58 such as, for example, a magnetic disk drive and magnetic disk, a CD-ROM drive and CD-ROM, DVD, or other equivalent device, is coupled to thebus68 for communication with theprocessor66,main memory60 andnetwork interface68. The specific hardware combination/configuration is not crucial to the instant invention, and may vary as a matter of design choice within the functional parameters taught herein.
Referring again toFIG. 1, a user (not shown) generally utilizesclient computer50 to access thenetwork100. Although, as set forth above,network100 is not limited to the Internet, the present invention will be described in connection with use of the World Wide Web or Internet. Theclient computer50 connects to thenetwork100 via the network interface65 over a transmission media such as, by way of non-limiting example, coaxial cable, copper wires, or fiber optical cables. Communication between theclient computer50 and thenetwork100 may also be via wireless, satellite, or cellular interface. Thenetwork interface68 facilitates two-way communication between theclient computer50 and theserver system10 provided by the content/application provider (not shown).
Content and information is downloaded to theclient computer50 throughnetwork100 using, for example, the hypertext transfer protocol (HTTP) in various known formats, such as, for example, HTML, DHTML, XML, scripting languages, and the like. A browser application is stored on theclient computer50 and is programmed to interpret the code downloaded from theserver system10, thereby producing a GUI with which the user can interact. By way of non-limiting example,applications70 andrelated resources72 are preferably downloaded using known hyper-text transfer protocols (HTTP). Once downloaded, theapplication70 may be launched by the user or it may be self-extracting and self-executing.Resources72 are stored on theclient computer50 as described below so as to be available to theapplication70 when needed.
With reference now toFIG. 3, a method of managing theresources72 of anapplication70 is there depicted in accordance with an embodiment of the present invention, and designated generally as300. Atstep302, after the user has caused theclient computer50 to link to theserver system10 of the application provider through thenetwork100, the user downloads theapplication70 from the provider'sserver system10. Theapplication70 is downloaded along with aresource manager75, which is either provided as an integral part of theapplication70 or as a stand-alone component. Once the download is completed, theapplication70 andresource manager75 can be installed, in astep304, either by manually launching an installation program or by automatically launching a self-extracting file. Theresource manager75 is preferably stored locally on theclient computer50 in a memory space reserved for the operation of theresource manager75.Resource manager75 is preferably a dynamic library, such as an in-process COM server (e.g., a DLL) or an out-of-process COM server (e.g., a EXE). As previously discussed, theresource manager75 can also be integrated within theapplication70. In either case,resource manager75 is programmed to identify, map and store a unique identifier for eachresource72 that is downloaded to theclient computer50 and related toapplication70. In short, theresource manager75 maintains a map of the associations of unique identifiers toresources72.
As described above, in a preferred embodiment, atstep306, theresource manager75 maintains a map of unique identifiers for eachresource72 that is downloaded with theapplication70. In this way, theresource manager75 can identify all of theresources72 available to theapplication70 at any given time. Upon being prompted, as will be further described, in astep308, theresource manager75, atstep310, retrieves theresources72 and send a notification message toapplication70, which includes a pointer to theresources72, so as to enableapplication70 to link toresources72 as needed.
The unique identifier can be formatted as a unique series of characters, numbers or other data readable by themanager75, such as, for example a software identifier and unique number combination. By way of non-limiting example, the unique identifiers may include varying levels of identifiers such as regional identifiers, group identifiers, and individual resource identifiers. Furthermore, the unique identifiers can include date and/or version identifiers such that theresource manager75 can identify updated versions ofresources72. Alternatively, a single unique identifier can be assigned to eachresource72, which includes the codes necessary to identify theresource72 with a particular region, language or group.
As used herein, the term “request” refers to a message or data transmitted between theclient computer50 throughnetwork100 toserver system10, so as to enable the communication of resource identifiers and other types of communication.
The process of dynamically linking to the resources will now be described. In one preferred embodiment, upon retrieving theresources72 as previously described,resources manager75 calls a function exposed byapplication70 and passes theresources72 toapplication70 as an argument. One skilled in the art will recognize that the linking procedure may be performed in many ways, including without limitation, the use of pointers, addresses, and the like.
As such, theapplication70 is programmed to receive the notification from theresource manager75 thatadditional resources72 are available. If the conditions are such that theadditional resource72 is needed (i.e., the resource is needed to generate a user interface associated with a particular preference setting), theapplication70 will link, as describe above, to theresource72 so that the text-strings and image data contained within theresource72 can be accessed and used by theapplication70. Since the download and notification procedure is generally relatively short, theresource72 will be available for access substantially immediately after it is downloaded. In this way, the present invention permits theapplication70 to be updated or customized substantially in real time. Furthermore, because theapplication70 is programmed to receive the notification from the resource manager75 (or check with the manager fornew resources72 when theapplication70 is prompted for that resource72), there is no need to re-execute theapplication70 upon the availability ofnew resources72. Theresources72 therefore can become available to theapplication70 during its execution.
Referring now toFIG. 4, in yet another preferred embodiment, theapplication70 calls a function exposed by theresource manager75 to retrieve theresources72, upon the retrieval of which, theresource manager75 returns theresources72 to theapplication70. Theapplication70 is programmed to identify a need forresources72 and check with theresource manager75 each time it is necessary to link to aresource72, as instep402. Instep404, theapplication70 calls a function exposed by theresource manager75. If theresource manager75 determines that the resource is stored on theclient computer50, in astep406, theresource manager75 passes theresource72 toapplication70, in astep408A. If, however, theresource72 has not been found, theresource72 is retrieved or downloaded from theserver system10, instep408B. In both instances, theresource manager75 returns a pointer toapplication70 to enable linking toresources72.
Because querying theresource manager75 each time aresource72 is needed can slow the procedure, it is preferable to pass newlyavailable resources72 to theapplication70 and to store a copy of theresource72 in the memory space of theapplication70. In this way, theapplication70 can process instructions to link toavailable resources72 without waiting for a response from theresource manager75.
However, one skilled in the art will recognize that theresources72 may be stored on aserver system10 and downloaded toclient computer50 only as needed. As such,resources72 would only be temporarily loaded into the processing memory space ofclient computer50 when needed to generate a user interface.
As will be shown and described with reference to the various embodiments described herein, the method ofFIG. 3 may be adapted to many different applications in accordance with the present invention.
For instance, a preferred embodiment of the present invention may be adapted to a method of downloading an updated resource. By way of example, during operation, theresource manager75 can be notified by the application provider of an updatedresource72, which requiresadditional resources72. In the alternative, the user can request to download the updatedresource72 from theserver system10. Theresource manager75 determines which version of theresource72 is stored locally onclient computer50 by comparing the unique identifiers of theresources72, which may include a date or version ID. Once retrieved, theresource72 will be linked to as described above.
Referring toFIG. 5, a method of customizing the operation or interface of anapplication70 is there described in accordance with an embodiment of the present invention, and generally designated as500. Atstep502, a user, who has previously registered with the application provider, logs into the application provider's site using a password or other unique identifier that is recognizable by theserver system10. During the aforementioned previous registration, the user may have been prompted by the application/content provider to input certain personal information and preference settings, such as by way of non-limiting example a language preference. This information is stored in a database on theserver system10. Instep504, the unique user identifier is used by theserver system10 to retrieve the preference settings or other such customizable information from the server database. In astep506, an access code or a group ID associated with a group ofresources72 is communicated to theclient computer50 and identified by theresource manager75.
Atstep508, theresource manager75 determines the availability of theresource72 required to display the application interface in accordance with the user's registered preferences. If theresource72 is available, in astep510, the resource manager passes the resources toapplication70 as described above, to enableapplication70 to generate the customized functionality. If, however, theresource72 is not yet available, theresources manager75 retrieves the neededresource72 from theserver system10, in astep512.
Such employment of the present invention enables several registered users having different preferences to use thesame application70 without having to re-customize the application's operation and interface. For example, a first user may have registered with an English language preference. Each time that user launchesapplication70, the user interface is generated using the resources corresponding to the English language parameters, as shown for example inFIG. 6. If a second user, who had registered with a Spanish language preference logs onto the application provider's web site using thesame client computer50 as the first user, the user interface will dynamically load in the Spanish language, as shown inFIG. 9. In operation, as described above, theserver system10 retrieves the second user's preference settings so that theresource manager75, in its next communication with theserver system10, can receive the new Spanish language parameters. Using the parameters, theresource manager75 determines whether theresources72 needed to generate the Spanish language interface are locally stored. If theresources72 are not locally stored, theresource manager75 retrieves them from theserver system10. In this way, the present invention can dynamically load a user interface for multiple users of thesame client computer50. In addition, because the resource files are generally relatively small, they can be downloaded quickly to theclient computer50 and seamlessly incorporated into theapplication70 at runtime.
With reference toFIGS. 3-5, it can be seen that although depicted and described with reference to oneapplication70, the methods of the present invention can be adapted to manage the resources of two ormore applications70. By way of example only, the customization of the user interface to a particular language preference may be applicable toseveral applications70 stored on aparticular client computer50. As such, a group ofapplications70 can be internationalized by using theresource manager75 of the present invention to manage theresources72 ofseveral applications70.
Therefore, with further reference toFIGS. 1, 2, and6-10, there is shown and herein described an exemplary method of customizing anapplication70 and, in particular a method of internationalizing anapplication70. As shown inFIGS. 1 and 6, a web site of a content provider is delivered to thedisplay device54 of theclient computer50 through thenetwork100. Abrowser application110, such as Microsoft Internet Explorer or Netscape Navigator, interprets the downloaded content, which is in the form of images, HTML code and the like, scripting languages (e.g., JavaScript, VBScript, etc.), and applets, to name a few, to generate a user interface inwindow115. A component object model (COM) technology, such as for example an ActiveX Control or a Plug-in, controls and/or modifies a portion of the browser interface as shown intoolbar130. Such a browser interface overlay is discussed in Applicant's prior U.S. application Ser. No. 09/429,585, filed on Oct. 28, 1999, now U.S. Pat. No. 7,107,548, the entire disclosure of which is incorporated herein by reference. The COM application links to library resources, such as DLLs, to generate the particular interface of the tools within thetoolbar130. For example, as shown, inFIGS. 6 and 7, the English language is used in thebuttons132, drop downmenus134, andmessage boxes136.
As described above, however, it may be desirable for another user of thesame application70 or users in different countries to change the language setting to their preferred language. With further reference toFIG. 8, a user is provided apreference setting screen120 by the application/content provider. In this example, the user is changing the language setting toSpanish190. One skilled in the art will recognize, however, that the particular type of preference setting (e.g., language, interface color, button type, tools available, etc.) for which the present invention is utilized is a matter of design choice; and, accordingly, the present invention can be adapted for any number of customizable preference settings pertaining to one ormore applications70 programmed to operate with theresource manager75 of the present invention.
Referring again toFIG. 8, when the user has selected a preference, the user clicks the “Finished”button122, for example, to complete the setting change. With further reference toFIGS. 9 and 10, the Spanish language replaces the English language in thebuttons132, drop downmenus134, andmessage boxes136. It will be noted that the particular way in which a user can change the preference setting is not critical to the invention and the description herein is merely illustrative of one such way.
With reference again toFIGS. 6-10,toolbar130 is generated by the execution ofapplication70 which links to and accessesresources72, which include, for example, an ActiveX control or Plug-in. Theresource72 contains the code necessary to generate user interface and functionality of thetoolbar130. In use,application70 is inter-operative withresource72 to generate a shell within thebrowser110 within which the functionality of the ActiveX control or Plug-in can be added totoolbar130. By way of non-limiting example, the data processed to build the user interface oftoolbar130 is defined by one ormore resources72 which contain the ActiveX control or Plug-in necessary to generate the interface. For instance, the strings of text that can be seen inFIGS. 6-8, which are in English, are stored in one of theresources72 and provided toapplication70 as needed to generate the user interface oftoolbar130. Similarly, the strings of text found inmessage box136 as depicted inFIG. 7 are stored in one of theresources72 and provided toapplication70 as need to generate a particular message box.
Through the application provider's web site, illustrated for example inbrowser window115, a user can select a preference setting. The preference setting, as one skilled in the art will recognize, may include many different types of customizable options, such as by way of non-limiting example language. With reference toFIG. 8, the user chooses to change his/her language preference from English to Spanish. Once the user has completed changing and reviewing his/her selections, theserver system10 either communicates the group identifier associated with the group of resources needed to accommodate the request to the client computer (as described above in connection with drawingFIGS. 6 through 10) or theresource manager75 receives a preference parameter corresponding to the resources from the server system10 (as described in connection with drawingFIG. 5).
Upon receipt of the group identifier,resource manager75 uses the group identifier to determine whether the group of resources associated with the group identifier is stored locally on the client computer. If, in the alternative embodiment, theresource manager75 receives a preference parameter related to the region or language preference, the resource manager looks up the corresponding resource identifier in the resource manager's75 map of identifiers to resources to determine whether the resources associated with the group identifier are stored locally on the client computer. Thus, if the group ofresources72 needed to generate theSpanish language toolbar130 is not found on theclient computer50, theresource manager75 retrieves them from the server system and passes the needed group ofresources72 to thebrowser application70 so as to enable the application to access the group ofresources72, as described above. In this way,application70 can link to the group of resources, load the text strings and image data into the memory of theclient computer50, and generate thetoolbar130 in the Spanish language.
Because theresources72 for changing the preference setting are stored on theserver system10, astreamlined user application70 can be delivered to theclient computer50 without having the entire library ofresources72 for each particular preference hard-coded into theapplication70. Instead, theresources72 are advantageously downloaded and dynamically integrated into theapplication70 at runtime. In addition, because theresource manager75 can manageresources72 for more than oneapplication70, eachapplication70 can be customized in response to a change in the user preference. As such, applications can be internationalized, customized, updated, or patched in a seamless fashion without negatively impacting the user's experience. As such, there is no need to restart theapplication70 upon theapplication70 being internationalized, customized, updated, and/or patched.
Due to the increased convenience and functionality offered to a user, the present invention offers a means by which a web site can increase the frequency with which a user accesses the web site. According to this preferred embodiment, auser profile database20 is maintained on theserver system10, which serves the web site to the browser application. The user profile database includes at least one customizable option. As used herein, the term “customizable option” or “preferences,” refers to those options which the user may choose from and which are stored in the user profile on the server system. The server system, as described above, permits the user to change the customizable option. In response to the change in the customizable option, the client computer generates a browser interface on the client computer in the manner previously described.
Thus, while there have been shown and described and pointed out fundamental novel features of the invention as applied to preferred embodiments thereof, it will be understood that various omissions and substitutions and changes in the form and details of the disclosed invention may be made by those skilled in the art without departing from the spirit of the invention. It is the intention, therefore, to be limited only as indicated by the scope of the claims appended hereto.