CROSS REFERENCE TO RELATED APPLICATIONS
This application is a continuation of co-pending U.S. patent application Ser. No. 12/397,351 entitled “Content Rendering on a Computer,” filed Mar. 4, 2009, which is expressly incorporated by reference herein.
- Top of Page
Productivity application programs, such as word processing applications, spreadsheet applications, and presentation applications, enable users to create different types of documents. These documents may include data that is native to a particular document type and even to a particular application program. In order to view this native data, a user may view the document through the productivity application program that created the document. For example, a user may rely on a particular word processing application to view a word processing document that was created by the word processing application.
A problem can arise when documents are shared across the World Wide Web (hereinafter referred to as “web”) through web browsers. In particular, typical web browsers may not be capable of reading a given document in its native format. In order to address this problem, a web server can be implemented to execute code that is capable of rendering a document from its native format into a web-compatible format that can be viewed through the web browser.
Conventional implementations of such web servers render a document in its entirety prior to providing the rendered version to the web browser. This is sometimes referred to as document pre-rendering. During pre-rendering, a user who requests to view a given document may be forced to wait a significant amount of time before the document has been completely rendered. This delay can cause substantial frustration and inconvenience for the user.
It is with respect to these considerations and others that the disclosure made herein is presented.
- Top of Page
Technologies are described herein for rendering content, such as documents. An application server is provided for rendering documents and other content from a native document format into a web-compatible format capable of being viewed through a web browser or other suitable application. The application server includes a rendering module, which is operative to incrementally render documents. Through incremental rendering, the application server can provide portions of rendered documents to the web browser while the native documents are still being rendered. Other example implementations of the technologies described herein include converting a document from one format into another format (e.g., transforming a document from a binary file format into an Office Open XML format, a Portable Document Format (“PDF”), and the like).
A download manager is also provided in order to increase the throughput of the rendering module. While the rendering module is rendering one document, the download manager may begin retrieving other documents to be rendered at a later time. These other documents may be downloaded from a storage server and stored in a rendering queue on the application server. Once the rendering module becomes available, the rendering module can immediately begin rendering these other documents directly from the rendering queue without any downtime while waiting for documents to be retrieved.
One or more caches are also provided in order to reduce the amount of work utilized to retrieve documents and other content. Examples of caches include a document cache, an authorization cache, and a location cache. The document cache may be operative to store rendered documents in the front end, thereby eliminating the need to retrieve the rendered documents from other storage units in the back end. The authorization cache may be operative to store authorization and authentication data, thereby eliminating the need to re-authorize or re-authenticate a user who later accesses the same document. The location cache may be operative to store the location of a rendered document. Through the use of the location cache, the rendered document can be efficiently retrieved from the relevant storage unit without the need to query multiple storage units.
According to one embodiment, a method is provided herein for rendering content for viewing through a web browser operating on a computer. Portions of the content are transformed into portions of rendered content. While the portions of the content are being transformed into portions of the rendered content, at least one of the portions of the rendered content can be provided to an application program.
It should be appreciated that the above-described subject matter may also be implemented as a computer-controlled apparatus, a computer process, a computing system, or as an article of manufacture such as a computer-readable medium. These and various other features will be apparent from a reading of the following Detailed Description and a review of the associated drawings.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended that this Summary be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all of the disadvantages noted in any part of this disclosure.
BRIEF DESCRIPTION OF THE DRAWINGS
- Top of Page
FIG. 1 is a block diagram showing an illustrative system architecture operative to render documents for viewing through a web browser, in accordance with embodiments;
FIG. 2 is a block diagram showing an illustrative implementation of an application manager from the system architecture of FIG. 1, in accordance with embodiments;
FIG. 3 is a block diagram showing an illustrative implementation of a front end from the system architecture of FIG. 1, in accordance with embodiments;
FIG. 4A is a flow diagram showing an illustrative process for rendering content for viewing through a web browser, in accordance with embodiments;
FIG. 4B is a flow diagram showing an illustrative process for fetching a portion of the rendered content, in accordance with embodiments; and
FIG. 5 is a computer architecture diagram showing an illustrative computer hardware architecture for a computing system capable of implementing the embodiments presented herein.
- Top of Page
The following detailed description is directed to technologies for rendering content, such as documents. Through the utilization of the technologies and concepts presented herein, an application server is provided that is operative to incrementally render a document or other content from its native format into another format, such as a web-compatible format. In contrast to pre-rendering, as content is being incrementally rendered, each discrete portion of the document or other content that has been rendered can be made available to the user. One or more caches may also be provided in order to reduce the amount of work utilized to retrieve rendered content.
Embodiments described herein may refer to pages and slides as discrete portions of documents and rendered documents. However, it should be appreciated that pages and slides are merely examples of discrete portions and are not intended to be limiting. Other kinds of discrete portions, as contemplated by those skilled in the art, may be similarly implemented.
Although not so limited, embodiments described herein primarily refer to documents and document rendering. However, it should be appreciated that the embodiments described herein may be similarly applied to any suitable content which can be rendered from a native format into another format. Such content may include any multimedia, such as text, images, audio, video, and combinations thereof. Further, embodiments described herein primarily refer to the rendered format as a web-compatible format capable of being viewed through a web browser. However, it should be appreciated that the rendered format may be other suitable formats as contemplated by those skilled in the art.
While the subject matter described herein is presented in the general context of program modules that execute in conjunction with the execution of an operating system and application programs on a computer system, those skilled in the art will recognize that other implementations may be performed in combination with other types of program modules. Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the subject matter described herein may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like.
In the following detailed description, references are made to the accompanying drawings that form a part hereof, and which are showing by way of illustration specific embodiments or examples. Referring now to the drawings, in which like numerals represent like elements through the several figures, concepts and technologies for providing on-demand content viewing will be described. In particular, FIG. 1 is a block diagram showing a system architecture 100 operative to render documents and to retrieve rendered documents according to embodiments. The architecture 100 includes a front end 102 that is operative to communicate with a computer 104. The front end 102 may receive and process requests from a web browser 106 over a network 108, such as the Internet. For example, the front end 102 may receive a Hypertext Transfer Protocol (“HTTP”) message with a request for a specific document, such as document 110A, stored in a document store 112. It should be appreciated that the components of the architecture 100 may reside on the same server, according to further embodiments. Splitting the architecture 100 into the front ends and application servers is merely an implementation design choice and is not intended to be limiting.
In response to receiving the HTTP request, the web front end 102 may attempt to retrieve, from an output store 114, a web-compatible rendered document 110B corresponding to the requested document 110A. For example, the rendered document 110B may be stored in the output store 114 if the document 110A was recently rendered. If the output store 114 contains the rendered document 110B corresponding to the document 110A, then the output store 114 may return the rendered document 110B to the front end 102.
If the output store 114 does not contain the rendered document 110B, then the application server 116, and more specifically the rendering module 118, may retrieve the document 110A from the document store 112. According to embodiments, a rendering module 118 in the application server 116 is operative to render (i.e., convert, transform) the document 110A into the rendered document 110B. The rendering module 118 may generate the rendered document 110B in any format capable of being displayed by a suitable web browser. Example formats may include an image format (e.g., Portable Network Graphics (“PNG”), Joint Photographic Experts Group (“JPEG”), etc.), MICROSOFT SILVERLIGHT, ADOBE FLASH, and the like. The rendering module 118 may also generate the rendered document 110B into a web-ready rendition that may include Extensible Markup Language (“XML”), scripts, Hypertext Markup Language (“HTML”), images, and/or the like, such that individual data types in the web-ready rendition can be understood collectively by the web browser. Each of these data types may be made available to the user upon being generated by the incremental rendering process described herein. The rendering module 118 may also be operative to concurrently render multiple documents. Upon generating the rendered document 110B, the application server 116 may store the rendered document 110B in the output store 114 and return the rendered document 110B to the front end 102.
Upon receiving the rendered document 110B, the front end 102 may respond to the HTTP request by providing the rendered document 110B to the web browser 106 via the HTTP protocol. The web browser 106 can then display the rendered document 110B, which is a full-fidelity representation of the corresponding document 110A. The full-fidelity representation contains the same formatting (e.g., layout, resolution, content, etc.) found in the original representation. Thus, a user can expect the same experience viewing a given document whether the document is viewed through a productivity application program or through a web browser, such as the web browser 106. The full-fidelity representation can be contrasted against a lower-fidelity representation in which, for example, the layout may be changed or the resolution and content may be reduced. In other embodiments, the rendered document 110B may be utilized for non-viewing scenarios, such as converting binary files to another document type for editing. For example, a MICROSOFT OFFICE binary file may be rendered into an OPEN OFFICE EXTENSIBLE MARKUP LANGUAGE (“OOXML”) file.