SYSTEM AND METHOD FOR GENERATING REFERRALS TO A NETWORK SITE
TECHNICAL FIELD OF THE INVENTION:
This application claims priority of U.S. provisional patent Application Serial No. 60/200,201, filed April 28, 2000, entitled: "System and Method for Generating Referrals to a Network Site," and is comprised herein by reference in its entirety.
This application claims priority of U.S. provisional patent Application Serial No. 60/200,769, filed April 28, 2000, entitled "System and Method for Constructing and Executing Software Applications Utilizing the Model View Controller Paradigm with a Remote Model," and is comprised herein by reference in its entirety.
This application claims priority of U.S. provisional patent Application Serial No. 60/200,228, filed April 28, 2000, entitled "Intelligent Caching of Inert Data in a Network Environment," and is comprised herein by reference in its entirety.
This application claims priority of U.S. provisional patent Application Serial No. 60/200,770, filed April 28, 2000, entitled "System and Method for Accessing Database Objects Over a Distributed Network Via a Graphical Representation Provided by a Content Rendering Unit," and is comprised herein by reference in its entirety.
This application claims priority of U.S. provisional patent Application Serial No. 60/200,664, filed April 28, 2000, entitled "System and Method for Graphically Representing Database Objects with Contextual Meaning," and is comprised herein by reference in its entirety.
The invention relates generally to electronic commerce and, more particularly to systems and methods for generating customer referrals and determining compensation for affiliated entities who are responsible for the referrals. Even more particularly, the present method and system provide for the tracking of both the origin and content of electronic mail as a function of a unique identifier. This function is useful for myriad purposes including the generation of customer referrals and compensation therefor, as well as other similar purposes.
BACKGROϋND OF THE INVENTION:
The Internet is an increasingly popular means for communicating information. An individual can quickly and easily research various topics, transmit messages, shop for goods and services and perform many similar tasks. As a result of the Internet's popularity, businesses commonly set up web sites through which they market their goods and services. Through the web sites, customers can access information about the businesses, view catalogs of available goods and services and even make purchases of the goods and services. Business transactions which are conducted over the Internet are often referred to as "e-commerce."
Although it may be relatively easy for a business to set up a web site through which e-commerce can be transacted, there are a number of problems which may keep the web site from being an efficient means to conduct business. One such problem arises from the fact that the Internet comprises thousands upon thousands of individually addressable sites. The chances that a person will visit a particular web site among thousands, without any information about the location of the site, are extremely low. The importance of marketing is therefore paramount in generating e-commerce through the web site. It is essential that potential customers be provided with information that in some way identifies the business and information that enables them to locate the business' web site.
Several means to provide this information to potential customers have traditionally been used. One of these means is registration of the web site with one or more search engines. A potential customer can submit a query to a search engine which then searches the information in the associated database and returns a set of search results identifying web sites related to the query. There are, however, a large number of search engines on the Internet, and different potential customers may use different search engines. Potential customers who use a search engine with which the business has not registered its web site will not receive any results which identify the web site.
Another means to market the business is through the more traditional methods of advertising. Advertising efforts may be directed to print media, television, or even the Internet itself. These types of advertising can be quite costly, however, and it is often impossible to know the effectiveness of particular advertisements. In other words, if a potential customer is attracted to the business' web site, it may not be possible to identify which of several advertisements resulted in the potential customer's interest.
In light of the above limitations, there is a need for a method and system for generating customer referrals and determining compensation for affiliate entities who are responsible for the referrals.
Moreover, there is a need for a method and system for tracking both the origin and content of electronic mail as a function of a unique identifier.
Still, further, a need to exist for a way to track the generation of customer referrals and compensating for the generation using a unique identifier.
STJMMZ.RY OF THE INVENTION:
One or more of the problems outlined above may be solved by the various embodiments of the invention which, broadly speaking, comprises a system and method for providing potential customers with links to a business' web site and determining the sources of referrals of potential customers to the web site.
In one embodiment, the method comprises a business providing email service to a plurality of associates such as Internet service providers (ISPs) and tagging each of the outgoing emails that is sent by the associates with a link to the business' web site, wherein the link includes information which identifies the associate and wherein when a potential customer activates the link to visit the business' web site, the associate-identifying information is conveyed to the web site. The business then tracks the referrals of potential customers which are generated as a result of the electronic mail messages of each of the associates and compensates the associates for the corresponding referrals.
In one embodiment, the method comprises assigning an identifier to each of a plurality of associates, appending to the outgoing emails of each associate a hyperlink containing the corresponding associate identifier, examining received requests for web pages to determine whether the requests contain one of the associate identifiers, and tracking the web page requests which contain each associate's identifier. The associate identifiers are assigned as a result of the associates applying to the web site operator to participate in the referral program. The hyperlinks and any associated text may be appended automatically by a tagging application of the web site operator, or they may be included in the emails by the associates themselves. The requests for the web pages are generated by recipients of the emails selecting the hyperlinks in the emails. All or part of the web page requests (referrals) generated by the emails of the associates may be tracked so that the associates can be compensated for the referrals generated by their respective emails.
In one embodiment, a system comprises a first site connected to a network, wherein the first site includes an email server having an application which is configured to receive outgoing emails from a sender. The first site determines whether the sender is a registered associate and appends a hyperlink to emails for which the sender is a registered associate. The hyperlink contains a unique identifier of the registered associate. The first site transmits the emails to their addressees, monitors received web page requests or referrals and determines, whether the requests contain
associate identifiers, as well as unique identifiers. This occurs down to the granularity of an individual email. Then, the system records information relating to the requests that contain the associate identifier of each associate. The system may be configured to generate reports of referrals for each associate and to determine payments or other compensation to be provided to each associate for the referrals which resulted from their emails. The system comprises an automated registration system which is configured to obtain information from applicants and to register and assign identifiers to each of the applicants that is accepted as an associate. This system can be entirely automated, if desired. The system can also be used in combination with pyschographic and demographic information to determine the success of a marketing/email campaign.
These embodiments and other variations and modifications are described in more detail below.
DETAILED DESCRIPTION OF THE DRAWINGS:
Other objects and advantages of the invention may become apparent upon reading the following detailed description and upon reference to the accompanying drawings in which: FIGURE 1 is a functional block diagram illustrating the overall structure and operation of one embodiment of the present system.
FIGURE 2 is a flow diagram illustrating the method of one embodiment.
FIGURE 3 is a functional block diagram illustrating the components of the applicant site and ASP employed in the registration process of one embodiment .
FIGURE 4 is a functional block diagram illustrating the functional relationship between an ASP, an associate site and an addressee of an email message in one embodiment.
FIGURE 5 is a functional block diagram illustrating the functional relationship between a potential customer and an ASP in one embodiment.
FIGURES 6 through 29 relate to additional disclosures associated with the present invention.
While the invention is subject to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and the accompanying detailed description. It should be understood, however, that the drawings and detailed description are not intended to limit the invention to the particular embodiment which is described. This disclosure is instead intended to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present invention as defined by the appended claims.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT:
A preferred embodiment of the invention is described below. It should be noted that this and any other embodiments described below are exemplary and are intended to be illustrative of the invention rather than limiting. FIGURE 1 shows a functional block diagram illustrating the overall structure and operation of one embodiment of the present system. The system includes three sites 12, 14, 16 which are connected to the Internet 18. One of the sites wishes to increase the number of visits to its web site and implements a referral program through the system described below. For the purposes of the following description, this site is described as an application service provider (ASP) , but it may comprise various other types of sites as well. One of the sites wishes to participate in the ASP's program and is referred to below as an associate. The third site is a potential customer of the ASP. Associate site 12, ASP 14 and potential customer 16 may employ any one of a number of different types of computer systems. In a simple case, they may each comprise a personal computer which is programmed according to its respective system requirements. In a more sophisticated case, one or more of associate site 12, ASP 14 and potential customer 16 may employ several interconnected computers and related devices. For example, in the embodiment illustrated in FIGURE 1, ASP 14 operates a web site which is supported by a web server 42 and HTML document database 44. ASP 14 further includes an email server that provides email service to its customers, such as associate site 12. ASP 14 also includes a referral application which runs on one of the computers operating within the site.
In the course of its operation, associate site 12 will transmit emails to various addressees who may be individuals or entities who are connected to the Internet and who have email access. These emails may be independent communications to the addressees, or they may be "mass mailings" of the same message to large numbers of addressees. For example, if associate site 12 is a web site operated by a company, the company may market particular products or services through emails to a list of customers who have purchased the company' s products in the past .
ASP 14 provides one or more services to which associate site 12 subscribes. Generally speaking, ASPs are third-party entities that manage and distribute applications (software-based services) to customers across a wide area network such as the Internet. ASPs are "third-parties" in the sense that they provide applications which are used in transactions which do not directly involve the ASPs (aside from having provided the applications
used in the transactions.) Typically, ASPs provide their services from a central site. ASPs allow other businesses, such as associate site 12, to outsource some (or in some cases all) of the information technology applications that they need. Potential customer 16 may be an individual, a company, or some other entity which has email access to the Internet. For example, potential customer 16 may simply be an individual who has a personal computer (PC) with Internet access and a mail utility. Potential customer 16 also has a web browser which enables potential customer 16 to view web pages. In one embodiment, ASP 14 makes various services available to customers. These services are marketed through a web site which is maintained by the ASP. (The web site need not be the exclusive marketing means employed by ASP 14. ) One service which ASP 14 provides is an email service. In particular, ASP 14 provides email service to associate site 12. ASP 14 provides email service through an email server. In this embodiment, the email server is a Post Office Protocol (POP) server. When the associate operating associate site 12 wishes to send or receive email, he or she logs on to his or her POP account on the server. Emails which were delivered to the associate's POP account are stored in the server until the associate logs on and retrieves them. Typically, the retrieved emails are stored on the hard disk of the associate's computer. Likewise, emails which are generated by the associate offline using an email application such as Microsoft Outlook, or the Mail component of Netscape Communicator are transmitted to the server when the associate logs on to his or her POP account. The associate can also generate emails while logged on to the account and transmit them immediately upon completion. (It should be noted that, in other embodiments, the associate may be directly connected to the network and may have its own email server which assumes some of the functions of the ASP email server as described below.) One of the additional features of the email service provided by ASP 14 is that additional data can be appended to the outgoing emails which are sent by associate site 12. In one embodiment, this data includes text and hyperlinks. For example, a message such as "For solutions to your information technology needs, visit freeMe . com " can be appended to outgoing emails, where "freeMe.com " is a hyperlink to the web site of freeMe.com, Inc. Thus, an email message which serves as an advertisement of the products available through associate site 12 can also serve as a means to advertise the services provided by ASP 14.
A hyperlink is a mechanism for navigating within one or more documents Hyperlinks are typically words in a document which can be selected (e.g., by moving a cursor to the hyperl nked words and clicking on them with a mouse) to jump from one location m a document to another location in that same document or m another document. Hyperlmked words are typically highlighted to indicate that the words represent a hyperlink. For example, the words may be underlined and/or displayed m a different color from the surrounding text.
Hyperlinks can be used to navigate from one location to another in documents on a single computer, or they can be used to navigate through documents which reside on several computers connected by a network such as the Internet . The set of documents which are available on the Internet and which are navigable m this manner are commonly referred to as the World Wide Web. Individuals, businesses or other entities may operate a web site that provides a collection of related documents for viewing on the World Wide Web. The documents are referred to as web pages .
Web pages are typically formatted in HyperText Markup Language, or HTML. HTML provides a standard set of codes which define the structure and layout of web pages. HTML employs codes which define the beginning and end of a web page, paragraphs withm the page and fonts and other formatting within the page. HTML also includes codes to define hyperlinks with the page.
The following example of an HTML paragraph illustrates how some of the HTML codes are used. <P>
<B>FreeMe.com, Inc.</B> is one of the fastest growing companies on the Internet. For information about our information technology applications and how they can fill your needs, please visit our <A HREF=http: //www. freeme . com>web sιte</A>. In this example, the codes "<B> ... </B>" indicate text that the text between the codes (i.e., "FreeMe.com, Inc.") is in boldface. The codes "<A ... </A> indicate a hyperlink. The text following the initial code identifies the target location to which a user will navigate by selecting the hyperlink. The target location (http://www.freeme.com) follows "HREF=" the hyperlink. When the text is displayed, only the text between ">" and "<" (i.e., "web site") will be displayed, but this text will be highlighted to indicate that it is a hyperlink.
The email service provided by ASP 14 is configured to append such messages to the emails of customers who have registered for the ASP's
referral system. In order to provide the ASP's customers with incentive to register to participate in the referral program and allow the ASP's messages to be appended to its emails, registered associates are compensated for referrals of potential customers to the ASP's web site. In order to track the referrals that are generated by the emails of associate site 12, the hyperlink in the appended text contains an identifier of the associate site. (The identifier is assigned to the associate through a registration system operated by the ASP.) When a recipient of one of the associate site's email messages selects the hyperlink, a corresponding request is generated and transmitted to the ASP's web site. The request identifies the requested page (e.g., the site's homepage) and also identifies the associate site at which the email originated. The associate site can then be credited with the customer referral corresponding to the request .
The basic operation of the system described above is summarized in the flow diagram of FIGURE 2. As shown in the figure, the associate site (or an associate that operates several sites) is first registered and an associate identifier is assigned (as will be described in more detail below.) Then, when the associate site transmits outgoing email messages, the ASP's email application appends text with a hyperlink (which includes the associate identifier) to the messages. The messages are then delivered to their intended recipients (addressees) in essentially the same manner as other email systems. When a recipient opens one of these email messages and selects the hyperlink, a request for the corresponding web page is sent to the ASP. The request includes the associate identifier. When the request is received by the ASP, the requested web page is returned to the requester and the associate identified in the request is credited with a referral. The associate can then be compensated for the referral.
Because the system is designed to track referrals resulting from the emails sent out by associates, there must be a mechanism for identifying the associates from which the respective referrals originate. In one embodiment, an automated online registration system is employed. The registration system allows an individual or other entity (who may be a customer of the ASP) to apply for participation in the referral system. If the applicant qualifies for participation, the applicant is registered as an associate for the purposes of the referral system. A unique identifier is assigned to the associate and is stored by the ASP along with other information for the associate. This information can then be used to record and report referrals corresponding to the associate.
Referring to FIGURE 3, the components of the applicant site and ASP employed in the registration process are illustrated. Applicant site 12
includes a web browser 32 which can be used to view html documents from various web sites. ASP web site 14 includes a web server 42 which is configured to provide html documents from html storage 44 in response to requests for pages of the web site. ASP web site 14 also includes a registration application 46 and a database 48 which stores accumulated associate information. The dashed line in the figure indicates a virtual connection between applicant site 12 and ASP web site 14.
The applicant may become aware of the ASP's referral system in a number of ways . The referral system may be marketed to potential associates through a variety of advertising media (e.g., trade magazines, newspapers, radio, television or the Internet.) Potential associates may also discover the referral system by browsing the ASP's web site. The referral system itself is intended to generate new customers and is therefore contemplated to be an important tool for generating new applicants. A potential associate that visits the ASP's web site can navigate the links within the web site to arrive at a registration page. The registration page may, for example, provide a description of the referral program, the terms and conditions of participation in the program and a link to the registration application. If the potential associate wishes to apply for registration as an associate in the program, the link to the registration application is selected. One or more html pages which comprise the application are then transmitted to the potential associate. The registration application may request various information about the applicant for identification, payment and other purposes. For example, the application may request the name, address, phone number, fax number, email address and web site address to identify the applicant. The application may also request the names of contact persons or the person or business to whom payments will be made and a corresponding billing address (if these differ from the information requested above.) The application may also request such information as a description of the applicant's business.
In one embodiment, the information requested on the registration application can be entered online and transmitted back to the ASP's web site for processing. In other embodiments, the information may be provided in other ways, such as printing out the online application and entering the information on the printed copy, then mailing the completed application to the ASP. The online registration process is preferred because it may be almost entirely automated.
When the registration information is received by the ASP, it is processed. This, may, for example, include scanning the information to ensure that there are entries in mandatory fields, ensuring that certain
fields are properly formatted and scanning the information to ensure that no obscenities or vulgarities are included. As indicated above, these functions may be performed automatically upon receipt of the returned application. In one embodiment, the application may be approved for registration after completion of the automated checks. In other cases, further review of the application information may be performed prior to approval .
When the applicant has been approved for participation in the program, the applicant is registered as an associate. Generally speaking, this entails recording the information provided through the registration application and assigning an associate identifier to the new associate. The associate identifier for the new associate and is unique to that associate. The identifier may comprise any suitable string of alphanumeric characters. The associate identifier may be stored with the registration information for the associate, or it can be stored with a subset of the registration information (e.g., the name of the associate) in order to decrease the time which is required to access the data.
As indicated above, ASPs provide various services such as email service to their customers. In one embodiment, which may be considered as "email tagging" a customer uses a web browser to access an email server operated by the ASP. The customer can generate one or more email messages using email functions of the web browser and then transmit these messages to the email server, which in turn transmits them to their respective addressees. Email messages which are addressed to the customer are delivered to the email server, where they are stored until they are retrieved by the customer to be read.
Referring to FIGURE 4, the functional relationship between an ASP 14, an associate site 12 and an addressee 16 of an email message from associate site 12 is shown. Associate site 12 is a customer of ASP 14 and utilizes applications and services provided by ASP 14. In particular, associate site 12 utilizes the email service which is provided via email application 52.
If the associate wishes to send an email message to one or more addressees (such as addressee 16,) the message is first composed using web browser 32 (or a similar utility. ) The associate also selects the email addresses of the intended recipients of the message. This information is then sent to the email application 52 of ASP 14.
Before it sends the message to the intended recipient, email application 52 determines whether the sender of the message is registered to participate in the ASP's referral system. As illustrated in FIGURE 4, this task is performed by a tagging function 54 within email application 52.
Tagging function 54 is configured to determine the originator of the message (i.e., the email address of the associate.) Tagging function 54 then accesses associate database 48, in which identifying information for all of the registered associates is stored. In this embodiment, associate database 48 includes the email addresses of the registered associates, as well as corresponding associate identifiers (which are inserted into hyperlinks in the which will be added to the messages of the respective associates.)
Tagging function 54 compares the originator's address with the information in associate database 48 to determine whether the originator is a registered associate. If the originator is a registered associate, tagging function 54 retrieves the associate identifier for that associate. The tagging function inserts the associate identifier into a text message which it then appends (or "tags") to the email message. It should be noted that the text message is intended merely to provide context for the hyperlink and is not strictly necessary.
As an example, the following text may be appended to the associate's outgoing emails:
FreeMe.com, Inc. is one of the fastest growing companies on the Internet. For information about our information technology applications and how they can fill your needs, please visit our <A HREF=http: //www. freeme. com/associate_identifier>web site</A>.
When the email is opened by an email utility that supports HTML, this text may be displayed as :
FreeMe.com, Inc. is one of the fastest growing companies on the Internet. For information about our information technology applications and how they can fill your needs, please visit our web site .
In this instance, the hyperlink is highlighted by underlining the hyperlinked text . In the hyperlink code in this example, "associate_identifier" is an identifier for the associate that generated the mail. When this hyperlink is selected and the resulting request for the home page of freeMe.com is received by the freeMe.com web site, "associate_identifier" will be used to track the referral, rather than being interpreted as a particular page within the web site. The tracking of the referral is described in more detail below.
Referring to FIGURE 5, the functional relationship between a customer 16 (or potential customer) and ASP 14 is shown. Customer 16 has a web
browser 56 that is configured to request and display web pages. In one embodiment, web browser 56 is used to access the customer's email account and is configured to request any web pages for which hyperlinks in emails are selected. In other embodiments, the web browser may be initiated in response to selection of a hyperlink.
After an addressee such as customer 16 has received an email from an associate, the email is opened so that it, and the text appended by the ASP's tagging application, can be read. The email reader used by the addressee is configured to recognize and highlight hyperlinks in the text. As shown in the example above, the text appended to the email appears to the reader as plain text, but with the hyperlinked text highlighted (underlined.) (In other examples, additional HTML codes such as bold codes, italic codes, font codes and the like may be used to provide more extensive formatting of the text . ) When the addressee selects the hyperlink that was tagged to the message, the addressee's web browser generates a request for the web page identified by the hyperlink. (The hyperlink may be selected by placing the mouse cursor on the hyperlink text and clicking the mouse.) If the addressee's web browser was not previously running, it is invoked and the request is generated.
As indicated above, the hyperlink that is appended to the email includes the associate identifier corresponding to the associate that generated the email. When the request is received by the web server, a referral application running on the web server parses the request to determine the requested web page and the associate identifier. If there is no associate identifier, the web server simply returns the requested page. If there is an associate identifier, referral application 47 checks the identifier against the entries in associate database 48. If the associate identifier does not correspond to a currently registered associate, the web server again simply returns the requested page. If the associate identifier does correspond to a currently registered associate, the web server not only returns the requested page, but also records an indication of the referral of the customer to the web site.
In a minimal implementation, the indication of the referral of the customer simply consists of data showing the number of referrals corresponding to each associate. This number is incremented whenever a referral from that associate occurs. In alternate embodiments, additional information relating to the referrals (e.g. , the date of the referral, the number of previous visits by the referred customer, etc.) may be stored. In one embodiment, the number of referrals corresponding to each associate is
stored in a referral database. The number of referrals may be stored with the remainder of the information for the associates or, as shown in FIGURE 5, the referral information may be stored in a separate database 49. (Similarly, these databases may be stored on a single storage device, or they may utilize separate pieces of hardware.)
As indicated above, the system is used in one embodiment to implement a system for generating referrals to the web site. The associates are compensated for the referrals that are generated by each associate's participation in the system. Therefore, in one embodiment, the system includes a financial application that is configured to examine the accumulated referral data and to determine the compensation which is due to the various registered associates.
The financial application retrieves data from the referral database to determine the number of referrals from each of the associates. In one embodiment, the associates are paid a predetermined amount for each referral for which they are responsible. Thus, every time a request for a web page is received and that request contains an associate identifier, the associate accrues a commission. The associate may, for example, get $1.00 for every referral. Alternately, the commissions which accrue to an associate may be based upon a more complex formula. For instance, an associate may get $1.00 for each referral that does not result in a purchase and $2.00 for each referral that results in a purchase. Alternately, a first associate may receive commissions for referrals generated by a second associate who was originally referred to the ASP by the first associate. Many other commission schemes are also possible.
In one embodiment, the financial system is configured to generate reports on the referral system. These reports may identify the referrals for each associate, the commissions payable to each associate, the effectiveness of the referral system (e.g., whether the referrals resulted in sales) and various other related information. The referral information may also be automatically entered into the ASP's accounting system. The reports are typically generated on a periodic basis (e.g., monthly) and payments of the accrued commissions are made to the associates based upon these reports. The system may also be configured to automatically initiate a payment transaction (e.g., an electronic funds transfer) to pay the commissions to the associates.
In alternate embodiments, associates may receive compensation other than cash payments. For example, since the associates may be customers of the ASP, they may prefer to receive credit which can be applied toward the
purchase of services from the ASP. Other forms of compensation may also be used.
In addition to the preferred embodiment described above, there may be many alternate embodiments of the present system and method. For example, in one embodiment, the associate may provide its own email service. Since the emails of the associate in this embodiment are normally sent directly from the associate's email server, they are not processed by the ASP and do not have the text with the hyperlink appended thereto by the ASP. In this embodiment, the associate appends the hyperlinked text to its own emails. While the preferred embodiment is completely automated, the associate may append the hyperlinked text through either automated or manual means . The hyperlink contains the same type identifiers for the web site and the associate that are contained in the text appended by the ASP in the previously described embodiment, but the tagging function is assumed by the associate. The referral of potential customers to the identified web site, the tracking of these referrals and the compensation of the associate remains the same .
In another embodiment, the hyperlinked text may be selectively appended to emails. In other words, it may be appended to only a certain subset of the emails which are sent by the associate. For example, the selected emails may be directed to a particular group of potential customers, or they may contain a particular type of message (e.g., messages relating to the business of the ASP's web site.) In yet another embodiment, the specific text which is appended to the emails may be chosen to correspond to the content of the email. For example, emails which are in the nature of advertisements may be appended with text which is clearly promotional (e.g., "For all your application needs, visit freeMe.com !") Emails which are more informative in nature may be appended with messages which are more instructive (e.g., "Comprehensive reviews of the applications mentioned above can be found at freeMe . com . " )
As mentioned above, the systems which are described .above for providing compensation to the associates for referrals may vary. While the variations described above illustrate different referral payment schemes, there may also be variations in the manner in which the referrals themselves are tracked. For example, rather than simply counting the web page requests which include an associate's identifier, the system may track referrals which result in sales as well as those which do not. The two types of referrals may then be compensated differently. In another embodiment, the system may determine whether a potential customer who has visited the web site has done so on one or more previous occasions and may record only those referrals which are
initial contacts. In other words, the associate may receive credit only for first-time referrals.
It should be noted that the organization of the systems in the embodiments described above are intended to be illustrative and that many variations are possible. For example, as noted above, the associate database and the referral database are described in one embodiment as comprising separate databases. In other embodiments, all of the information contained in these may be stored in a single, consolidated database, or it may be broken up into more databases, depending upon the requirements of a particular implementation. Likewise, the hardware supporting the various sites (i.e., ASP site, associate site and customer site) need not be limited to the particular configurations of the described embodiments.
While the present invention has been described with reference to particular embodiments, it should be understood that the embodiments are illustrative and that the scope of the invention is not limited to these embodiments. Many variations, modifications, additions and improvements to the embodiments described above are possible. It is contemplated that these variations, modifications, additions and improvements fall within the scope of the invention as detailed within the following claims.
ADDITIONAL DISCLOSURE:
1. System and Method for Graphically Representing Database Objects with Contextual Meaning.
The present invention relates generally to systems and methods for graphically representing information contained within a database, and more particularly, a system and method for graphically representing database objects having contextual meaning which are accessed over a distributed network such as the Internet, and wherein the graphical representation communicates the context of the database object to a user.
The present invention provides a graphical representation interface to a database management system that substantially eliminates or reduces disadvantages and problems associated with previously developed database management systems .
More specifically, the present invention provides a system and method for graphically representing information (database objects) contained within a database to a user accessing the database. This database management system includes a graphical user interface (GUI) that presents database objects as files located within a set of hierarchical file system folders to a user. This GUI is coupled to a software engine that identifies each user as the
user accesses the database with a USER__ID. After identifying the user, the software engine queries the database for database objects available to the individual user accessing the database. The results of this query are organized, provided in an HTML stream, and rendered in a graphical format on the GUI to the user.
In a second embodiment of the present invention, the user accesses and manipulates the database and associated database objects from a local computing station or terminal connected to. a distributed network. The database is remotely accessed via a distributed network, such as the Internet, a wide area network, a local area network, intranet, or other such network as known to those skilled in the art. Importantly, the results of the query, the database objects available to the user, may be presented in a hierarchical file system manner as file systems often present discrete files on data storage media according to local operating systems such as the Windows® or MS-DOS® environment.
A key aspect of the system and method of the present invention allows the user, through the graphical user interface, to transparently perform database operations corresponding to similar file system requests in a local operating system. This graphical user interface may serve as an application for directly manipulating and displaying the contents of the database or alternatively may be coupled to an application wherein the system and method of the present invention translates a file system request from an application operating within a local operating system into a database operation. The information or data associated with the database object accessed as a result of the database operation will be formatted into a file system object and •returned to the local application. This formatting of the database object may be accomplished by either the software engine associated with the present invention or a second software module that contains specific instructions as to the manner in which a database object should be transformed into a file system object. In this manner, database objects may be made available to local applications as multiple file system objects in one or more formats or contexts understandable by different' local applications.
The system and method of the present invention provides an important technical advantage in that database objects may be presented in a graphical format consistent with hierarchical file systems. This translation and presentation of the database objects into a file system format is transparent to the user.
A second advantage provided by the present invention is that a database-unaware software application executed on a local computing system that utilizes the system and method of, can access database objects via file
system requests provided to the software engine of the present invention. This allows a remote database to appear as a local file system that is essentially no different in form or function to other file systems available to the software program. As a result, the users and developers of database- unaware and availability applications are provided with database functionality with no development time or cost.
Another important technical advantage provided by the system and method of the present invention is the ability to combine disparate data storage technologies in a scalable manner. Furthermore, the system and method of the present invention provides another key advantage over prior art systems in that database objects are able to be provided with a contextual meaning. In this manner, a database object may be represented graphically wherein the representation contains contextual information as to the "file type" of the database object. This allows a user accessing the database to quickly filter available database objects according to their format, context, or type.
The system and method of the present invention provides yet another important technical advantage over prior art systems in that the user interface of the present invention may be executed over a content rendering unit such as an internet browser. This allows a database that is accessed over a distributed network to be manipulated independent of the local operating system as long as a compatible content rendering unit or internet browser is available for the local operating system.
Other advantages of the database management system interface described herein allow applications that rely on a file system as a data repository, to access information in a database in a transparent manner. These database- unaware applications can share data seamlessly both with database-aware applications and with other database-unaware applications. No change to the application's program code, the database or the database engine is required. As a result, users of database-unaware applications are provided with database functionality without having to invest the time and cost typically associated with database-aware tools.
A system administrator may use the scalable nature of the present invention to combine disparate file-based systems and database systems to create a unified data repository strategy spanning a company. Thus, the companies' investment in legacy data storage technologies and repositories is maintained as data present in these repositories may easily be transferred to a database as the company migrates to RDB or ORDB databases. Moreover, a company's investment in database-unaware applications is enhanced because the
present invention enables local applications to use data stored in a database.
A database contains information logically arranged in order to facilitate retrieval, storage, and queries by a set of instructions executed by a software engine. The efficient and logical organization of data is becoming increasingly important as the availability, accessibility, and overall ability to gather ever increasing amounts of usable data grows. This growth is due in part to the growing use and reliance on networks such as the Internet. Databases generally fall into three categories: (1) relational databases, (2) object-oriented databases; and (3) object-relational databases.
A relational database (RDB) is a collection of fixed-field tables related or linked with one another. The structure of a RDB can be modified by redefining the relationships between fixed field tables within the database. Sets of software instructions may be used to perform complex queries on RDBs both quickly and easily according to any number of query protocols such as those expressed by the Structured Query Language (SQL) . Relationships between tables within the databases allow a query to automatically cross reference and locate related database elements. FIGURE 6 illustrates RDB 10. RDB 10 contains a plurality of fixed field tables such as customer table 12, inventory table 14, and order table 16. These tables are joined by logical links 18 and 19. A user might query RDB 10 for information relating to an individual customer. This query returns customer information contained within table 12 as well as relate inventory information from table 14 and order information from table 16. An object-oriented database (OODB) is a collections of database objects
(software elements that contain both data and rules for manipulating that data.) In contrast to a RDB that merely stores alpha-numeric type data, an OODB stores virtually any type of data (text, audio, graphics, video, etc.) in a hierarchy governed by rules contained within the OODB. The RDB, which merely contains data, must rely on an external application to manipulate the data.
A third type of database is the object-relational database (ORDB) , which is a mixture of an RDB and an OODB. Data is accessed in an ORDB as a binary large object (BLOB)-- mass of data. Rules for manipulating the data contained within a BLOB are stored either within the database or externally.
Information contained within a RDB or ORDB is typically accessed by SQL-compliant programs that accomplish specific tasks or functions. However, these computer programs require a knowledge of how the RDB or ORDB is organized and the data stored therein. This creates a difficulty in
accounting for new information incorporated into the database. This limitation is extremely frustrating where a database is accessed by multiple users in a distributed network environment as opposed to a single user at a single access point or interface. As information resources and computing systems grow and migrate toward network applications, there is a need for a superior method for both handling and accessing database objects in a network environment .
Additionally, most users are familiar with applications that are "database unaware." Database unaware means that the applications cannot directly access information stored within a database. These applications rely on file systems that are part of a local or native operating system, such as the Windows or Mac environment. These file systems store and retrieve information in discrete files located within a local storage media.
FIGURE 7 illustrates a file system 20 comprising storage media 22 and 24, labeled and mapped as drive "a:" 22 and drive "b:" 24. Each drive 22 and 24 can contain a hierarchy of nested directories and subdirectories with virtually any level of hierarchical nesting being possible. Files 25-32 may exist within any of the various directory or subdirectory levels within the file system. The labels, "a:" and "b:" represent the "namespace" of the file system. That is, all filename paths that begin with "a:" or "b:" are within the file system's namespace. FIGURE 2 depicts a file 31, "freeme.doc" at a location defined by the filename path:
a:\docs\freeme.doc which means that file 31 named "freeme" of the type or context "doc" is stored in a directory named docs on drive 22 mapped to the label "a:".
Therefore a need exists for the ability to access/share and manipulate database objects as one would access and manipulate discrete files within a native or local operating system such as MS-DOS, Windows or other operating environments as known to those skilled in the art. The present invention provides a graphical representation interface to a database management system that substantially eliminates or reduces disadvantages and problems associated with previously developed database management systems .
More specifically, the present invention provides a system and method for graphically representing information (database objects) contained within a database to a user accessing the database. This database management system includes a graphical user interface (GUI) that presents database objects as files located within a set of hierarchical file system folders to a user. This GUI is coupled to a software engine that identifies each user as the
user accesses the database with a USER_ID. After identifying the user, the software engine queries the database for database objects available to the individual user accessing the database. The results of this query are organized, provided in an HTML stream, and rendered in a graphical format on the GUI to the user.
In a second embodiment of the present invention, the user accesses and manipulates the database and associated database objects from a local computing station or terminal connected to a distributed network. The database is remotely accessed via a distributed network, such as the Internet, a wide area network, a local area network, intranet, or other such network as known to those skilled in the art. Importantly, the results of the query, the database objects available to the user, may be presented in a hierarchical file system manner as file systems often present discrete files on data storage media according to local operating systems such as the Windows® or MS-DOS® environment.
A key aspect of the system and method of the present invention allows the user, through the graphical user interface, to transparently perform database operations corresponding to similar file system requests in a local operating system. This graphical user interface may serve as an application for directly manipulating and displaying the contents of the database or alternatively may be coupled to an application wherein the system and method of the present invention translates a file system request from an application operating within a local operating system into a database operation. The information or data associated with the database object accessed as a result of the database operation will be formatted into a file system object and returned to the local application. This formatting of the database object may be accomplished by either the software engine associated with the present invention or a second software module that contains specific instructions as to the manner in which a database object should be transformed into a file system object. In this manner, database objects may be made available to local applications as multiple file system objects in one or more formats or contexts understandable by different local applications.
The system and method of the present invention provides an important technical advantage in that database objects may be presented in a graphical format consistent with hierarchical file systems. This translation and presentation of the database objects into a file system format is transparent to the user.
A second advantage provided by the present invention is that a database-unaware software application executed on a local computing system that utilizes the system and method of, can access database objects via file
system requests provided to the software engine of the present invention. This allows a remote database to appear as a local file system that is essentially no different form or function to other file systems available to the software program. As a result, the users and developers of database- unaware and availability applications are provided with database functionality with no development time or cost .
Another important technical advantage provided by the system and method of the present invention is the ability to combine disparate data storage technologies in a scalable manner. Furthermore, the system and method of the present invention provides another key advantage over prior art systems that database objects are able to be provided with a contextual meaning. In this manner, a database object may be represented graphically wherein the representation contains contextual information as to the "file type" of the database object. This allows a user accessing the database to quickly filter available database objects according to their format, context, or type.
The system and method of the present invention provides yet another important technical advantage over prior art systems in that the user interface of the present invention may be executed over a content rendering unit such as an internet browser. This allows a database that is accessed over a distributed network to be manipulated independent of the local operating system as long as a compatible content rendering unit or internet browser is available for the local operating system.
Other advantages of the database management system interface described herein allow applications that rely on a file system as a data repository, to access information m a database m a transparent manner. These database- unaware applications can share data seamlessly both with database-aware applications and with other database-unaware applications. No change to the application's program code, the database or the database engine is required. As a result, users of database-unaware applications are provided with database functionality without having to invest the time and cost typically associated with database-aware tools.
A system administrator may use the scalable nature of the present invention to combine disparate file-based systems and database systems to create a unified data repository strategy spanning a company. Thus, the companies' investment in legacy data storage technologies and repositories is maintained as data present in these repositories may easily be transferred to a database as the company migrates to RDB or ORDB databases. Moreover, a company's investment in database-unaware applications is enhanced because the
present invention enables local applications to use data stored in a database .
For a more complete understanding of the present invention and the advantages thereof, reference is now made to the following description taken in conjunction with the accompanying drawings in which like reference numerals indicate like features and wherein:
A more complete understanding of the present invention and the advantages thereof may be acquired by referring to the following description, taken in conjunction with the accompanying drawings in which like reference numbers indicate like features and wherein:
FIGURE 6 provides a diagram of a prior art relational database;
FIGURE 7 illustrates a typical prior art file system;
FIGURE 8 illustrates one embodiment of the present invention;
FIGURE 9 depicts a flow chart describing one process for identifying database objects accessible to a user;
FIGURE 10 illustrates a GUI screen representing contextual database objects from a distributed network rendered within a content rendering unit by the method of the present invention; and
FIGURE 11 provides a schematic of the relationship between tables and database objects within the present invention.
Preferred embodiments of the present invention are illustrated in the FIGURES, like numerals being used to refer to like and corresponding parts of the various drawings .
The use of a database to store persistent data provides several advantages that are not available when a file system is used as a data repository. The structure of a database, and the internal relationships between tables and objects within the database, enable fast and arbitrarily complex queries for information to be performed on the database. A file system in contrast has no standard data query mechanism for searching for specific data items within the files managed by the file system. Other features provided by database systems for which conventional file systems have no analog include well-defined management policies, auditing capabilities, transparent data replication, logging facilities, and consistent backup and restore procedures . Prior solutions wherein a database system is used as a data repository have required relatively complex and expensive tools such as "database-aware" applications and an associated increased level of sophistication for the end
user. In contrast, file systems are relatively simple to understand, and pervasive in use. Such a file system is contained in almost every computer operating system.
The database management system described herein, provides users with the ability to graphically map database objects contained within a database in a manner similar to those provided by file systems contained in the Microsoft Windows® or Mac OS® environments . The database management system of the present invention additionally enables users to access (read/write) database objects in a manner similar to the accessing of discrete files in a local file system. In other words, this database management system is capable of presenting the contents of a database to both users and applications as "file system objects" such as directories, subdirectories, and files.
FIGURE 8 illustrates one potential embodiment of the system and method of the present invention. In FIGURE 8, user 41 can access database 42 via a network connection 44. User 41 will establish a network connection 44 between a network 46 and a local computing system 48. A graphical user interface or content rendering unit 50, such as an Internet browser, can be operated on local computing system 48. User 41 may make a query or database request 52 via graphical user interface 50. Request 52 is sent to a software engine 54 coupled to database 42. Software engine 54 is operable to identify user 41 that is attempting to access database 42 with a USER_ID. Software engine 54 will query database 42 for database objects available to user 41. The results of this query are provided to software engine 54, wherein software engine 54 is operable to create an HTML stream to be provided to graphical user interface 50 in order to render a graphical representation of database objects 56 located within database 42 available to user 41.
The process of determining which database objects 56 are available to user 41 is illustrated in the flow chart provided in FIGURE 9. In FIGURE 4, at step 100, user 41 is identified with a USER_ID. At step 102, a set of groups or GROUP_IDs are identified to which user 41 belongs. At step 104, a set of folders or FOLDER_IDs are identified that are associated with the set of groups or GROUP_IDs identified in step 102. In step 106, database objects relating to the set of folders or FOLDER_IDs identified in step 104 are identified. This set of database objects constitutes the database objects available to user 41. In step 108, a graphical representation of the folders identified in step 104 and their related database objects identified in step 106 is rendered for user 41 in a content rendering unit. In an alternative embodiment, the folders may have associated subfolders wherein database objects are identified and related to these subfolders. Thus, the graphical
representation may constitute a hierarchical tree of folders, subfolders, and database objects available to user 41.
The method of the present invention provides an important technical benefit in that the graphical representation rendered to user 41 at the content rendering unit operating on a local computing system merely requires that the content rendering unit be capable of constructing the graphical representation from a stream of HTML provided by the software engine assembling the query results of database 42. Thus, the representation of the available database objects within database 42 is merely dependent on the compatibility of the content rendering unit to render a graphical representation based on a stream of HTML or other similar protocol, as known to those skilled in the art, from software engine 54. Thus, a representation of the available database objects can be made independent of the local operating system, as long as a compatible content rendering unit is available for that local operating system.
In an additional embodiment, the database objects 56 within database 42 are tagged with a context tag. This context tag is similar to a file extension in the MS-DOS operating system wherein a file type or context may be identified from the file extension, wherein an application can be associated with that file based on the file extension. The context tag of the database object allows software engine 54 to provide a graphical representation such as a meaningful icon to be associated with database objects having similar context such as email, bookmarked items, calendared events, tasks, or contact information. However, these contexts need not be limited to this set. The context may identify the database object as a text item, audio clip, video data, image or other such context as known to those skilled in the art.
The content need not be presented merely by an informative graphical icon. In another embodiment, as illustrated in FIGURE 5, a series of database objects may be identified as email, bookmarks, calendared events, tasks or contacts, etc. wherein only when a contextual folder, such as bookmarks, is selected, only those items having the bookmark context are displayed. FIGURE 5 represents a graphical user interface that rendered a graphical representation of database objects contained within database 42. Left Subview 62 presents a file tree of files and subfiles associated with database objects available to a user. Right Subview 64 indicates contextual folders in which the availability of individual database objects may be viewed.
In an additional embodiment of the present invention, the database objects illustrated in FIGURE 5 are accessed (read/write) as files within a
file tree. A local computing system may have read/write access to these database objects, wherein a file system request provided to a local interface is translated into a database operation by the software engine of the present invention. In this manner, a remote database may be viewed and treated by local applications as a remote storage media such as a disk drive.
Using a database system as a data repository requires relatively complex and expensive tools, such as special purpose database-aware applications, and an increased level of sophistication and training by the end-user. File systems in contrast are generally simple to use, cheap and pervasive. Virtually every computer operating system provides a native file system that may be used by applications for storing persistent data. This network effect, among all other reasons, is why approximately 85-90% of all persistent data is stored in file systems by database-unaware applications.
The present invention allows a user to open database objects as context specific files, such as text; modify the database objects contents; and perform a standard "file system" operation via the GUI. "File operations" requests are translated into a corresponding database operations that modify the contents of the database appropriately.
Embodiments of the present invention allow all file system operations to be performed on database objects. For example, a user could employ appropriate features of the navigation tool to change the name of a directory. Similarly, a user could create a new database object such as a subdirectory or a new file underneath the directory. Moreover, access to specified portions of the database could be limited for certain users in the same manner that file system objects in a file system may be limited (read only, hidden, etc . ) .
Portions of a database are mapped to a file system representation by selecting database tables and rows as desired, and by designating the type of file system object to which each selected table and row corresponds. For example, a database such as FIGURE 6 can be mapped into the file system hierarchy shown in FIGURE 10 by specifying that each of the customer, order and inventory tables occupy a separate file object in of the type "directory." Within the file object for the customer table, each of the name, address and id rows have been designated as the type "directory, " thereby making them appear as subdirectories to the hierarchically dominant customer directory. Within the "name" row in the "customer" table, the individual customer name entries have been designated in the file object as the type "file" making them appear as individual text files.
Several different contexts may be operative at the same time to provide access to two or more different databases simultaneously or to access different information within the same database or to provide a different interpretation of the same database object. A single extension module is capable of translating the database object into multiple formats as different types of file system objects.
By employing the appropriate contexts, whether obtained from a software library or generated according to custom specifications, software developers may enable database-unaware applications (e.g., Microsoft Word, Microsoft Excel, Lotus 1-2-3) to retrieve or store information stored in a networked database. At the same time, database-aware applications may continue to access all of the information stored within the database, including information that was stored by database-unaware applications in the first instance. Together these capabilities enable a single enterprise-wide data repository to be maintained with various different applications, both database-aware and database-unaware, being able to access the information in the data repository. Moreover, the present invention facilitates the migration of data between different applications--for example, between a database-aware application and a database-unaware application or between two disparate database-unaware applications.
The methods and mechanisms described here are not limited to any particular hardware or software configuration, but rather they may find applicability in any computing or processing environment in which database manipulation may be performed. The techniques described here may be implemented in hardware or software, or a combination of the two. Preferably, the techniques are implemented in computer programs executing on programmable computers that each include a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage elements) , and suitable input and output devices. Program code is applied to data entered using the input device to perform the functions described and to generate output information. The output information is applied to one or more output devices .
FIGURE 1 provides a schematic of the relationship between tables and database objects within the present invention.
The system and method of the present invention provides an important technical advantage in that database objects may be presented in a graphical format consistent with hierarchical file systems. This translation and
presentation of the database objects into a file system format is transparent to the user.
A second advantage provided by the present invention is that a database-unaware software application executed on a local computing system that utilizes the system and method of, can access database objects via file system requests provided to the software engine of the present invention. This allows a remote database to appear as a local file system that is essentially no different in form or function to other file systems available to the software program. As a result, the users and developers of database- unaware and availability applications are provided with database functionality with no development time or cost.
Another important technical advantage provided by the system and method of the present invention is the ability to combine disparate data storage technologies in a scalable manner. Furthermore, the system and method of the present invention provides another key advantage over prior art systems in that database objects are able to be provided with a contextual meaning. In this manner, a database object may be represented graphically wherein the representation contains contextual information as to the "file type" of the database object. This allows a user accessing the database to quickly filter available database objects according to their format, context, or type.
The system and method of the present invention provides yet another important technical advantage over prior art systems in that the user interface of the present invention may be executed over a content rendering unit such as an internet browser. This allows a database that is accessed over a distributed network to be manipulated independent of the local operating system as long as a compatible content rendering unit or internet browser is available for the local operating system.
Other advantages of the database management system interface described herein allow applications that rely on a file system as a data repository, to access information in a database in a transparent manner. These database- unaware applications can share data seamlessly both with database-aware applications and with other database-unaware applications. No change to the application's program code, the database or the database engine is required. As a result, users of database-unaware applications are provided with database functionality without having to invest the time and cost typically associated with database-aware tools.
A system administrator may use the scalable nature of the present invention to combine disparate file-based systems and database systems to
create a unified data repository strategy spanning a company. Thus, the companies' investment in legacy data storage technologies and repositories is maintained as data present in these repositories may easily be transferred to a database as the company migrates to RDB or ORDB databases . Moreover, a company's investment in database-unaware applications is enhanced because the present invention enables local applications to use data stored in a database.
2. System and Method for Accessing Database Objects Over a Distributed Network via a Graphical Representation Provided by a Content Rendering Unit. The present invention relates generally to systems and methods for graphically representing information contained within a database, and more particularly, a system and method for graphically representing database objects accessed over a distributed network in a file system format.
A relational database (RDB) is a collection of fixed-field tables related or linked with one another. The structure of a RDB can be modified by redefining the relationships between fixed field tables within the database. Sets of software instructions may be used to perform complex queries on RDBs both quickly and easily according to any number of query protocols such as those expressed by the Structured Query Language (SQL) . Relationships between tables within the databases allow a query to automatically cross reference and locate related database elements. FIGURE 6 illustrates RDB 10. RDB 10 contains a plurality of fixed field tables such as customer table 12, inventory table 14, and order table 16. These tables are joined by logical links 18 and 19. A user might query RDB 10 for information relating to an individual customer. This query returns customer information contained within table 12 as well as relate inventory information from table 14 and order information from table 16.
An object-oriented database (OODB) is a collections of database objects (software elements that contain both data and rules for manipulating that data.) In contrast to a RDB that merely stores alpha-numeric type data, an
OODB stores virtually any type of data (text, audio, graphics, video, etc.) in a hierarchy governed by rules contained within the OODB. The RDB, which merely contains data, must rely on an external application to manipulate the data. A third type of database is the object-relational database (ORDB) , which is a mixture of an RDB and an OODB. Data is accessed in an ORDB as a binary large object (BLOB)-- mass of data. Rules for manipulating the data contained within a BLOB are stored either within the database or externally.
Information contained within a RDB or ORDB is typically accessed by SQL-compliant programs that accomplish specific tasks or functions. However, these computer programs require a knowledge of how the RDB or ORDB is organized and the data stored therein. This creates a difficulty in accounting for new information incorporated into the database. This limitation is extremely frustrating where a database is accessed by multiple users in a distributed network environment as opposed to a single user at a single access point or interface. As information resources and computing systems grow and migrate toward network applications, there is a need for a superior method for both handling and accessing database objects in a network environment .
Additionally, most users are familiar with applications that are "database unaware." Database unaware means that the applications cannot directly access information stored within a database. These applications rely on file systems that are part of a local or native operating system, such as the Windows or Mac environment. These file systems store and retrieve information in discrete files located within a local storage media.
FIGURE 7 illustrates a file system 20 comprising storage media 22 and 24, labeled and mapped as drive "a:" 22 and drive "b:" 24. Each drive 22 and 24 can contain a hierarchy of nested directories and subdirectories with virtually any level of hierarchical nesting being possible. Files 25-32 may exist within any of the various directory or subdirectory levels within the file system. The labels, "a:" and "b:" represent the "namespace" of the file system. That is, all filename paths that begin with "a:" or "b:" are within the file system's namespace. FIGURE 7 depicts a file 31, "freeme.doc" at a location defined by the filename path:
a:\docs\freeme.doc which means that file 31 named "freeme" of the type or context "doc" is stored in a directory named docs on drive 22 mapped to the label "a:". Therefore a need exists for the ability to access/share and manipulate database objects as one would access and manipulate discrete files within a native or local operating system such as MS-DOS, Windows or other operating environments as known to those skilled in the art.
The present invention provides a graphical representation interface to a database management system that substantially eliminates or reduces disadvantages and problems associated with previously developed database management systems .
More specifically, the present invention provides a system and method for graphically representing information (database objects) contained within
a database to a user accessing the database. This database management system includes a graphical user interface (GUI) that presents database objects as files located within a set of hierarchical file system folders to a user. This GUI is coupled to a software engine that identifies each user as the user accesses the database with a USER_ID. After identifying the user, the software engine queries the database for database objects available to the individual user accessing the database. The results of this query are organized, provided in an HTML stream, and rendered in a graphical format on the GUI to the user. In a second embodiment of the present invention, the user accesses and manipulates the database and associated database objects from a local computing station or terminal connected to a distributed network. The database is remotely accessed via a distributed network, such as the Internet, a wide area network, a local area network, intranet, or other such network as known to those skilled in the art. Importantly, the results of the query, the database objects available to the user, may be presented in a hierarchical file system manner as file systems often present discrete files on data storage media according to local operating systems such as the Windows® or MS-DOS® environment. A key aspect of the system and method of the present invention allows the user, through the graphical user interface, to transparently perform database operations corresponding to similar file system requests in a local operating system. This graphical user interface may serve as an application for directly manipulating and displaying the contents of the database or alternatively may be coupled to an application wherein the system and method of the present invention translates a file system request from an application operating within a local operating system into a database operation. The information or data associated with the database object accessed as a result of the database operation will be formatted into a file system object and returned to the local application. This formatting of the database object may be accomplished by either the software engine associated with the present invention or a second software module that contains specific instructions as to the manner in which a database object should be transformed into a file system object. In this manner, database objects may be made available to local applications as multiple file system objects in one or more formats or contexts understandable by different local applications.
The system and method of the present invention provides an important technical advantage in that database objects may be presented in a graphical format consistent with hierarchical file systems. This translation and
presentation of the database objects into a file system format is transparent to the user.
A second advantage provided by the present invention is that a database-unaware software application executed on a local computing system that utilizes the system and method of, can access database objects via file system requests provided to the software engine of the present invention This allows a remote database to appear as a local file system that s essentially no different m form or function to other file systems available to the software program. As a result, the users and developers of database- unaware and availability applications are provided with database functionality with no development time or cost.
Another important technical advantage provided by the system and method of the present invention is the ability to combine disparate data storage technologies m a scalable manner. Furthermore, the system and method of the present invention provides another key advantage over prior art systems in that database objects are able to be provided w th a contextual meaning. In this manner, a database object may be represented graphically wherein the representation contains contextual information as to the "file type" of the database object. This allows a user accessing the database to quickly filter available database objects according to their format, context, or type.
The system and method of the present invention provides yet another important technical advantage over prior art systems m that the user interface of the present invention may be executed over a content rendering unit such as an internet browser. This allows a database that is accessed over a distributed network to be manipulated independent of the local operating system as long as a compatible content rendering unit or internet browser is available for the local operating system.
Other advantages of the database management system interface described herein allow applications that rely on a file system as a data repository, to access information in a database in a transparent manner. These database- unaware applications can share data seamlessly both with database-aware applications and with other database-unaware applications. No change to the application's program code, the database or the database engine is required. As a result, users of database-unaware applications are provided with database functionality without having to invest the t me and cost typically associated with database-aware tools.
A system administrator may use the scalable nature of the present invention to combine disparate file-based systems and database systems to
create a unified data repository strategy spanning a company. Thus, the companies' investment in legacy data storage technologies and repositories is maintained as data present in these repositories may easily be transferred to a database as the company migrates to RDB or ORDB databases. Moreover, a company's investment in database-unaware applications is enhanced because the present invention enables local applications to use data stored in a database .
For a more complete understanding of the present invention and the advantages thereof, reference is now made to the following description taken in conjunction with the accompanying drawings in which like reference numerals indicate like features and wherein:
A more complete understanding of the present invention and the advantages thereof may be acquired by referring to the following description, taken in conjunction with the accompanying drawings in which like reference numbers indicate like features and wherein:
FIGURE 6 provides a diagram of a prior art relational database;
FIGURE 7 illustrates a typical prior art file system;
FIGURE 8 illustrates one embodiment of the present invention;
FIGURE 9 depicts a flow chart describing one process for identifying database objects accessible to a user;
FIGURE 10 illustrates a GUI screen representing contextual database objects from a distributed network rendered within a content rendering unit by the method of the present invention; and
FIGURE' 11 provides a schematic of the relationship between tables and database objects within the present invention.
Preferred embodiments of the present invention are illustrated in the FIGURES, like numerals being used to refer to like and corresponding parts of the various drawings .
The use of a database to store persistent data provides several advantages that are not available when a file system is used as a data repository. The structure of a database, and the internal relationships between tables and objects within the database, enable fast and arbitrarily complex queries for information to be performed on the database. A file system in contrast has no standard data query mechanism for searching for specific data items within the files managed by the file system. Other features provided by database systems for which conventional file, systems have no analog include well-defined management policies, auditing
capabilities, transparent data replication, logging facilities, and consistent backup and restore procedures.
Prior solutions wherein a database system is used as a data repository have required relatively complex and expensive tools such as "database-aware" applications and an associated increased level of sophistication for the end user. In contrast, file systems are relatively simple to understand, and pervasive in use. Such a file system is contained in almost every computer operating system.
The database management system described herein, provides users with the ability to graphically map database objects contained within a database in a manner similar to those provided by file systems contained in the Microsoft Windows® or Mac OS® environments . The database management system of the present invention additionally enables users to access (read/write) database objects in a manner similar to the accessing of discrete files in a local file system. In other words, this database management system is capable of presenting the contents of a database to both users and applications as "file system objects" such as directories, subdirectories, and files.
FIGURE 8 illustrates one potential embodiment of the system and method of the present invention. In FIGURE 3, user 41 can access database 42 via a network connection 44. User 41 will establish a network connection 44 between a network 46 and a local computing system 48. A graphical user interface or content rendering unit 50, such as an Internet browser, can be operated on local computing system 48. User 41 may make a query or database request 52 via graphical user interface 50. Request 52 is sent to a software engine 54 coupled to database 42. Software engine 54 is operable to identify user 41 that is attempting to access database 42 with a USER_ID. Software engine 54 will query database 42 for database objects available to user 41. The results of this query are provided to software engine 54, wherein software engine 54 is operable to create an HTML stream to be provided to graphical user interface 50 in order to render a graphical representation of database objects 56 located within database 42 available to user 41.
The process of determining which database objects 56 are available to user 41 is illustrated in the flow chart provided in FIGURE 9. In FIGURE 9, at step 100, user 41 is identified with a USER_ID. At step 102, a set of groups or GROUP_IDs are identified to which user 41 belongs. At step 104, a set of folders or FOLDER_IDs are identified that are associated with the set of groups or GROUP_IDs identified in step 102. In step 106, database objects relating to the set of folders or FOLDER_IDs identified in step 104 are identified. This set of database objects constitutes the database objects
available to user 41. In step 108, a graphical representation of the folders identified in step 104 and their related database objects identified in step 106 is rendered for user 41 in a content rendering unit. In an alternative embodiment, the folders may have associated subfolders wherein database objects are identified and related to these subfolders. Thus, the graphical representation may constitute a hierarchical tree of folders, subfolders, and database objects available to user 41.
The method of the present invention provides an important technical benefit in that the graphical representation rendered to user 41 at the content rendering unit operating on a local computing system merely requires that the content rendering unit be capable of constructing the graphical representation from a stream of HTML provided by the software engine assembling the query results of database 42. Thus, the representation of the available database objects within database 42 is merely dependent on the compatibility of the content rendering unit to render a graphical representation based on a stream of HTML or other similar protocol, as known to those skilled in the art, from software engine 54. Thus, a representation of the available database objects can be made independent of the local operating system, as long as a compatible content rendering unit is available for that local operating system.
In an additional embodiment, the database objects 56 within database 42 are tagged with a context tag. This context tag is similar to a file extension in the MS-DOS operating system wherein a file type or context may be identified from the file extension, wherein an application can be associated with that file based on the file extension. The context tag of the database object allows software engine 54 to provide a graphical representation such as a meaningful icon to be associated with database objects having similar context such as email, bookmarked items, calendared events, tasks, or contact information. However, these contexts need not be limited to this set. The context may identify the database object as a text item, audio clip, video data, image or other such context as known to those skilled in the art .
The content need not be presented merely by an informative graphical icon. In another embodiment, as illustrated in FIGURE 10, a series of database objects may be identified as email, bookmarks, calendared events, tasks or contacts, etc. wherein only when a contextual folder, such as bookmarks, is selected, only those items having the bookmark context are displayed. FIGURE 10 represents a graphical user interface that rendered a graphical representation of database objects contained within database 42. Left Subview 62 presents a file tree of files and subfiles associated with
database objects available to a user. Right Subview 64 indicates contextual folders in which the availability of individual database objects may be viewed .
In an additional embodiment of the present invention, the database objects illustrated in FIGURE 5 are accessed (read/write) as files within a file tree. A local computing system may have read/write access to these database objects, wherein a file system request provided to a local interface is translated into a database operation by the software engine of the present invention. In this manner, a remote database may be viewed and treated by local applications as a remote storage media such as a disk drive.
Using a database system as a data repository requires relatively complex and expensive tools, such as special purpose database-aware applications, and an increased level of sophistication and training by the end-user. File systems in contrast are generally simple to use, cheap and pervasive. Virtually every computer operating system provides a native file system that may be used by applications for storing persistent data. This network effect, among all other reasons, is why approximately 85-90% of all persistent data is stored in file systems by database-unaware applications.
The present invention allows a user to open database objects as context specific files, such as text; modify the database objects contents; and perform a standard "file system" operation via the GUI. ^File operations" requests are translated into a corresponding database operations that modify the contents of the database appropriately.
Embodiments of the present invention allow all file system operations to be performed on database objects. For example, a user could employ appropriate features of the navigation tool to change the name of a directory. Similarly, a user could create a new database object such as a subdirectory or a new file underneath the directory. Moreover, access to specified portions of the database could be limited for certain users in the same manner that file system objects in a file system may be limited (read only, hidden, etc.).
Portions of a database are mapped to a file system representation by selecting database tables and rows as desired, and by designating the type of file system object to which each selected table and row corresponds. For example, a database such as FIGURE 1 can be mapped into the file system hierarchy shown in FIGURE 5 by specifying that each of the customer, order and inventory tables occupy a separate file object in of the type "directory." Within the file object for the customer table, each of the name, address and id rows have been designated as the type "directory, " thereby
making them appear as subdirectories to the hierarchically dominant customer directory. Within the "name" row in the "customer" table, the individual customer name entries have been designated in the file object as the type "file" making them appear as individual text files. Several different contexts may be operative at the same time to provide access to two or more different databases simultaneously or to access different information within the same database or to provide a different interpretation of the same database object. A single extension module is capable of translating the database object into multiple formats as different types of file system objects.
By employing the appropriate contexts, whether obtained from a software library or generated according to custom specifications, software developers may enable database-unaware applications (e.g., Microsoft Word, Microsoft Excel, Lotus 1-2-3) to retrieve or store information stored in a networked database. At the same time, database-aware applications may continue to access all of the information stored within the database, .including information that was stored by database-unaware applications in the first instance. Together these capabilities enable a single enterprise-wide data repository to be maintained with various different applications, both database-aware and database-unaware, being able to access the information in the data repository. Moreover, the present invention facilitates the migration of data between different applications--for example, between a database-aware application and a database-unaware application or between two disparate database-unaware applications. The methods and mechanisms described here are not limited to any particular hardware or software configuration, but rather they may find applicability in any computing or processing environment in which database manipulation may be performed.
The techniques described here may be implemented in hardware or software, or a combination of the two. Preferably, the techniques are implemented in computer programs executing on programmable computers that each include a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage elements) , and suitable input and output devices. Program code is applied to data entered using the input device to perform the functions described and to generate output information. The output information is applied to one or more output devices .
FIGURE 11 provides a schematic of the relationship between tables and database objects within the present invention.
The system and method of the present invention provides an important technical advantage in that database objects may be presented in a graphical format consistent with hierarchical file systems. This translation and presentation of the database objects into a file system format is transparent to the user.
A second advantage provided by the present invention is that a database-unaware software application executed on a local computing system that utilizes the system and method of, can access database objects via file system requests provided to the software engine of the present invention. This allows a remote database to appear as a local file system that is essentially no different in form or function to other file systems available to the software program. As a result, the users and developers of database- unaware and availability applications are provided with database functionality with no development time or cost. Another important technical advantage provided by the system and method of the present invention is the ability to combine disparate data storage technologies in a scalable manner.
Furthermore, the system and method of the present invention provides another key advantage over prior art systems in that database objects are able to be provided with a contextual meaning. In this manner, a database object may be represented graphically wherein the representation contains contextual information as to the "file type" of the database object. This allows a user accessing the database to quickly filter available database objects according to their format, context, or type. The system and method of the present invention provides yet another important technical advantage over prior art systems in that the user interface of the present invention may be executed over a content rendering unit such as an internet browser. This allows a database that is accessed over a distributed network to be manipulated independent of the local operating system as long as a compatible content rendering unit or internet browser is available for the local operating system.
Other advantages of the database management system interface described herein allow applications that rely on a file system as a data repository, to access information in a database in a transparent manner. These database- unaware applications can share data seamlessly both with database-aware applications and with other database-unaware applications.. No change to the application's program code, the database or the database engine is required. As a result, users of database-unaware applications are provided with
database functionality without having to invest the time and cost typically associated with database-aware tools.
A system administrator may use the scalable nature of the present invention to combine disparate file-based systems and database systems to create a unified data repository strategy spanning a company. Thus, the companies' investment legacy data storage technologies and repositories is maintained as data present these repositories may easily be transferred to a database as the company migrates to RDB or ORDB databases. Moreover, a company's investment m database-unaware applications is enhanced because the present invention enables local applications to use data stored m a database .
3. Intelligent Caching of Inert Data a Network Environment.
This invention relates to network systems, and particularly public network systems, such as the Internet. More particularly, this invention relates to methods which improve the distribution of data from a content provider over a network to an individual user ' s computer or other content rendering unit .
Recently, the Internet has been popularized by the use of Internet browsers. These browsers are graphical user interfaces that facilitate interaction between users and the Internet. The browser is an application executed on a user's computer to navigate and display information on the Web. Browsers typically allow users to retrieve and render hypermedia content from the Internet, including text, sound, images, video, and other data.
One problem facing the continued growth and acceptance of the Internet concerns dissemination and flow of data. Data is delivered and rendered to users m essentially two formats. The first format, referred to as "block data, " entails downloading the entire data set to local storage and then rendering the data from the locally stored copy. A second delivery format, known as "streaming data," entails sending bits of data continuously over the network for just- -time rendering.
Computer network users have been conditioned through their experiences with television and CD-ROM multimedia applications to expect instantaneous data on demand. For technical reasons, however, the Internet is often unable to deliver large blocks of data. It is not uncommon to wait several minutes for a large file to download.
The inability to provide instantaneous data is a result of too little bandwidth the distribution network. "Bandwidth" is the amount of data that can be moved through a particular network segment at any one time. As the Internet is a conglomerate of different technologies with different
associated bandw dths, distribution over the Internet is usually constrained by the segment having the lowest available bandwidth.
FIGURE 12 depicts a public network system 20, such as the Internet. The network system 20 includes a content server 22 (e.g. , a Web server) which stores and serves multimedia data from a storage medium 23 over a distribution network 24. The network system 20 also has regional independent service providers (ISPs) or point of presence (POP) operators, as represented by ISP 26, which provide the connectivity to the primary distribution network 24. A plurality of users, as represented by subscribers 28, 30, and 32, are connected to ISP 26 to gam access to distribution network 24.
ISP 26 is connected to distribution network 24 with a network connection 34. In this example illustration, the network connection 34 is a "TI" connection. »τi" is a unit of bandwidth having a base throughput speed of approximately 1.5 Mbps (Megabits per second). Another common high bandwidth connection is a T3 connection, which has a base throughput speed of approximately 44 7 Mbps . For purposes of explaining the state of the technology and the practical problems with providing real-time streaming data over the Internet, it is sufficient to understand that there is also a limited bandwidth connection between the content server 22 and the distribution network 24.
Subscribers 28 are connected to their host ISP 26 via lines, such as telephone or cable lines 36, and compatible modems. As examples of commercially available technology, subscribers 28 may be connected to ISP 26 over a 14.4K connection, which consists of a standard telephone line and a V.32bis modem to enable a maximum data rate of 14.4 Kbps (Kilobits per second), a 28 8K connection (telephone line and V.34 modem) which supports a data rate of 28.8 Kbps, an ISDN connection which is a special type of telephone line that facilitates data flow m the range of 128-132 Kbps or other such connection as known to those skilled in the art. Table 1 summarizes different connection technologies.
TABLE 1 Connection Technologies and Throughput
Connection Type Base Speed (Kbps)
V.32bιs modem 14.4 V.34 modem 28.8 56K Leased Line 56
ISDN BRI (1 channel)
56-64 ISDN BRI (2 channels)
128-132 Frame Relay 56-1,544 Fractional TI 256-1,280 ISDN PRI 1,544
Full TI (24 channels)
1,544 ADSL 2,000-6,000
Cable Modem 27,000 T3 44,736
With a TI connection to the primary distribution network 24, ISP 26 can facilitate a maximum data flow of approximately 1.5 Mbps. This bandwidth is available to serve all of the subscribers of the ISP. When subscriber 28 is connected and downloading data files, it requires a 14.4 Kbps slice of the
1.5 Mbps bandwidth. Subscriber computers 30 and 32 consume 28.8 Kbps and 128 Kbps slices, respectively, of the available bandwidth.
ISP 26 can accommodate simultaneous requests from a number of subscribers. As more subscribers utilize the services of ISP 26, there is less available bandwidth to satisfy subscriber requests. If too many requests are received, ISP 26 becomes overburdened and may not be able to adequately service subscriber requests in a timely manner, causing frustration to the subscribers.
One solution is for ISP 26 to purchase more bandwidth by adding additional capacity (e.g. , upgrading to a T3 connection or adding more TI connections) . Unfortunately, adding more bandwidth may not be economically wise for ISP 26. The load placed on ISP 26 typically fluctuates throughout different times of the day. Adding expensive bandwidth to more readily service short duration high-demand times may not be profitable if the present capacity adequately services subscriber traffic during most of the day.
Few things are more frustrating to users than trying to download large files from the Internet. The problem is that these files require large bandwidth. Accordingly, when multiple subscribers are coupled to ISP 26 and one subscriber requests a large file, there is generally not enough capacity to provide the file from the content server 22 over the Internet to the requesting subscriber.
Consider the following example. Suppose a subscriber wishes to access the CNN Web site on the Internet for an account of recent news . As part of the news materials, CNN provides a twenty second video clip of an airplane hijacking incident. At 1.2 Mbps, the 20 second video clip involves downloading a 24 Mbyte file over the Internet. If the user has a modest 14.4 Kbps connection, it would take approximately 28 minutes to download the entire file.
Now, assume that subscriber/ISP connection 36 is sufficiently large to handle large real-time video files. Despite the bandwidth of subscriber/ISP connection 36, quickly downloading the file may still be unachievable if TI connection 34 between ISP 26 and distribution network 24 is unable, or unwilling due to policy reasons, to dedicate sufficient bandwidth to the request. Requests for the CNN video clip made during peak traffic times at ISP 26 most certainly could not be accommodated by the ISP/network connection 34. Since adding more bandwidth may be a poor investment for ISP 26, ISP 26 may have no economic incentive to remedy the latency problem. The result is that some users will be inconvenienced by the lack of ability to receive large data files such as streaming video despite their own connection to ISP 26 being capable of accommodating streaming video.
The latency problem is further aggravated if connection 42 between content server 22 and distribution network 24 is equally taxed. The lack of sufficient bandwidth at content server/network connection 42 also slows data traffic over network 24, regardless of the bandwidths of network/ISP link 34 or ISP/subscriber link 36. Furthermore, the latency problem can be compounded by the minimum bandwidth of all the links.
One solution to this problem is to provide local cache storage at ISP 26 as shown in FIGURE 2. As subscribers request files from distribution network 24, ISP 26 caches the data files locally in storage medium 44 so that subsequent requests are handled in a more expeditious manner. This process is known as "on-demand caching. " Local on-demand caching methods improve the ability to deliver data over the Internet. When the first subscriber requests a data file, ISP 26 requests data file 45 from the content provider 22 and facilitates delivery of data file 45 to the requesting subscriber 28. ISP 26 also caches data file 45 in its own memory storage medium 44. When any subsequent subscriber 28 requests data file 45, ISP 26 serves the local version 45B of the data file from its own cache, rather than requesting the clip from the CNN server. If the subscriber computer has a high bandwidth connection with the ISP, the locally stored video clip can be served as continuous streaming video data for instantaneous rendering on the subscriber computer .
A drawback of the on-demand caching method is that the first requesting subscriber is faced with the same latency problems described above. All subsequent subscribers have the benefit of the cached version. However, if the initial delay is too long, there may not be any subscriber who is willing to assume the responsibility of ordering the large data file and then waiting for it to download.
Accordingly, there remains a need to develop improved techniques for facilitating distribution of large dynamic data files over public networks, such as the Internet.
This invention provides improved methods for delivering large amounts of data over a network, such as the Internet. According to one aspect, the method involves an intelligent, pre-caching and pre-loading of inert or static data content to the local service provider (e.g., ISP or LAN network server) . In this manner, the inert data is stored at the local service provider and ready to be downloaded to subscribers. This eliminates the latency problems of prior art systems because the users do not have to wait for the downloading of inert data over the Internet to the local service provider. Moreover, intelligently caching inert data content is more effective than traditional on-demand caching because the stored inert data content is immediately available to the subscriber and merely the dynamic content must be downloaded over the Internet from a content provider.
In one implementation, the network system includes a content provider connected to local service providers via a distribution network. The local service providers facilitate delivery of the content from the content provider to multiple subscribers. The local service providers are configured to request inert data content from the content provider. The content is downloaded from the content provider and cached at the local service providers for serving to the subscribers/users to allow the local service provider to more effectively use the bandwidth of their Internet connection.
The local service provider includes a processing unit and a local storage or cache medium. In an Internet or network context, requests may be submitted in the form of URLs (universal resource locators) for target resources located within a network such as the Internet . A software engine operating at the local service provider level determines which data content a subscriber is requesting. Data content is differentiated into static (inert) and dynamic data content in the method of the present invention. The static component of the data content is received from the content provider and stored at the local service provider level . The local service provider stores the content in a cache-type storage medium. Specifications/instructions may be embedded in a user interface at the user level such as a web page to reference which components are static and which components are dynamic. Alternatively, a reference table or specification at the local service provider level may redirect the static component request to the locally stored static component. This allows only the dynamic component to be retrieved via the distribution network from the content provider. This allows an increased and more
efficient use of the communication pathways between the content provider and the local service provider, thus providing an increase in an ISP's and the content provider's effective bandwidth.
A key aspect of the method and system of the present invention involves the more efficient use of a primary Internet connection owned by a content provider and an ISP or local service provider. This use of the communication pathways effectively increases the bandwidth between the content provider and the local service provider, thus reducing bandwidth costs associated with both the content provider and the local provider. In another embodiment of the present invention, a software application operable to be executed on a distributed network wherein the model is remotely located on a remote provider's site. The view and controller may be located either locally at the subscriber level or at the local service provider level. This allows only the dynamic portion of the application to be executed at the remote provider's location while the user interface is rendered at the local service provider, thus more effectively utilizing the communication pathway bandwidth between the local service provider and the content provider over the network.
A more complete understanding of the present invention and the advantages thereof may be acquired by referring to the following description, taken in conjunction with the accompanying drawings in which like reference numbers indicate like features and wherein:
FIGURE 12 illustrates a network system which is used to explain the present state of Internet technology. FIGURE 13 shows a network system constructed according to one implementation of this invention.
FIGURE 14 provides another illustration of a network system constructed according to another implementation of this invention.
FIGURE 15 is a block diagram of the functional components in a local service provider in the network system.
FIGURE 16 is a block diagram illustrating a method for caching inert data at the local service provider.
FIGURE 17 is a flow chart illustrating the method of the present invention. Preferred embodiments of the present invention are illustrated in the figures, like numerals being used to refer to like and corresponding parts of various ■>drawings .
FIGURE 7 shows a public network system 50. It includes multiple content servers, as represented by content server 52, which store and serve data 53 over a network 54. In the Internet context, content servers 52 might represent Web sites which serve or multicast data 53 in the form of hypermedia documents (e.g., Web page) which link text, images, sounds, and actions in a web of associations that permit a user to browse through related topics, regardless of the presented order of the topics. Data 53 comprises static data components 53A and dynamic components 53B.
Content server 52 might alternatively represent a remote application server wherein the model component of a software application is remotely located to content server 52.
Network 54 is a high-speed, high-bandwidth interactive distribution network, and can be representative of the Internet. Traffic over the network 54 is organized according to protocols which define how and when data is moved. One example protocol is the transmission control protocol/Internet protocol (TCP/IP) which forms the backbone of the Internet. The network 54 might be implemented using various physical mediums, including wirebased technologies (e.g., cable, telephone lines, etc.) and wireless technologies (e.g., satellite, cellular, infrared, etc.). The network is operated according to high-speed switching services, including connection-oriented network services (e.g., frame relay, asynchronous transfer mode (ATM), etc.) and connectionless services (e.g., switched multimegabit data service, etc.). These switching services support connection speeds of several Megabits per second (Mbps) , up to Gigabits per second (Gbps) . At these speeds, the network 54 is capable of supporting high data rates.
Many independent service providers (ISPs) , as represented by ISP 56, function as links to the high-speed network 54. ISP 56 acts as an intermediary between subscribers 58 and network 54. ISP 56 has a network port 62 which provides a high-speed, high-bandwidth connection 64 to the network 54. ISPs 56 segment and rent portions of the bandwidth to subscribers 58 so that the subscribers do not individually need to purchase and maintain their own network connections. ISPs 56 may also be referred to as point of presence (POP) servers, and the names "ISP" and "POP" are used interchangeably in this disclosure. Subscriber 58 is connected to ISP 56 by permanent or sessional dial-up connections 59. Conventional telephone or cable lines and compatible modems are used to form the connections 59. Examples of suitable technologies include HFC, ISDN, POTS, and ADSL. ISP 56 has network terminal switching equipment 70 to accommodate the connections to multiple subscribers 58. Subscriber 58 may use any network/Internet capable device but not such as
limited to a personal computer, PDA, network computer or other data appliance as known to those skilled the art.
ISP 56 also has a cache server 72. Cache server 72 is configured as a conventional database server having processing capabilities, including a CPU (not shown), and storage 78. As one example, cache server 72 is implemented as a SQL (Structure Query Language) database A static component of data 53, static component 53A, may be locally stored cache 78.
As one example implementation, cache server 72 is configured as a disk erase data storage system consisting of many large-capacity storage disks. The locations of static data components 53A are kept m a memory map. These static data components 53A are accessible through pointers to a particular memory location from the memory map. To serve data 53 to subscriber 58, ISP 56 will access the dynamic component 53B from content server 52 over network 54. Additionally, local service provider 56 will access the static component 53A from data storage medium 78. An instruction set may be maintained at either the local service provider level or the subscriber level instructing how to assemble the static component 53A with dynamic component 53B to form data 53.
FIGURE 15 shows a network system 90 which is implemented a local area network (LAN) configuration. This implementation is exemplary of how a company or multi-user organization might be connected to the Internet Network system 90 differs from the system of FIGURE 3 in that the local service provider which facilitates the on-ramp connection to the high-speed, high-bandwidth network 54 is itself a local server 92 on a LAN 94. LAN 94 can be constructed using conventional network topologies, such as Ethernet.
LAN network server 92 has a network port 96 which enables a high-speed, high- bandwidth connection 98 to network 54. Cache server 72 and CMS 74 are connected to LAN 94. Workstations or other computing units 100, 102 are connected to LAN 94 and are served by LAN network server 92 in regards to Internet access. In this configuration, the LAN users of workstations 100, 102 have access to the Internet through their enterprise LAN 94 and LAN network server 92
It is noted that both implementations of FIGURES 14 and 15 are shown and described as suitable examples for implementing various aspects of the invention. However, the network system might be implemented in a variety of arrangements. In addition, the illustration shows the subscriber units as being personal computers or work stations. However, the subscriber units can be implemented in other forms which are capable of rendering content received over the network. As examples, the subscriber computing units might include televisions, computers, game devices, handheld devices, and the like.
As explained in the Background section, conventional techniques for delivering data over the Internet is plagued with latency problems. An aspect of this invention is to provide an improved method for delivering data over a network system. The technique involves an intelligent, pre-caching and preloading of inert data content at the local service provider (e.g., ISP, POP, LAN network server) prior to when the content is likely to be requested by subscribers. In this manner, the bulk of the data has been previously downloaded to the ISP level and is ready to be accessed from the subscribers. The allows the most efficient use of the data connection between subscribers 58 and ISP 56. This eliminates may of the latency problems of prior art systems. Moreover, intelligently pre-caching content before it is requested is more effective than traditional on-demand caching because the content is available to the first subscriber who requests it.
FIGURE 16 shows a functional block diagram of a local service provider 110 according to one implementation which enables intelligent pre-caching and pre-loading. At its most fundamental level local service provider 110 provides an on-ramp connection to the Internet for its subscribers. Subscribers 58 send requests 112 to local service provider 114 for content available on Internet 116. Local service provider 114 acts as an intermediary facilitator which communicates the requests to the appropriate content providers 118 and then returns the requested data content 53 to the appropriate subscribers 58.
Local service provider 114 has a request handler 111 which manages requests 112 received from subscribers 58. In the Web context, the subscriber computers run Web browser applications which generate requests 112 in the form of universal resource locators (URLs) . A URL describes everything about a particular resource that a Web browser needs to know to request and render it. The URL describes the protocol a browser should use to retrieve the resource, the name of the computer it is on, and the path and file name of the resource. The following is an example of a URL: http://www.microsoft.com/upgrades
The "http://" portion of the URL describes the protocol. The letters "http" stand for HyperText Transfer Protocol, the set of rules that a browser will follow to request a document and the remote server will follow to supply the document. The "www.microsoft.com" portion of the URL is the name of the remote host computer which maintains the document. The last portion "/upgrades" is the path and file name of the document on the remote host computer .
When request handler 111 receives a request, local service provider 114 first looks to its own cache memory 124 to determine if a proxy copy of the target resource referenced by the URL is stored locally. Cache memory 124 serves as a quasi-temporary local storage for holding proxy copies of often used and requested target resources. Cache memory 124 can be implemented using different types of memory, including RAM storage disks (optical magnetic, etc.), and the like. If a proxy copy is stored in cache memory 124, the target resource is served locally from cache memory 124. If there is no proxy copy, local service provider 114 uses the URL request to locate the target resource from content provider 118 and to request delivery of the target resource (data content 53) over Internet 116. Local service provider 114 passes the data 53 on to the requesting subscriber 58 and may also cache the data 53 in cache 124 if the policy rules governing the cache are met.
Additionally, local service provider will examine the request from subscriber 58 to determine if the data content requested relates to inert data 53A stored within local cache memory 124. If the request relates to inert data 53A which is provided by the content provider in the form of both dynamic data 53B and static data 53A, the local service provider will request the dynamic content 53B to be delivered from content provider 118 over Internet 116 or other network connection to local service provider 114.
Local service provider 114 may either retrieve the static component 53A from local cache memory 124 and the dynamic component 53B from the content provider and assemble these at the local service provider level, or local service provider 114 may provide the static data 53A and dynamic data 53B separately to subscriber 58 with instructions, either previously provided or simultaneously provided, for assembling data 53 from static data 53A and dynamic data 53B components.
FIGURE 17 provides a flow chart illustrating the process wherein inert data is cached at the local service provider and the process of an end user obtaining access to the data. In step 150, a subscriber or user 58 makes a query to the local service provider. This query may constitute a request such as a URL or other such requests as known to those skilled in the art. At step 152, a request handler receives user 58 's request. In step 154, the request handler determines whether or not the request calls for inert data 53A maintained by the local service provider. If the request does not involve inert data 53A or data previously cached at the local service provider level, the local service provider will route a request to the content provider to download or retrieve the requested data content from the content provider through a network such as the Internet .
Alternatively, if the request does involve inert data cached at the local service provider level, or capable of being cached at the local service provider level, the local service provider will retrieve the inert data from its locally stored data. A request is then sent to the content provider for the dynamic content associated with this request. These steps are illustrated by steps 156-162, wherein the data is gathered by the local service provider in order to be provided to subscriber 58. At step 164, the requested data content is provided to subscriber 58.
The step of providing the data may be accomplished in different manners. For example, the local service provider may assemble or construct data content 53 requested from the inert data 53A and dynamic data 53B components of the retrieved data and provide the requested data content 53 to subscriber 58 in one operation. Alternatively, the local service provider may provide the inert content and the dynamic content component of the requested data to subscriber/user 58 in two separate operations. In this case, the local service provider will additionally provide a set of instructions allowing subscriber/user 58 to assemble the requested data from the provided inert content and dynamic content components. Similarly, the inert and dynamic components may be provided according to a protocol wherein subscriber/user 58 already has the instructions on how to assemble the requested data content from the supplied inert and dynamic data components .
In the web context, the data content might be in the form of a web page or other hypermedia document that has hyperlinks to various data items. This hypermedia document itself may be divided into dynamic and static or inert data components wherein the inert components of the hypermedia document itself are stored in the local cache memory at the local service provider level .
Instructions can be maintained at the local service provider level corresponding to inert data associated with hypermedia documents partially located within the cache memory at the local service provider level as opposed to files maintained at the content service provider level .
This pre-caching method obviates many latency problems associated with large data files provided over a network such as the Internet and is a further improvement to traditional on-demand caching techniques. However, it should be noted that the network system itself does not accommodate all data files on the Internet, but instead only selected data files. A local service provider may make the decision to provide selected documents and dynamic data content in this manner, so as to more effectively utilize the bandwidth that a local service provider has to the Internet. Additionally, a content provider may actively recruit local service providers to provide their inert
data content at the local service provider level in order to reduce bandwidth costs associated with the remote sites of the data content provider. Due to varying demographics, local service providers will generally differ in the inert data content that it most serves to its individual clientele. For example, a service provider in Seattle, Washington, might have many requests for content on entertainment for data content associated with local news and entertainment in Seattle. As a result, the sets of pre-cached inert data may differ significantly from one service provider to another, depending upon the requests and data accessed from the Internet by the local service provider. In an alternative embodiment, a local service provider may use an intelligent caching system to statistically monitor which sites and content providers its clientele access. Then, using this data, the local service provider may negotiate with the content service provider to reduce both of their bandwidth needs and to selectively cache inert data content associated with that provider at the local service provider level.
In an additional embodiment, application software to be executed over a network such as the Internet may have components cached at different levels, such as the relatively static components of the view and controller when using the model view controller paradigm for software programming, and a model remotely located at a remote service provider. This would allow the heart or software engine associated with a particular software application to be efficiently maintained remotely at a remote service provider, thus ensuring compatibility between users using this software application.
In yet another embodiment, the local service provider may additionally include an administration system which determines which documents or resources are cached at the local service provider level. For instance, caching rules might call for caching inert data that is routinely requested by many subscribers while foregoing the maintenance of inert resources that are rarely or infrequently requested. Additionally, this administration system can coordinate the maintenance of the storage by deciding which inert data is out of date and how this inert data is eliminated from the local service provider storage facility. These policies and administration functions are known to those skilled in the art.
In compliance with the patent statutes, the invention has been described in language more or less specific as to structure and method features. It is to be understood, however, that the invention is not limited to the specific features described, since the means herein disclosed comprise exemplary forms of putting the invention into effect. The invention is, therefore, claimed in any of its forms or modifications within the proper
scope of the appended claims appropriately interpreted in accordance with the doctrine of equivalents and other applicable judicial doctrines.
4. System and Method for Constructing and Executing Software Applications Utilizing the Model View Controller Paradigm with a Remote Model. The present invention relates generally to a method and system for constructing and executing software application programs, and more particularly, a system and method for constructing and executing software applications wherein the software applications utilize an architectural pattern that divides the application into three distinct components; model, view and controller components, wherein the model communicates with the view and controller via a network based communication pathway.
An important advance in the design and implementation of software applications has been the development of the model view controller (MVC) paradigm, as depicted in FIGURE 18. This paradigm is not a programming language or a code library. It is a method of organizing the code in a graphic user interface (GUI) intensive systems along three lines of responsibility. It is particularly important to the general concept of modular programming. The MVC architectural pattern divides an interactive application into three components. The model 10 contains core functionality and data. The view 12 displays information to a user 16, while controller 14 handles user 16 input. View 12 and controller 14 together comprise user interface 18. A change propagation mechanism ensures consistency between user interface 18 and model 10. Dashed arrows 20 represent implicit knowledge, and solid arrows 22 represent explicit knowledge. The change propagation mechanism is the only link between model 10 and user interface 18.
Many modern computer systems operate with a graphical user interface (GUI) or windows environment, as shown in FIGURE 19. In a typical window environment, the graphical display portrayed on the display screen is arranged to resemble the surface of an electronic desktop 26. Individual software application programs running on computer 30 are represented as one or more electronic sheets 28 displayed in regions of the screen called windows. In general, the window environment described is part of the computer operating system. The operating system typically includes a collection of utility programs that enable the computer system to perform basic operations such as storing and retrieving information from memory and performing file operations including the creation, naming and re-naming of files.
The last part of this computer system is the application program that interacts with the operating system to provide a much higher level of functionality. Application programs perform specific tasks and provide a direct interface with the user within windows . The individual application programs typically make use of local operating system functions by sending out a series of task commands to the operating system, which then performs the requested task.
In the modern environment, application programs are frequently updated. Changes in these application programs often result in file compatibility problems. Therefore, it would be desirable to have an application program wherein users can simultaneously and substantially update the application program over a network or Internet-based system.
Similarly, it would be desirable to have an application program where multiple users are capable of accessing the same model for compatibility purposes. This would enable "plugable" views and controllers or graphical user interfaces (GUIs) to access a single model, thus eliminating compatibility problems. This could ideally be achieved over a network where a model was remoted from the user interface, or view and controller portions, of the software program. Therefore, it would be desirable to implement a software application framework on a network such as the Internet using the model view controller design pattern.
The present invention provides a system and method for constructing and executing network-based software application programs that substantially eliminates or reduces disadvantages and problems associated with previously developed systems and methods used for constructing and executing software application programs.
More specifically, the present invention provides a system and method for programming a software application program to be executed within a networked environment . The method of the present invention involves dividing the software application program into distinct components. These components include first a view wherein the view manages a presentation of a state of the software application program to a user. A controller interprets input from the user and commands the view to change state. A model manages behavior of the software application program with respect to program data and user input. The model responds to requests from the view on the state of the software application program. The model is remotely located on a remote server while the view and controller are located on a local terminal. The view and controller access the model over a communication pathway.
The present invention provides an' important technical advantage in achieving greater compatibility between users. Remoting the model component of the software application and allowing multiple users to simultaneously access a single shared model component eliminates many compatibility problems. This is accomplished by transmitting events (data and inputs) from the view and controller components to the model in the form of a data stream. In some embodiments, the present invention may use an HTTP data stream to distribute software components over the Internet.
Additionally, remoting the model component of the software application increases the modularity of the program as a whole. This modularity allows a software application to be seamlessly updated for all end users while keeping the update action itself transparent to all end users.
The present invention provides another technical advantage by providing a more accurate accounting of the use of the software application program. A software application provider can more easily track the use of their program to ensure a more comprehensive and robust licensing program, since all users must access the model component from a central location. Similarly, end user clients can reduce licensing costs by eliminating additional and duplicative licenses . For a more complete understanding of the present invention and the advantages thereof, reference is now made to the following description taken in conjunction with the accompanying drawings in which like reference numerals indicate like features and wherein:
FIGURE 18 illustrates the prior art paradigm of the model view controller;
FIGURE 19 illustrates the prior art are windows type environment;
FIGURE 20 represents how areas within a view is arbitrarily updated by prior art methods ;
FIGURES 21 and 22 depict a graphical user interface having nested subviews;
FIGURE 23 shows a view of the present invention wherein a graphical user interface is divided into frames which are updated by streamed HTML constructs;
FIGURE 24 illustrates how the controllers of the present invention may be extended to allow for the containment of other controllers in a hierarchical fashion;
FIGURE 25 illustrates how the paradigm of the model view controller may be applied to a software application of the present invention, wherein that software application is executed over a network such as the Internet;
FIGURE 26 provides a block diagram illustrating the request/response architecture of a typical browser type system;
FIGURE 27 illustrates schematically the update process of the present invention utilizing a hidden frame responsible for change propagation mechanisms between a local graphical user interface and a remote model;
FIGURE 28 provides flow chart detailing the methodology of FIGURE 9; and
FIGURE 29 presents a state diagram illustrating the interaction between a user and a software application of the present invention having a local graphical user interface interacting with a remote model via events which have been characterized as an HTTP stream. Preferred embodiments of the present invention are illustrated in the
FIGURES, like numerals being used to refer to like and corresponding parts of the various drawings.
The system and method of the present invention provides an application platform following the model view controller architecture wherein the model is remotely located and a connection or communication pathway is established between the model and the user interface via a communication pathway over a network. This network may be an Intranet, Local Area Network, Wide Area Network, the Internet, or other such network as known to those skilled in the art. This is not a simple task, considering that the end user experience at the user interface must equal that of an application running on a desktop computer. This equates to fast response time via the communication pathways of the above networks, as well as a desktop "look and feel."
FIGURE 19 illustrates the paradigm of the model view controller (MVC) . The MVC is an architectural pattern that divides an interactive application into three distinct components. The model 10 manages the behavior of the application program in response to requests for information about application program states from views 12, and the response to instructions to change state from controllers 14. View 12 manages the graphical presentation of the information contained in model 10. Controller 14 interprets the user input and/or view to change as appropriate.
In the present invention, view 12 may be extended to allow for the containment of other subviews in a hierarchical fashion. This is critical for the creation of controls and their containment in any view.
A view or view port is simply a viewable region in a two-dimensional plane on a screen that can be treated as an independent identity. Such a view is depicted in FIGURE 20. Applications typically are able to read and write to a view arbitrarily and independently of other regions within the graphical user interface. In a conventional view port, one is able to render at any coordinate (x,y) . This is not possible in an Internet-based view port because information is streamed as depicted in FIGURE 20. Conventionally, data stream 32 is accepted and objects are rendered from top left to bottom right within the web page 34. This convention imposes a problem addressed by the present invention. In the views of the present invention one is not able to render to an arbitrary coordinate as one would in a conventional view port. Therefore, the present invention uses HTML constructs that allow for the independent treatment of distinct regions within page 34. These regions are treated as being orthogonal to other regions within page 34. This allows the creation on a page having independently assignable regions that can be treated as view ports .
Additionally, views are designed to be nested, as illustrated in FIGURES 21 and 4B . Most windows, in fact, involve at least two views, one nested within the other. The outermost view 36, known as the top view, is an instance of standard system view or one of its subclasses. The standard system view manages the familiar label tab of its window. Its associated controller, which is an instance of standard system controller, manages the familiar moving, framing, collapsing and closing operations available for top-level windows. Inside a top view are one or more subviews 38. A subview 38 may in turn have additional subviews 38, although this is not required. FIGURES 4A and 20 illustrate the hierarchical relationship between parent view 36 and nested subviews 38.
FIGURE 23 illustrates a view of the present invention wherein a web view 34 is able to accept a data stream 32. Data stream 32 is composed of an HTML construct which allows one to break the web view 32 into individual frames (subviews) 40 and 42. Thus, subviews 40 and 42 are capable of being rendered independently and are considered independent view ports.
Controller 14 is extended to allow for the containment of other controllers 14 in a hierarchical fashion, as illustrated in FIGURE 24. This creates an efficient form of the chain of responsibility pattern. Events 44 are distributed to event handling routines of all active controllers 14 in a hierarchical sequence. In the present invention, the controller is extended to allow for the attachment of a child controller 14 into a parent controller 14. The present invention extends the model view controller 14 by mapping the window architecture onto a network or Internet-based platform.
When a user interacts with an application, the user interacts with the skin or interface of the application. Typically, the back end of the application is contained within the local computer system.
In the present invention, rather than having the entire application in front of a user within a local computer system, the back end (or model) 10 of the application is executed on a remote server. View 12 is merely a medium for the skin of the application. Controller 14 of the present invention is extended in order to properly render the view 12 of the application. In one embodiment, depicted in FIGURE 7, application events are encoded using HTTP. However, the present inventory need not be limited to communication. This protocol as all protocols known to those skilled in the art are available. Including application programming interface (api) . This allows a remote model 50 to act upon these events as depicted in FIGURE 25. Within view 52, the subviews are implemented as individual viewports under the notion of frames, as known to those skilled in the art. The frames construct in HTML allows one to construct subviews or viewports analogous to the multiple windows used in prior art methods where the application is contained within a single computing system.
FIGURE 26 illustrates the request/response architecture employed in the execution of the present invention. Model component 50 of software application program 62 is remoted to remote server 60. A GUI 56 (view 52 and controller 54 components) of the present invention presents data to user 16, wherein the data is interpreted from a stream of HTML 64. As stated earlier, this stream is a one-dimensional construct. However, a standard window is a two-dimensional construct, wherein the views and subviews are defined and rendered using a two-dimensional system. By directing this stream to the appropriate view or subview, only the appropriate portion of the view need be refreshed. This differs from the stream of HTML that typical Internet browsers merely translate into a two-dimensional construct in a top left to bottom right format .
A model view controller typically uses a change propagation mechanism to alter the status of views in accordance with data supplied by user input or by the controller. Conventionally, this change propagation mechanism is simply a table with references to different views and subviews or view ports that make up the application with references of dependencies to the different views and subviews that comprise the application view. This is possible since these references or dependencies never change during the duration of the existence of the view port . Whenever the model experiences a change that requires a refresh of the observer view ports, the model simply iterates through the registry (table) and calls the update method on all the observer
view ports. This cannot be done in a web environment because the only reference to a view is obtained when a request from that view is made. In other words, the references are dynamic in nature. As a result, the reference to the view after a transaction is complete is no longer a valid reference. Due to this behavior, the present invention allows views to the same model to be refreshed even though only one valid reference to a view is available at any one time. This may be accomplished through the use of Java script and the Document Object Model (DOM) or other such models as known to those skilled in the art. This methodology is illustrated in FIGURES 27 and 28, wherein a user 16 performs an action on frame 70 that results in a submission 72 to remote model 74. In other words, frame 70 is a GUI containing a view and controller for a specific area of the software application. User 16 has modified some aspect within frame 70 or some aspect within frame 70 has been otherwise affected by data external to frame 70. Thus, the controller associated with frame 70 determines that an operation is required to be performed by remote model 74. This results in submission 72 to model 74. Model 74 resides on remote server 76. Remote server 76 receives request or submission 72, performs the required operation, and returns response 76 to update frame 70. More simply put, the target model 74 resides in server 76. This model 74 performs a requested operation and returns the newly computed information to frame 70 via response 76.
Next, frame 70 will update itself with the information contained within response 76. Frame 70 then queries hidden frame 78. Hidden frame 78 executes the change propagation mechanism function. As shown, a determination of frame dependencies is made by accessing registry 82. Registry 82 maintains a table or registry of frame dependencies. Hidden frame 78 will then update dependent frames 80 that have been identified as being dependent on the data contained within frame 70. Similarly, frames 80 may determine that their update requires a submission to model 74 on remote server 76 in response to the update to frame 70. This is illustrated by submission 84. Where, following the proper operations within model 74, frames 80 are updated via response 86. Again, upon the update of frames 80, an additional query is made to hidden frame 78 to check hidden frame 78 for dependencies among other frames. If none are found, the system will wait for the next event, otherwise the process continues .
The method of the present invention is illustrated in the flow chart provided in FIGURE 28. At step 100, user 16 performs an action on frame 70 requiring an operation by remote model 74.
In step 102, this action is submitted as submission 72 to model 74. In step 104, model 74 request acts upon submission 72 to produce response 76 which is supplied to frame 70.
At step 108, frame 70 queries hidden frame 78 to determine the dependency of frames from a registry table 82 maintained within hidden frame 78. If there are no dependencies to frame 70, the method of the present invention will return to step 100 and await another event. Otherwise, at step 110, if dependencies do exist, dependent frames 80 will be updated via the change propagation mechanism contained within hidden frame 78. This update to dependent frames 80 may result in further submissions 84 from dependent frames 80 to model 74.
At step 116, model 74, operating on the submissions 84 from dependent frames 80, will respond to dependent frames 80 with response 86. These updates trigger frames 80 to query hidden frame 78 to determine subsequently dependent frames. Steps 108 through 114 will be repeated until there are no dependencies remaining between frames, at which time the method of the present invention will await a subsequent event .
FIGURE 29 presents a state diagram illustrating the interaction between a user and the present invention. A user can determine that he is interacting with an application because the state of the application changes. What differentiates the present invention from the function of a web browser is that the present invention allows a richer concept of transaction, wherein the number of people simultaneously using the system is consistent.
Another embodiment of the present invention provides security for a user accessing a remote application. To prevent an individual from accessing the application and data associated with a user, different data events are allowed to decay. For example, if there is no interaction between the user and the application for 20 minutes, then the events will decay such that no one can take the individual user data associated with the remote application. Furthermore, a user would be required to re-login to the remote application to access the prior events. The events can be structured such that they decay in all the cache places along the communication pathway between the server containing the application and the user's view. This is a concept similar to that known to those skilled in cryptography. The present invention provides a system and method for programming a software application program to be executed within a networked environment. The method of the present invention involves dividing the software application program into distinct components. These components include first a view wherein the view manages a presentation of a state of the software
application program to a user. A controller interprets input from the user and commands the view to change state. A model manages behavior of the software application program with respect to program data and user input. The model responds to requests from the view on the state of the software application program. The model is remotely located on a remote server while the view and controller are located on a local terminal . The view and controller access the model over a communication pathway.
The present invention provides an important technical advantage by remoting the model component of the software application. This is accomplished by transmitting events from the view and controller components to the model in the form of an data stream. Remoting the model component of the software application increases the modularity of the program as a whole. This allows a program provider to seamlessly update the model portion of the program unknown to the end user . Another important technical advantage provided by the present invention is that it allows a modular program to be constructed such that views and controllers are "plugable" with the model. Therefore, one can exchange the look and feel by merely changing the graphical user interface of this portion of the present invention. This allows the architecture of the present invention to serve as a framework for developing modular software programs that can be executed over a global network such as the Internet .
The present invention provides another technical advantage by providing a more accurate accounting of the use of the software application program. A program provider can more easily track the use of their program to ensure a more comprehensive and robust licensing program, since all users must access the model component from a central location.
While the present invention has been described with reference to particular embodiments, it should be understood that the embodiments are illustrative and that the scope of the invention is not limited to these embodiments. Many variations, modifications, additions and improvements to the embodiments described above are possible. It is contemplated that these variations, modifications, additions and improvements fall within the scope of the invention as detailed within the following claims .