Patent Publication Number: US-6223224-B1

Title: Method and apparatus for multiple file download via single aggregate file serving

Description:
FIELD OF THE INVENTION 
     The present invention relates to data processing systems, and more particularly, to transferring multiple files in an Internet environment from a server machine to a client machine. 
     BACKGROUND OF THE INVENTION 
     Although the Internet has existed for almost twenty-five years, its use has accelerated over the past few years at a previously unanticipated rate. The Internet has become a new communication environment that can be compared to a virtual telephone system with its own, sophisticated, computerized worldwide directory. The Internet has become increasingly popular for business applications such as its use as a mechanism for distributing software and other information. Many millions of users of the Internet have learned firsthand just how frustrating navigating the Internet can be. In order to increase the productivity of users in an Internet environment, by reducing the time wasted waiting for downloading information, a need exists to substantially speed up delivery of information. 
     The software and other information sought to be downloaded over the Internet frequently exists in multiple files. A selected file may have other files which are either companion files, optional files, documentation, or other related files. In order to select the files which are appropriate to a given user&#39;s needs, the user has to initiate several separate download sessions. In each of these sessions, the user must specify which objects/files must be obtained and where the object is to be stored on the client machine. This results in a redundancy of work for the user which interrupts work flow and creates a multiplicity of files on the client&#39;s computer with no documentation relative to the contents of the individual files. 
     One example of these types of files are found in the application development environment where reusable software components may be combined to create new application programs. A front runner has emerged in the reusable software component arena developed by the Sun Microsystems Corporation known as a “bean”. A Java bean or bean is a reusable software component that can be visually manipulated by a builder&#39;s tool to create new application programs. Beans have been created as simple push buttons, text field list boxes, scrollbars, or dialogs. More complex beans have been created as calendars, spreadsheets or calculators. The idea is that the standard interfaces of the beans allow for interchangeable, reusable components that can be created and sold by vendors in a manner similar to parts in a car, which can be replaced by components made by many different competing manufacturers. These reusable software components have found a thriving distribution channel in the form of the Internet. Since the reusable software components frequently exist in multiple separate files, users must initiate several download sessions in order to store the files on a client machine. 
     One prior art solution attempted to alleviate the problems of downloading multiple files by increasing the speed of the hardware. This effort has been mainly concentrated on increasing the computer&#39;s modem speed. Since a 14,400 baud modem will download a file seven times faster then a 2400 baud modem, a file that takes one hour to download at 2400 baud would only take 8.6 minutes at 14,400 baud. Consequently, modem speeds have undergone seemingly endless increases from 2400 baud to 14.4K, 28.8K, 33.6K to today&#39;s highest-speed modems, which are capable of transmitting at or below a 56K baud rate. While the increases in modem speed eases the downloading of files in certain instances, what has resulted is a plethora of computers containing modems of differing transfer rates and capabilities. 
     Still other prior art techniques have sought to replace the analog lines over which information is typically transmitted with specialized transmission media such as ISDN (Integrated Services Digital Network) lines. A typical ISDN line has an uncompressed speed of 128K baud. However, ISDN lines are frequently more expensive than analog lines and are not available in every area. 
     Consequently, it would be desirable to provide a mechanism for downloading multiple related files from a server to a client, by dynamically combining the files on the server, and passing them in a single download event. 
     SUMMARY OF THE INVENTION 
     This invention relates to a method and apparatus for downloading a selected file from the Internet, where the selected file has either companion files, optional files, documentation or other similarly related files. In order to download the selected file along with the appropriate similarly related files, a user has to initiate several separate download sessions. In each of these sessions, the user must specify which objects/files must be obtained and where the files are to be stored on a client machine. This invention combines the selected file plus any related files dynamically on a server and passes the combined files in a consolidated binary datastream as a single download event to a user&#39;s client machine. The binary datastream contains a header which is later decoded via client-side executable. The client-side executable interprets the header of the download files and allows extraction of single file, any subset of the downloaded files or all of the files. Additional descriptors may be embedded into the datastream which allow the client-side executable to display other information relative to the collection of downloaded files. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a representation of a client/server environment where this invention may be practiced; 
     FIG. 2 is a display screen on a client machine showing the objects/files for downloading to the client machine; 
     FIG. 3 is a display screen on a client machine with a user&#39;s selections for downloading from a server to a client machine; 
     FIGS. 4-6 are flow diagrams for downloading multiple separate files using the invention; 
     FIG. 7 is an illustrative embodiment of a computer workstation where the present invention may be practiced; 
     FIG. 8 is an illustrative embodiment of a heterogeneous distributed data processing system in accordance with the present invention. 
    
    
     DETAILED DESCRIPTION OF THE EMBODIMENTS 
     This invention provides a method and apparatus for downloading a file to a client machine which has multiple associated files. The associated files may consist of companion files, optional files, documentation or other related files and are separately stored on a server machine. The invention eliminates the need for a user to initiate several separate download sessions in order to download the appropriate files from the server machine. This invention provides the capability for combining files dynamically on the server and passing them in a consolidated stream to the client machine. 
     Referring now to FIG. 1, there is shown a client/server system  10  capable of downloading multiple separate files on a server  18  to a client machine  12 . A user (not shown) at client machine  12  sends requests  14  via an HTML (Hyper Text Markup Language) page to the server machine  18 . The server  18  processes the request  14  and initiates an Input/Output procedure  20  to obtain the requested files on file storage device  24 . The server  18  receives the requested information  22  from file storage device  24  and assembles header information and binary file content for transmission to the requester. The server  18  streams data dynamically  16  to the client  12  without creating a physical file on the server machine  18 . The above processing is implemented in both server code and code implemented as a client-side executable (exe). The server side processing consists of the server code which is sensitive to the arguments passed from the client side. Specifically, the server code is sensitive to the following arguments: (1) One to many filenames which are to be combined, and (2) descriptor arguments. By sending the server side code these arguments, the code is able to open files which are resident on the server, read these files, and combine them along with a descriptive header and offset information into a binary data stream which is then passed on to the client machine. 
     Referring now to FIG. 2, there is shown a display screen  30  where a user selects the files resident on the server machine which will be downloaded to the client. In the preferred embodiment, the names of the files on the server are presented to the user along with check boxes  32 - 42  to allow selection by a user. A submit button  44  is also provided to allow the user to indicate completion of the file selection process. One skilled in the art will appreciate that similar methods may be employed for file selection such as changes in the color of the file name or highlighting that will fit within the realm of this invention. 
     Turning now to FIG. 3, there is shown a display screen  50  showing files selected by a user. The user has selected a subset of the available files which have be marked with an “x” to show their selection. The user has selected the BorderPanel Bean  32 , FileTextReader Bean  38 , and the FTP Bean  40  files for downloading to the client machine. Once selection is complete, the user presses the Submit button  44  to initiate the download process. 
     Referring now to FIGS. 4-6, there is shown flow diagrams for downloading files from a server to a client. The procedure starts at block  60  and proceeds to block  62  where a user initiates a file request from the client machine to a server machine. At block  64 , the server receives the file request and processes the request from the client machine. At block  66 , the file names for the files resident on the server, available for downloading to the client machine are displayed to the user at the client machine. The user selects the file names for downloading at block  68  and the procedure checks at block  70  to determine if the “SUBMIT” button as been selected. If NO, the procedure returns to block  68  to allow the user to select additional files for downloading. If the “SUBMIT” button has been selected at block  70 , processing proceeds to block  72  where the selected filenames are routed to the server. At block  74 , the server receives the selected files and opens the files. At block  76 , a Servlet (e.g., Server side logic) opens the selected files and assembles an aggregate virtual file. Processing then proceeds to FIG. 5, block  80 , where the procedure determines if headers or resident descriptors are to be attached to the aggregate virtual file. The client-side executable interprets the headers so that one, a few, or all of the embedded files may be extracted. In a similar manner, server resident descriptors may be appended to the aggregate virtual file to allow the client-side executable to display information relative to the collection of embedded files such as file size, creation date, purchase price, etc. Returning to block  80 , If YES, processing proceeds to block  88  where the headers or descriptors are appended. At block  82 , the procedure determines if the aggregate virtual file should be sent to the user who submitted the original request. If NO, a new client transmission address may be entered at block  89 . If the virtual file is to be sent to the original requester, at block  84  the server streams the binary data back to the client as a single file. One skilled in the art will appreciate that the aggregate file does not reside on the server but is created on-the-fly and is streamed to the client dynamically. Returning to block  86 , the client receives and stores the files sent by the server. Processing then proceeds to block  90 , FIG. 6, where the procedure determines if the user has invoked the client-side executable (exe). If NO, the procedure Stops at block  99 . If the client side executable has been invoked, the exe queries the contents of the aggregate virtual file as shown in block  92 . At block  94 , the procedure determines if a particular file should be extracted from the aggregate virtual file. If NO, the procedure ends at block  95 . If YES, the procedure displays the extracted file to the user at the client machine as shown in block  96 . At block  98 , the procedure determines if all the files have been displayed. If NO, processing returns to block  94  where additional files may be extracted from the aggregate virtual file. If all the files have been displayed at block  98 , the procedure stops at block  99 . 
     Referring now to FIG. 7, there is shown a pictorial representation of a workstation which may be used as a client or server machine, having a central processing unit  107 , such as a conventional microprocessor, and a number of other units interconnected via a system bus  109 . The workstation shown in FIG. 7, includes a Random Access Memory (RAM)  103 , Read Only Memory (ROM)  105 , an I/O adapter  101  for connecting peripheral devices such as floppy disk unit  117  to the bus, a user interface adapter  106  for connecting a keyboard  114 , a mouse  110 , a speaker  108 , a microphone  112 , and/or other user interface devices such as a touch screen device (not shown) to the bus, a communication adapter  100 , for connecting the workstation to a data processing network and a display adapter  104 , for connecting the bus to a display device  102 . The workstation, in the preferred embodiment, has resident thereon server or client software making up this invention which may be loaded from diskette  116 . 
     A representative network environment where this invention may be practiced is depicted in FIG. 8, which illustrates a pictorial representation of a distributed data processing system  120 . As illustrated, data processing system  120  contains a plurality of networks, including local area networks (LAN)  122  and  124 , each of which preferably includes a plurality of individual computers  126  and  128 , respectively as shown in FIG.  7 . One skilled in the art will appreciate that a plurality of workstations coupled to a host processor may be utilized for each such network. As is common in such data processing systems, each computer  126  and  128 , may be coupled to a storage device  130 , and a printer  132 . 
     Data processing system  120  further includes one or more mainframe computers, such as mainframe computer  134 , which may be preferably coupled to LAN  122  by means of a communication link  136 . Mainframe computer  134  is preferably coupled to a storage device  138 , which serves as remote storage for LAN  122 . LAN  122  is also coupled via communications link  140  through communications controller  142  and communications link  144  to gateway server  146 . Gateway server  146  is preferably a workstation which serves to link LAN  124  to LAN  122  via communications link  148 . As understood by one skilled in the art, data processing system  120  additionally includes illustrated gateways, routes, bridges, and various other network hardware utilized to interconnect the segments of data processing system  120 . 
     While the invention has been described with respect to a preferred embodiment thereof, it will be understood by those skilled in the art that various changes in detail may be made therein without departing from the spirit, scope, and teaching of the invention. The invention eliminates the need to create static aggregate files on the server because they are created dynamically on the server. The need to write HTML pages specific to each file download is eliminated by the single file download of the invention. Related files are displayed and grouped together thus allowing the user to select from a list. In this way, there is no need to utilize additional server DASD for specific combinations of files and the user&#39;s server experience is consolidated into one server event rather than multiple downloads. Accordingly, the herein disclosed invention is to be limited only as specified in the following claims.