WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Embedded web server    
United States Patent5973696   
Link to this pagehttp://www.wikipatents.com/5973696.html
Inventor(s)Agranat; Ian D. (Weston, MA), Giusti; Kenneth A. (Upton, MA), Lawrence; Scott D. (Concord, MA)
AbstractAn embedded graphical user interface employs a World-Wide-Web communications and display paradigm. The development environment includes an HTML compiler which recognizes and processes a number of unique extensions to HTML. The HTML compiler produces an output which is in the source code language of an application to which the graphical user interface applies. A corresponding run-time environment includes a server which serves the compiled HTML documents to a browser.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5973696
Embedded web server - US Patent 5973696 Drawing
Embedded web server
Inventor     Agranat; Ian D. (Weston, MA) , Giusti; Kenneth A. (Upton, MA) , Lawrence; Scott D. (Concord, MA)
Owner/Assignee     Agranat Systems, Inc. (Waltham, MA)
Patent assignment
All assignments
Publication Date     October 26, 1999
Application Number     08/907,770
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     August 8, 1997
US Classification     715/760 709/201 709/203 715/513 715/854
Int'l Classification    
Examiner     Bayerl; Raymond J.
Assistant Examiner     Thai; Cuong T.
Attorney/Law Firm     Wolf, Greenfield & Sacks, P.C.
Address
Parent Case     CROSS-REFERENCE TO RELATED APPLICATION Priority is claimed under 35 U.S.C. .sctn.119(e) to the inventors' Provisional U.S. patent application Ser. No. 60/023,373, entitled EXTENDED LANGUAGE COMPILER AND RUN TIME SERVER, filed Aug. 8, 1996, abandoned. The inventors' above-identified provisional U.S. patent application is incorporated herein by reference.
Priority Data    
USPTO Field of Search     345/357 345/339 707/513 707/514 707/515 707/501 707/901 395/500 395/339 395/200.31 395/200.33 709/201 709/203
Patent Tags     embedded web server
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5805442
Crater
700/9
Sep,1998

[0 after 0 votes]
5768593
Walters
717/141
Jun,1998

[0 after 0 votes]
5745908
Anderson
715/513
Apr,1998

[0 after 0 votes]
5625781
Cline
715/854
Apr,1997

[0 after 0 votes]
5623652
Vora
707/10
Apr,1997

[0 after 0 votes]
5613115
Gihl
717/123
Mar,1997

[0 after 0 votes]
5598536
Slaughter, III
709/219
Jan,1997

[0 after 0 votes]
5572643
Judson
709/218
Nov,1996

[0 after 0 votes]
5420977
Sztipanovits
715/853
May,1995

[0 after 0 votes]
5406473
Yoshikura
700/20
Apr,1995

[0 after 0 votes]
5398336
Tantry
707/103R
Mar,1995

[0 after 0 votes]
5321829
Zifferer
714/46
Jun,1994

[0 after 0 votes]
5307463
Hyatt
710/1
Apr,1994

[0 after 0 votes]
5297257
Struger

Mar,1994

[0 after 0 votes]
5225974
Mathews
700/11
Jul,1993

[0 after 0 votes]
5122948
Zapolin
340/3.53
Jun,1992

[0 after 0 votes]
5072412
Henderson, Jr.

Dec,1991

[0 after 0 votes]
5012402
Akiyama
700/87
Apr,1991

[0 after 0 votes]
4953074
Kametani
700/3
Aug,1990

[0 after 0 votes]
4937777
Flood
710/107
Jun,1990

[0 after 0 votes]
4319338
Grudowski
710/109
Mar,1982

[0 after 0 votes]
5157595
Lovrenich
700/7
Dec,1969

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. A method for providing a graphical user interface having dynamic elements, comprising the steps of:

defining elements of the graphical user interface in at least one text document written in a mark-up language;

including in the document a string identified by prototype tags;

serving the text document to a prototyping client which interprets the mark-up language but does not recognize and does not display the prototype tags, but does display the string; and

compiling the text document into a content source, omitting the prototype tags and the string identified thereby.

2. The method of claim 1, further comprising the step of:

including at a location in the document a code tag containing a segment of application source code, wherein the prototyping client does not recognize and does not display the code tag; and

the step of further comprising including the segment of application source code in the content source.

3. The method of claim 2, further comprising the steps of:

decompiling the content source into a replica of the text document;

serving the replica to a user client; and

when the location is encountered in the replica, serving to the user client a character stream derived from a result generated by executing the segment of application source code.

4. The method of claim 3, further comprising the steps of:

including in the document at least one more code tag containing a segment of application source code; and

including in the document at least one more string identified by code tags.

5. A method for providing a graphical user interface having dynamic elements, comprising the steps of:

defining elements of the graphical user interface in at least one text document written in a mark-up language;

including at a location in the document a code tag containing a segment of application source code;

including in the document a string identified by prototype tags;

compiling the text document into a content source;

decompiling the content source into a replica of the text document;

serving the replica of the text document to a client which interprets the mark-up language; and

when the location is encountered in the replica, serving to the client a character stream generated by executing the segment of application source code.

6. The method of claim 5, further comprising the steps of:

including in the document at least one more code tag containing a segment of application source code; and

including in the document at least one more string identified by code tags.

7. A software product recorded on a medium, the software product comprising a mark-up language compiler which can compile a mark-up language document into a data structure in a native application programming language, the compiler recognizing one or more code tags which designate included text as a segment of application source code to be saved in a file for compilation by a compiler of the native application programming language.

8. A method for providing a graphical user interface having displayed forms for entry of data, wherein the text document is viewed using a prototype client during development and is viewed using a user client during use, comprising the steps of:

defining elements of the graphical user interface in at least one text document written in a mark-up language;

naming in the document a data item requested of a user and used by an application written in a native application programming language and executed on a server;

compiling the text document into a content source including a data structure definition in the native application programming language for the named data item;

naming the data item within a tag understood in the mark-up language for viewing by both the prototype client and the user client; and

including in the content source a definition of a function to provide a default value for the data item when the content source is served and a definition of a function to perform an application specific operation at the server when the data item is returned by the user client.

9. In a computer-based apparatus for developing a graphical user interface for an application, the apparatus including an editor which can manipulate a document written in a mark-up language and a viewer which can display a document written in the mark-up language, the apparatus further comprising:

a mark-up language compiler which recognizes a code tag containing a source code fragment in a native application source code language, the code tag not otherwise part of the mark-up language, the compiler producing as an output a representation in the native application source code language of the document, including a copy of the source code fragment.

10. The apparatus of claim 9, wherein the mark-up language compiler further recognizes begin and end prototype tags not otherwise part of the mark-up language, the output representation omitting the begin and end prototype tags and all content appearing therebetween in the document.
 Description Submit all comments and votes
 


COPYRIGHT NOTICE

The appendices attached to the disclosure of this patent contain material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.

APPENDIX

This application includes a microfiche appendix containing a source code listing in the C programming language of header files defining data structures representing an archive of content as used by the EmWeb.TM. product. This appendix shows an example of a particular embodiment of the invention incorporating features thereof which are described in detail below.

FIELD OF THE INVENTION

The present invention relates generally to graphical user interfaces (GUIs), i.e. user interfaces in which information can be presented in both textual form and graphical form. More particularly, the invention relates to GUIs used to control, manage, configure, monitor and diagnose software and hardware applications, devices and equipment using a World-Wide-Web client/server communications model. Yet more particularly, the invention relates to methods and apparatus for developing and using such GUIs based on a World-Wide-Web client/server communications model.

RELATED ART

Many modern communications, entertainment and other electronic devices require or could benefit from improved local or remote control, management, configuration, monitoring and diagnosing. It is common for such devices to be controlled by a software application program specifically written for each device. The design of such a device includes any hardware and operating environment software needed to support the application, which is then referred to as an embedded application, because it is embedded within the device. Embedded application programs are generally written in a high-level programming language such as C, C++, etc., referred to herein as a native application programming language. Other languages suitable to particular uses may also be employed. The application program communicates with users through a user interface, generally written in the same high-level language as the application.

The representation of an application in a native application programming language is referred to as the application program source code. A corresponding representation which can be executed on a processor is referred to as an executable image.

Before an application written in a high-level language can be executed it must be compiled and linked to transform the application source code into an executable image. A compiler receives as an input a file containing the application source code and produces as an output a file in a format referred to as object code. Finally, one or more object code files are linked to form the executable image. Linking resolves references an object module may make outside of that object module, such as addresses, symbols or functions defined elsewhere.

Source code may also define arrangements by which data can be stored in memory and conveniently referred to symbolically. Such defined arrangements are referred to as data structures because they represent the physical arrangement of data within memory, i.e., the structure into which the data is organized.

Most commonly, remote control, management, configuration, monitoring and diagnosing applications employ unique proprietary user interfaces integrated with the application software and embedded into the device. Frequently these user interfaces present and receive information in text form only. Moreover, they are not portable, generally being designed to operate on a specific platform, i.e., combination of hardware and software. The devices for which control, management, configuration and diagnosing are desired have only limited run-time resources available, such as memory and long-term storage space. Proprietary interfaces are frequently designed with such limitations to data presentation, data acquisition and portability because of the development costs incurred in providing such features and in order to keep the size and run-time resource requirements of the user interface to a minimum. Since each user interface tends to be unique to the particular remote control, management, configuration, monitoring or diagnosing function desired, as well as unique to the operating system, application and hardware platform upon which these operations are performed, significant time and/or other resources may be expended in development. Graphics handling and portability have therefore been considered luxuries too expensive for most applications.

However, as the range of products available requiring control, management, configuration, monitoring or diagnosing increase, such former luxuries as graphical presentation and portability of the interface from platform to platform have migrated from the category of luxuries to that of necessities. It is well known that information presented graphically is more quickly and easily assimilated than the same information presented as text. It is also well known that a consistent user interface presented by a variety of platforms is more likely to be understood and properly used than unique proprietary user interfaces presented by each individual platform. Therefore, portable GUIs with low run-time resource requirements are highly desirable.

With the growing popularity and expansion of the Internet, one extremely popular public network for communications between computer systems, and development of the World-Wide-Web communication and presentation model, a new paradigm for communication of information has emerged.

The World-Wide-Web and similar private architectures such as internal corporate LANs, provide a "web" of interconnected document objects. On the World-Wide-Web, these document objects are located on various sites on the global Internet. The World-Wide-Web is also described in "The World-Wide Web," by T. Berners-Lee, R. Cailliau, A. Luotonen, H. F. Nielsen, and A. Secret, Communications of the ACM, 37 (8), pp. 76-82, August 1994, and in "World Wide Web: The Information Universe," by Berners-Lee, T., et al., in Electronic Networking: Research, Applications and Policy, Vol. 1, No. 2, Meckler, Westport, Conn., Spring 1992. On the Internet, the World-Wide-Web is a collection of documents (i.e., content), client software (i.e., browsers) and server software (i.e., servers) which cooperate to present and receive information from users. The World-Wide-Web is also used to connect users through the content to a variety of databases and services from which information may be obtained. However, except as explained below, the World-Wide-Web is based principally on static information contained in the content documents available to the browsers through the servers. Such a limitation would make the World-Wide-Web paradigm useless as a GUI which must present dynamic information generated by a device or application.

The World-Wide-Web communications paradigm is based on a conventional client-server model. Content is held in documents accessible to servers. Clients can request, through an interconnect system, documents which are then served to the clients through the interconnect system. The client software is responsible for interpreting the contents of the document served, if necessary.

Among the types of document objects in a "web" are documents and scripts. Documents in the World-Wide-Web may contain text, images, video, sound or other information sought to be presented, in undetermined formats known to browsers or extensions used with browsers. The presentation obtained or other actions performed when a browser requests a document from a server is usually determined by text contained in a document which is written in Hypertext Markup Language (HTML). HTML is described in HyperText Markup Language Specification--2.0, by T. Bemers-Lee and D. Connolly, RFC 1866, proposed standard, November 1995, and in "World Wide Web & HTML," by Douglas C. McArthur, in Dr. Dobbs Journal, December 1994, pp. 18-20, 22, 24, 26 and 86. HTML documents stored as such are generally static, that is, the contents do not change over time except when the document is manually modified. Scripts are programs that can generate HTML documents when executed.

HTML is one of a family of computer languages referred to as mark-up languages. Mark-up languages are computer languages which describe how to display, print, etc. a text document in a device-independent way. The description takes the form of textual tags indicating a format to be applied or other action to be taken relative to document text. The tags are usually unique character strings having defined meanings in the mark-up language. Tags are described in greater detail, below.

HTML is used in the World-Wide-Web because it is designed for writing hypertext documents. The formal definition is that HTML documents are Standard Generalized Markup Language (SGML) documents that conform to a particular Document Type Definition (DTD). An HTML document includes a hierarchical set of markup elements, where most elements have a start tag, followed by content, followed by an end tag. The content is a combination of text and nested markup elements. Tags are enclosed in angle brackets (`<` and `>`) and indicate how the document is structured and how to display the document, as well as destinations and labels for hypertext links. There are tags for markup elements such as titles, headers, text attributes such as bold and italic, lists, paragraph boundaries, links to other documents or other parts of the same document, in-line graphic images, and many other features.

For example, here are several lines of HTML:

______________________________________ Some words are <B>bold</B>, others are <I>italic</I>. Here we start a new paragraph.<P>Here's a link to the <A HREF="http://www.agranat.com">Agranat Systems, Inc.</A> home page. ______________________________________

This sample document is a hypertext document because it contains a "link" to another document, as provided by the "HREF=." The format of this link will be described below. A hypertext document may also have a link to other parts of the same document. Linked documents may generally be located anywhere on the Internet. When a user is viewing the document using a client program called a Web browser (described below), the links are displayed as highlighted words or phrases. For example, using a Web browser, the sample document above would be displayed on the user's screen as follows:

Some words are bold, others are italic. Here we start a new paragraph.

Here's a link to Agranat Systems. Inc. home page.

In the Web browser, the link may be selected, for example by clicking on the highlighted area with a mouse. Selecting a link will cause the associated document to be displayed. Thus, clicking on the highlighted text "Agranat Systems, Inc." would display that home page.

Although a browser can be used to directly request images, video, sound, etc. from a server, more usually an HTML document which controls the presentation of information served to the browser by the server is requested. However, except as noted below, the contents of an HTML file are static, i.e., the browser can only present a passive snapshot of the contents at the time the document is served. In order to present dynamic information, i.e., generated by an application or device, or obtain from the user data which has been inserted into an HTML-generated form, conventional World-Wide-Web servers use a "raw" interface, such as the common gateway interface (CGI), explained below. HTML provides no mechanism for presenting dynamic information generated by an application or device, except through a raw interface, such as the CGI. Regarding obtaining data from the user for use by the application or device, although standard HTML provides a set of tags which implement a convenient mechanism for serving interactive forms to the browser, complete with text fields, check boxes and pull-down menus, the CGI must be used to process submitted forms. Form processing is important to remote control, management, configuration, monitoring and diagnosing applications because forms processing is a convenient way to configure an application according to user input using the World-Wide-Web communications model. But, form processing using a CGI is extremely complex, as will be seen below, requiring an application designer to learn and implement an unfamiliar interface. A CGI is therefore not a suitable interface for rapid development and prototyping of new GUI capabilities. Moreover, a developer must then master a native application source code language (e.g., C, C++, etc.), HTML and the CGI, in order to develop a complete application along with its user interface.

Models of the World-Wide-Web communications paradigm for static content and dynamic content are shown in FIGS. 14 and 15, respectively. As shown in FIG. 14, a browser 1401 makes a connection 1402 with a server 1403, which serves static content 1405 from a storage device 1407 to the browser 1401. In the case of dynamic content, shown in FIG. 15, the server 1403 passes control of the connection 1402 with the browser 1401 to an application 1501, through the CGI 1503. The application 1501 must maintain the connection 1402 with the browser 1401 and must pass control back to the server 1403 when service of the request which included dynamic content is complete. Furthermore, during service of a request which includes dynamic content, the application 1501 is responsible for functions normally performed by the server 1403, including maintaining the connection 1402 with the browser 1401, generating headers in the server/browser transport protocol, generating all of the static and dynamic content elements, and parsing any form data returned by the user. Since use of the CGI 1503 or other raw interface forces the application designer to do all of this work, applications 1501 to which forms are submitted are necessarily complex.

In order to provide dynamic content to a browser, the World-Wide-Web has also evolved to include Java and other client side scripting languages, as well as some server side scripting languages. However, these