U.S. patent number RE39,486 [Application Number 10/408,789] was granted by the patent office on 2007-02-06 for extensible, replaceable network component system.
This patent grant is currently assigned to Apple Computer, Inc.. Invention is credited to Timo Bruck, Michael A. Cleron, Stephen Fisher.
United States Patent |
RE39,486 |
Cleron , et al. |
February 6, 2007 |
**Please see images for:
( Certificate of Correction ) ( Reexamination Certificate
) ** |
Extensible, replaceable network component system
Abstract
An extensible and replaceable network-oriented component system
provides a platform for developing networking navigation components
that operate on a variety of hardware and software computer
systems. These navigation components include key integrating
components along with components configured to deliver conventional
services directed to computer networks, such as Gopher-specific and
Web-specific components. Communication among these components is
achieved through novel application programming interfaces (APIs) to
facilitate integration with an underlying software component
architecture. Such a high-modular cooperating layered-arrangement
between the network component system and the component architecture
allows any existing component to be replaced, and allows new
components to be added, without affecting operation of the network
component system.
Inventors: |
Cleron; Michael A. (Menlo Park,
CA), Fisher; Stephen (Menlo Park, CA), Bruck; Timo
(Mountain View, CA) |
Assignee: |
Apple Computer, Inc.
(Cupertino, CA)
|
Family
ID: |
23728138 |
Appl.
No.: |
10/408,789 |
Filed: |
April 3, 2003 |
Related U.S. Patent Documents
|
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
Issue Date |
|
Reissue of: |
08435377 |
May 5, 1995 |
06212575 |
Apr 3, 2001 |
|
|
Current U.S.
Class: |
719/328; 709/201;
709/202; 709/203; 719/329 |
Current CPC
Class: |
H04L
29/06 (20130101) |
Current International
Class: |
G06F
9/00 (20060101); G06F 9/46 (20060101) |
Field of
Search: |
;719/328-329
;709/200-203 |
References Cited
[Referenced By]
U.S. Patent Documents
Foreign Patent Documents
|
|
|
|
|
|
|
0 631 456 |
|
Dec 1994 |
|
EP |
|
2 242 293 |
|
Jan 1990 |
|
GB |
|
Other References
Reinhardt, Andy, "The Network with Smarts" BYTE, Oct. 1994, pp.
51-64. cited by examiner .
Lippman, Stanley B., "C++ Primer" 2nd edition, Addison-Wesley,
1991, pp. 394-397. cited by examiner .
Potel et al; The Architecture of the Taligent System; Dr. Dobbs
Journal on CD-ROM, SP 94. cited by examiner .
Rush, Jeff; OpenDoc; Dr. Dobb's Journal on CD-ROM, SP 94. cited by
examiner .
Piersol, Kurt; A Close-Up of OpenDoc; AIXpert, Jun. 1994. cited by
examiner .
Schmidt et al; "An object-oriented framework for developing network
server daemons", C+++ World Conference, pp. 1-15, Oct. 1993. cited
by examiner .
"Leveraging object-oriented frameworks", Taligent white paper,
1993. cited by examiner .
Andert, Glerk; "Object-Frameworks in the Taligent OS", IEEE
electronic Library, pp. 112-121, 1994. cited by examiner .
Helm et al, "Integrating information retrieval and domain specific
approaches for browsing and retrieval in object-oriented class
libraries", ACM Digital Library, 1991. cited by examiner .
Monnard et al; An object-oriented scripting environment for the
WEBSs electronic book system' ACM Digital Library, 1992. cited by
examiner .
Norr, Henry. "Cyberdog could be a breakthrough if it's Kept on a
leash", MacWeek, Nov. 14, 1994, v8, n45, p. 50. cited by examiner
.
Hess, Robert, "Cyberdog to fetch Internet Resources for Open Doc
apps." MacWeek, Nov. 7, 1994, v8, n44, p. 44. cited by examiner
.
Harkey et al, "Object component suites", Datamation, Feb. 15, 1995,
v41, n3, p. 44. cited by examiner .
Prosise, Jeff, "Much ado about object", PC Magazine, Feb. 7, 1995,
v14, n3, p. 257. cited by examiner .
Bonner, Paul, "Component software: putting the pieces together",
Computer Shopper, Sep. 1994, v14, n9, p. 532. cited by examiner
.
Gruman, Galen, "OpenDoc & OLE 2.0", MacWorld, Nov. '94, v11,
n11, p. 96. cited by examiner .
Spiegel, Leo "OLE promises barrier-free computing", InfoWorld, Mar.
6, '95, v17, n10, p. 53. cited by examiner .
Develop, The Apple Technical Journal, "Building an OpenDoc Part
Handler", Issue 19, Sep. 1994, pp. 6-16. cited by examiner .
S.H. Goldberg and J.A. Mounton, Jr. A Base for Portable
Communications Software, IBM Systems Journal, vol. 30 (1991) No. 3,
Armonk, NY, pp. 259-279. cited by examiner .
E.C. Arnold and D.W. Brown, Object Oriented Software Technologies
Applied to Switching System Architecture and Software Development
Processes, AT&T Bell Laboratories, Naperville, IL, vol. II, pp.
97-106. cited by examiner.
|
Primary Examiner: Thomson; William
Attorney, Agent or Firm: Fenwick & West LLP
Claims
What is claimed is:
1. An extensible and replaceable layered component computing
arrangement residing on a computer coupled to a computer network,
the layered arrangement comprising: a software component
architecture layer interfacing with an operating system to control
the operations of the computer, the software component architecture
layer defining a plurality of computing components; and a network
component layer for developing network navigation components that
provide services directed to the computer network, the network
component layer includes application programming interfaces; and a
first class included in the application programming interfaces to
construct a first network navigation object that represents
different network resources available on the computer network,
wherein the network component layer coupled to the software
component architecture layer in integrating relation to facilitate
communication among the computing and network navigation
components.
2. The computing arrangement of claim 1 wherein the network
navigation components are objects.
3. The computing arrangement of claim 1 wherein the application
programming interfaces further comprise a second class for
constructing a second network navigation object representing a data
stream for transferring information among objects of the
arrangement.
4. The computing arrangement of claim 3 wherein the first network
navigation object is an Item object and the second network
navigation object is a Stream object, and wherein the Item object
spawns the Stream object to obtain information from the network
resource that the Item object represents.
5. The computing arrangement of claim 3 wherein the application
programming interfaces further comprise a third class for
constructing a third network navigation object representing
additional behaviors provided to computing components of the
software component architecture layer to thereby enable
communication between the computing components and the network
navigation components.
6. An extensible and replaceable layered component computing
arrangement for providing services directed to information
available on computer networks, the computing arrangement
comprising: a processor; an operating system; a software component
architecture layer coupled to the operating system to control the
operations of the processor, the software component architecture
layer defining a plurality of computing components; and a network
component layer for creating network navigation components
configured to search and obtain information available on the
computer networks, the network component layer includes application
programming interfaces; and means for constructing a network
navigation component that represents different resources available
on the computer network, wherein the network component layer is
integrally coupled to the software component architecture layer to
ensure communication among the computing and network navigation
components.
7. The computing arrangement of claim 6 wherein the network
component layer and software component architecture layer comprise
means for embedding components within one another to form a
compound document having mixed data types and formats.
8. The computing arrangement of claim 6 wherein the application
programming interfaces comprise means for constructing a network
navigation component that implements a protocol.
9. The computing arrangement of claim 6 wherein the application
programming interfaces comprise means for constructing a network
navigation component that provides additional functionality to
existing computing components to enable communication among the
components.
10. The computing arrangement of claim 9 wherein the computing
component comprises a computing part having a viewing editor and
data content.
11. The computing arrangement of claim 10 wherein the computing
component functions to one of transfer files over the networks,
remotely log onto another computer coupled to the networks and view
images on a screen of the computing arrangement.
12. The computing arrangement of claim 10 wherein the network
navigation component comprises a browsing component.
13. The computing arrangement of claim 10 wherein the network
navigation component comprises a component for one of displaying
text and displaying movies on a screen of the computing
arrangement.
.Iadd.14. An extensible and replaceable layered component computing
arrangement residing on a computer adapted to be coupled on a
computer network, the layered arrangement comprising: a software
component architecture layer interfacing with an operating system
to control the operations of the computer, the software component
architecture layer defining a plurality of computing components; a
network component layer adapted to be coupled to at least one
network navigation component that provides a service directed to
the computer network, the network component layer including an
application programming interface; and a number of interconnected
abstract classes included in the application programming interface,
at least on abstract class for defining a network navigation object
that represents a resource available on the computer network, the
network component layer coupled to the software component
architecture layer to facilitate communication among the network
navigation component and at least one computing component.
.Iaddend.
.Iadd.15. The layered arrangement of claim 14, wherein the abstract
class defines a network navigation object that represents a method
of downloading information from a remote location on the computer
network. .Iaddend.
.Iadd.16. The layered arrangement of claim 14, wherein the abstract
class defines a network navigation object that represents
additional behaviors provided to the computing components of the
software component architecture layer for integrating with the
network component layer. .Iaddend.
.Iadd.17. The layered arrangement of claim 14, wherein the network
navigation object is adapted to browse the computer network.
.Iaddend.
.Iadd.18. The layered arrangement of claim 14, wherein the network
navigation object is adapted to display text on a computer display.
.Iaddend.
.Iadd.19. The layered arrangement of claim 14, wherein the network
navigation object is adapted to display images on a computer
display. .Iaddend.
.Iadd.20. The layered arrangement of claim 14, wherein the network
navigation object includes software commands for creating a
datastream for transferring information between objects in the
layered component computing arrangement. .Iaddend.
Description
CROSS REFERENCE TO RELATED APPLICATIONS
This invention is related to the following copending U.S. Patent
Applications:
U.S. patent application Ser. No. 08/435,374, titled REPLACEABLE AND
EXTENSIBLE NOTEBOOK COMPONENT OF A NETWORK COMPONENT SYSTEM.
U.S. patent application Ser. No. 08/435,862, titled REPLACEABLE AND
EXTENSIBLE LOG COMPONENT OF A NETWORK COMPONENT SYSTEM;
U.S. patent application Ser. No. 08/435,213, titled REPLACEABLE AND
EXTENSIBLE CONNECTION DIALOG COMPONENT OF A NETWORK COMPONENT
SYSTEM;
U.S. patent application Ser. No. 08/435,671, titled EMBEDDING
INTERNET BROWSER/BUTTONS WITHIN COMPONENTS OF A NETWORK COMPONENT
SYSTEM; and
U. S. patent application Ser. No. 08/435,880, tilted ENCAPSULATED
NETWORK ENTITY REFERENCE OF A NETWORK COMPONENT SYSTEM, each of
which was filed on May 5, 1995 and assigned to the assignee of the
present invention.
FIELD OF THE INVENTION
This invention relates generally to computer networks and, more
particularly, to an architecture for building Internet-specific
services.
BACKGROUND OF THE INVENTION
The Internet is a system of geographically distributed computer
networks interconnected by computers executing networking protocols
that allow users to interact and share information over the
networks. Because of such wide-spread information sharing, the
Internet has generally evolved into an "open" system for which
developers can design software for performing specialized
operations, or services, essentially without restriction. These
services are typically implemented in accordance with a
client/server architecture, wherein the clients, e.g., personal
computers or workstations, are responsible for interacting with the
users and the servers are computers configured to perform the
services as directed by the clients.
Not surprisingly, each of the services available over the Internet
is generally defined by its own networking protocol. A protocol is
a set of rules governing the format and meaning of messages or
"packets" exchanged over the networks. By implementing services in
accordance with the protocols, computers cooperate to perform
various operations, or similar operations in various ways, for
users wishing to "interact" with the networks. The services
typically range from browsing or searching the information-having a
particular data format using a particular protocol to actually
acquiring information of a different format in accordance with a
different protocol.
For example, the file transfer protocol (FTP) service facilitates
the transfer and sharing of files across the Internet. The Telnet
service allows users to log onto computers coupled to the networks,
while the network protocol provides a bulletin-board service to its
subscribers. Furthermore, the various data formats of the
information available on the Internet include JPEG images, MPEG
movies and .mu.-law sound files.
Coincided with the design of these services has been the
development of applications for implementing the services on the
client/server architecture. Accordingly, applications are available
for users to obtain files from computers connected to the Internet
using the FTP protocol. Similarly, individual applications allow
users to log into remote computers (as though they were logging in
from terminals attached to those computers) using the Telnet
protocol and, further, to view JPEG images and MPEG movies. As a
result, there exists a proliferation of applications directed to
user activity on the Internet.
A problem with this vast collection of application-specific
protocols is that these applications are generally unorganized,
thus requiring users to plod through them in order to satisfyingly,
and profitably, utilize the Internet. Such lack of uniformity is
time consuming and disorienting to users that want to access
particular types of information but are forced to use unfamiliar
applications. Because of the enormous amount of different types of
information available on the Internet and the variety of
applications needed to access those information types, the
experience of using the Internet may be burdensome to these
users.
An alternative to the assortment of open applications for accessing
information on the Internet is a "closed" application system, such
as Prodigy, CompuServe or America Online. Each of these systems
provide a fill range of well-organized services to their
subscribers; however, they also impose restrictions on the services
developers can offer for their systems. Such constraint of "new"
service development may be an unreasonable alternative for many
users.
Two fashionable services for accessing information over the
Internet are Gopher and the World-Wide Web ("Web"). Gopher consists
of a series of Internet servers that provide a "list-oriented"
interface to information available on the networks, the information
is displayed as menu items in a hierarchical manner. Included in
the hierarchy of menus are documents, which can be displayed or
saved, and searchable indexes, which allow users to type keywords
and perform searches.
Some of the menu items displayed by Gopher are links to information
available on other servers located on the networks. In this case,
the user is presented with a list of available information
documents that can be opened. The opened documents may display
additional lists or they may contain various data-types, such as
pictures or text, occasionally, the opened documents may
"transport" the user to another computer on the Internet.
The other popular information services on the Internet is the Web.
Instead of providing a user with a hierarchical list-oriented view
of information, the Web provides the user with a "linked-hypertext"
view. Metaphorically, the Web perceives the Internet as a vast book
of pages, each of which may contain pictures, text, sound, movies
or various other types of data in the form of documents. Web
documents are written in HyperText Markup Language (HTML) and Web
servers transfer HTML documents to each other through the HyperText
Transfer Protocol (HTTP).
The Web service is essentially a means for naming sources of
information on the Internet. Armed with such a general naming
convention that spans the entire network system, developers are
able to build information servers that potentially any user can
access. Accordingly, Gopher servers, HTTP servers, FTP servers, and
E-mail servers have been developed for the Web. Moreover, the
naming convention enables users to identify resources (such as
directories and documents) on any of these servers connected to the
Internet and allow access to those resources.
As an example, a user "traverses" the Web by following hot items of
a page displayed on a graphical Web browser. These hot items are
hypertext links whose presence are indicated on the page by visual
cues, e.g., underlined words, icons or buttons. When a user follows
a link (usually by clicking on the cue with a mouse), the browser
displays the target pointed to by the link which, in some cases,
may be another HTML document.
The Gopher and Web information services represent entirely
different approaches to interacting with information on the
Internet. One follows a list-approach to information that "looks"
like a telephone directory service, while the other assumes a
page-approach analogous to a tabloid newspaper. However, both of
these approaches include applications for enabling users to browse
information available on Internet servers. Additionally, each of
these applications has a unique way of viewing and accessing the
information on the servers.
Netscape Navigator.TM. ("Netscape")is an example of a monolithic
Web browser application that is configured to interact with many of
the previously-described protocols, including HTFF, Gopher and FTP.
When instructed to invoke an application that uses one of these
protocols, Netscape "translates" the protocol to hypertext. This
translation places the user farther away from the protocol designed
to run the application and, in some cases, actually thwarts the
user's Internet experience. For example, a discussion system
requiring an interactive exchange between participants may be
bogged down by hypertext translations.
The Gopher and Web services may further require additional
applications to perform specific functions, such as playing sound
or viewing movies, with respect to the data types contained in the
documents. For example, Netscape employs helper applications for
executing applications having data formats it does not
"understand". Execution of these functions on a computer requires
interruption of processing and context switching (i.e., saving of
state) prior to invoking the appropriate applications. Thus, if a
user operating within the Netscape application "opens" an MPEG
movie, that browsing application number must be saved (e.g., to
disk) prior to opening an appropriate MPEG application, e.g.,
Sparkle, to view the image. Such an arrangement is inefficient and
rather disruptive to processing operations of the computer.
Typically, a computer includes an operating system and application
software which, collectively, control the operations of the
computer. The applications are preferably task-specific and
independent, e.g., a word processor application edits text, a
drawing application edits drawings and a database application
interacts with information stored on a database storage unit.
Although a user can move data from one application to the other,
such as by copying a drawing into a word processing file, the
independent applications must be invoked to thereafter manipulate
that data.
Generally, the application program presents information to a user
through a window of a graphical user interface by drawing images,
graphics or text within the window region. The user, in turn,
communicates with the application by "pointing" at graphical
objects in the window with a pointer that is controlled by a
hand-operated pointing device, such as a mouse, or by pressing keys
of a keyboard.
The graphical objects typically included with each window region
are sizing boxes, buttons and scroll bars. These objects represent
user interface elements that the user can point at with the pointer
(or a cursor) to select or manipulate. For example, the user may
manipulate these elements to move the windows around on the display
screen, and change their sizes and appearances so as to arrange the
window in a convenient manner. When the elements are selected or
manipulated, the underlying application program is informed, via
the window environment, that control has been appropriated by the
user.
A menu bar is a further example of a user interface element that
provides a list of menus available to a user. Each menu, in turn,
provides a list of command options that can be selected merely by
pointing to them with the mouse-controlled pointer. That is, the
commands may be issued by actuating the mouse to move the pointer
onto or near the command selection, and pressing and quickly
releasing, i.e., "clicking" a button on the mouse.
In contrast to this typical application-based computing
environment, a software component architecture provides a modular
document-based computing arrangement using tools such as viewing
editors. The key to document-based computing is the compound
document, i.e., a document composed of many different types of data
sharing the same file. The types of data contained in a compound
document may range from text, tables and graphics to video and
sound. Several editors, each designed to handle a particular data
type of format, can work on the contents of the document at the
same time, unlike the application-based computing environment.
Since many editors may work together on the same document, the
compound document is apportioned into individual modules of context
for manipulation by the editors. The compound-nature of the
document is realized by embedding these modules within each other
to create a document having a mixture of data types. The software
component architecture provides the foundation for assembling
documents of differing contents and the present invention is
directed to a system for extending this capability to
network-oriented services.
Therefore, it is among the objects of the present invention to
simplify a user's experience on computer networks without
sacrificing the flexibility afforded the user by employing existing
protocols and data types available on those networks.
Another object of the invention is to provide a system for users to
search and access information on the Internet without extensive
understanding or knowledge of the underlying protocols and data
formats needed to access that information.
Still another object of the invention is to provide a
document-based computing system that enables users to develop
modules for services directed to information available on computer
networks.
Still yet another object of the invention is to provide a platform
that allows third-party developers to extend a layered network
component system by building new components that seamlessly
interact with the system components.
SUMMARY OF THE INVENTION
Briefly, the invention comprises an extensible and replaceable
network-oriented component system that provides a platform for
developing network navigation components that operate on a variety
of hardware and software computer system. These navigation
components include key integrating components along with
components, such as Gopher-specific and Web-specific components,
configured to deliver conventional services directed to computer
networks. Communication among these components is achieved through
novel application programming interfaces (APIs) to facilitate
integration with an underlying software component architecture.
Such a highly-modular cooperating layered-arrangement between the
network component system and the component architecture allows any
existing component to be replaced, and allows new components to be
added, without affecting operation of the novel network component
system.
According to one aspect of the present invention, the novel system
provides a network navigating service for browsing and accessing
information available on the computer networks. The information may
include various data types available from a variety of sources
coupled to the computer networks. Upon accessing the desired
information, component viewing editors are provided to modify or
display, either visually or acoustically, the contents of the data
types regardless of the source of the underlying data. Additional
components and component viewing editors may be created in
connection with the underlying software component architecture to
allow integration of different data types and protocols needed to
interact with information on the Internet.
In accordance with another aspect of the invention, the component
system is preferably embodied as a customized framework having a
set of interconnected abstract classes for defining
network-oriented objects. These abstract classes include CyberItem,
CyberStream and CyberExtension, and the objects they define are
used to build the novel navigation components. Interactions among
these latter components and existing components of the underlying
software architecture provide the basis for the extensibility and
replaceability features of the network component system.
Specifically, CyberItem is an object abstraction which represents a
"resource on a computer-network", but which may be further expanded
to include resources available at any accessible location.
CyberStream is an object abstraction representing a method for
downloading information from a remote location on the computer
network, while CyberExtension represents additional behaviors
provided to the existing components for integration with the
network component system.
The novel network system captures the essence of a
"component-based" approach to browsing and retrieving
network-oriented information as opposed to the monolithic
application-based approach of prior browsing systems. Such a
component-based system has a number of advantages. First, if a user
does not like the way a particular component operates, that
component can be replaced with a different component provided by
another developer. In contrast, if a user does not like the way a
monolithic application handles certain protocols, the only resource
is to use another service because the user cannot modify the
application to perform the protocol function in a different manner.
Clearly, the replaceability feature of the novel network component
system provides a flexible alternative to the user.
Second, the use of components is substantially less disruptive than
using helper applications in situations where a monolithic
application confronts differing data types and formats. Instead of
"switching" application layers, the novel network system merely
invokes the appropriate component and component viewing editor
configured to operate with the data type and format. Such
"seamless" integration among components is a significant feature of
the modular cooperating architecture described herein.
A third advantage of the novel network system is directed to the
cooperating relationship between the system and the underlying
software computer architecture. Specifically, the novel network
components are based on the component architecture technology to
therefore ensure cooperation between all components in an
integrated manner. The software component architecture is
configured to operate on a plurality of computers, and is
preferably implemented as a software layer adjoining the operating
system.
BRIEF DESCRIPTION OF THE DRAWINGS
The above and further advantages of the invention may be better
understood by referring to the following description in conjunction
with the accompanying drawings in which:
FIG. 1 is a block diagram of a network system including a
collection of computer networks interconnected by client and server
computers;
FIG. 2 is a block diagram of a client component, such as a personal
computer, on which the invention may advantageously operate;
FIG. 3 is a block diagram of a server computer of FIG. 1;
FIG. 4 is a highly schematized block diagram of a layered component
computing arrangement in accordance with the invention;
FIG. 5 is a schematic illustration of the interaction of a
component, a software component layer and an operating system of
the computer of FIG. 2;
FIG. 6 is a schematic illustration of the interaction between a
component, a component layer and a window manager in accordance
with the invention;
FIG. 7 is a simplified class hierarchy diagram illustrating a base
class CyberItem, and its associated subclasses, used to construct
network component objects in accordance with the invention;
FIG. 8 is a simplified class hierarchy diagram illustrating a base
class CyberStream, and its associated subclasses, in accordance
with the invention; and
FIG. 9 is a simplified class hierarchy diagram illustrating a base
class CyberExtension, and its associated subclasses, in accordance
with the present invention.
DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENT
FIG. 1 is a block diagram of a network system 100 comprising a
collection of computer networks 110 interconnected by client
computers ("clients") 200, e.g., workstations or personal
computers, and server computers ("servers") 300. The servers are
typically computers having hardware and software elements that
provide resources or services for use by the clients 200 to
increase the efficiency of their operations. It will be understood
to those skilled in the art that, in an alternate embodiment, the
client and server may exist on the same computer; however, for the
illustrative embodiment described herein, the client and server are
separate computers.
Several types of computer networks 110, including local area
networks (LANs) and wide area networks (WANs), may be employed in
the system 100. A LAN is a limited area network that typically
consists of a transmission medium, such as coaxial cable or twisted
pair, while a WAN may be a public or private telecommunications
facility that interconnects computers widely dispersed. In the
illustrative embodiment, the network system 100 is the Internet
system of geographically distributed computer networks.
Computers coupled to the Internet typically communicate by
exchanging discrete packets of information according to predefined
networking protocols. Execution of these networking protocols allow
users to interact and share information across the networks. As an
illustration, in response to a user's request for a particular
service, the client 200 sends an appropriate information packet to
the server 300, which performs the service and returns a result
back to the client 200.
FIG. 2 illustrates a typical hardware configuration of a client 200
comprising a central processing unit (CPU) 210 coupled between a
memory 214 and input/output (I/O) circuitry 218 by bidirectional
buses 212 and 216. The memory 214 typically comprises random access
memory (RAM) for temporary storage of information and read only
memory (ROM) for permanent storage of the computer's configuration
and basic operating commands, such as portions of an operating
system (not shown). As described further herein, the operating
system controls the operations of the CPU 210 and client computer
200.
The I/O circuitry 218, in turn, connects the computer to computer
networks, such as the Internet computer networks 250, via a
bidirectional bus 222 and to cursor/pointer control devices, such
as keyboard 224 (via cable 226) and a mouse 230 (via cable 228).
The mouse 230 typically contains at least one button 234 operated
by a user of the computer. A conventional display monitor 232
having a display screen 235 is also connected to I/O circuitry 218
via cable 238. A pointer (cursor) 240 is displayed on windows 244
of the screen 235 and its position is controllable via the mouse
230 or the keyboard 224, as is well-known. Typically, the I/O
circuitry 218 receives information, such as control and data
signals, from the mouse 230 and keyboard 224, and provides that
information to the CPU 210 for display on the screen 235 or, as
described further herein, for transfer over the Internet 250.
FIG. 3 illustrates a typical hardware configuration of a server 300
of the network system 100. The server 300 has many of the same
units as employed in the client 200, including a CPU 310, a memory
314, and I/O circuitry 318, each of which are interconnected by
bidirectional buses 312 and 316. Also, the I/O circuitry connects
the computer to computer networks 350 via a bidirectional bus 322.
These units are configured to perform functions similar to those
provided by their corresponding units in the computer 200. In
addition, the server typically includes a mass storage unit 320,
such as a disk drive, connected to the I/O circuitry 318 via
bidirectional bus 324.
It is to be understood that the I/O circuits within the computers
200 and 300 contain the necessary hardware, e.g., buffers and
adapters, needed to interface with the control devices, the display
monitor, the mass storage unit and the networks. Moreover, the
operating system includes the necessary software drivers to
control, e.g., network adapters within the I/O circuits when
performing I/O operations, such as the transfer of data packets
between the client 200 and server 300.
The computers are preferably personal computers of the
Macintosh.RTM. series of computers sold by Apple Computer Inc.,
although the invention may also be practiced in the context of
other types of computers, including the IBM.RTM.G) series of
computers sold by International Business Machines Corp. These
computers have resident thereon, and are controlled and coordinated
by, operating system software, such as the Apple.RTM. System
7.RTM., IBM OS2.RTM., or the Microsoft.RTM. Windows.RTM. operating
systems.
As noted, the present invention is based on a modular document
computing arrangement as provided by an underlying software
components architecture, rather than the typical application-based
environment of prior computing systems. FIG. 4 is a highly
schematized diagram of the hardware and software elements of a
layered component computing arrangement 400 that includes the novel
network-oriented component system of the invention. At the lowest
level there is the computer hardware, shown as layer 410.
Interfacing with the hardware is a conventional operating system
layer 420 that includes a window manager, a graphic system, a file
system and network-specific interfacing, such as a TCP/IP protocol
stack and an Apple-talk protocol stack.
The software component architecture is preferably implemented as a
component architecture layer 430. Although it is shown as
overlaying the operating system 420, the component architecture
layer 430 is actually independent of the operating system and, more
precisely, resides side-by-side with the operating system. This
relationship allows the component architecture to exist on multiple
platforms that employ different operating systems.
In accordance with the present invention, a novel network:oriented
component layer 450 contains the underlying technology for
implementing the extensible and replaceable network component
system that delivers services and facilitates development of
navigation components directed to computer networks, such as the
Internet. As described further herein, this technology includes
novel application programming interfaces (APIs) that facilitate
communication among components to ensure integration with the
underlying component architecture layer 430. These novel APIs are
preferably delivered in the form of objects in a class
hierarchy.
It should be noted that the network component layer 450 may operate
with any existing system-wide component architecture, such as the
Object Linking and Embedding (OLE) architecture developed by the
Microsoft Corporation; however, in the illustrative embodiment, the
component architecture is preferably OpenDoc, the vendor-neutral,
open standard for compound documents developed by, among others,
Apple Computer, Inc.
Using tools such as viewing editors, the component architecture
layer 430 creates a compound document composed of data having
different types and formats. Each differing data type and format is
contained in a fundamental unit called a computing part or, more
generally, a "component" 460 comprised of a viewing editor along
with the data content. An example of the computing component 460
may include a MacDraw component. The editor, on the other hand, is
analogous to an application program in a conventional computer.
That is, the editor is a software component which provides the
necessary functionality to display a component's contents and,
where appropriate, present a user interface for modifying those
contents. Additionally, the editor may include menus, controls and
other user interface elements.
According to the invention, the network component layer 450 extends
the functionality of the underlying component architecture layer
430 by defining network-oriented components 480. Included among
these components are key integrating components (such as notebook,
log and connection dialog components) along with components
configured to deliver conventional services directed to computer
networks, such as Gopher-specific and Web-specific components.
Moreover, the components may include FTP-specific components for
transferring files across the networks. Telnet-specific components
for remotely logging onto other computers, and JPEG-specific and
MPEG-specific components for viewing image and movie data types and
formats.
A feature of the invention is the ability to easily extend, or
replace, any of the components of the layered computing arrangement
400 with a different component to provide a user with customized
network-related services. As described herein, this feature is made
possible by the cooperating relationship between the network
component layer 450 and its underlying component architecture layer
430. The integrating components communicate and interact with these
various components of the system in a "seamlessly integrated"
manner to provide basic tools for navigating the Internet computer
networks.
FIG. 4 also illustrates the relationship of applications 490 to the
elements of the layered computing arrangement 400. Although they
reside in the same "user space" as the components 460 and network
components 480, the applications 490 do not interact with these
elements and, thus, interface directly to the operating system
layer 420. Because they are designed as monolithic, autonomous
modules, applications (such as previous Internet browsers) often do
not even interact among themselves. In contrast, the components of
the arrangement 400 are designed to work together via the common
component architecture layer 430 or, in the case of the network
components, via the novel network component layer 450.
Specifically, the invention features the provision of the
extensible and replaceable network-oriented component system which,
when invoked, causes actions to take place that enhance the ability
of a user to interact with the computer to search for, and obtain,
information available over computer networks such as the Internet.
The information is manifested to a user via a window environment,
such as the graphical user interface provide by System 7 or
Windows, that is preferably displayed on the screen 235 (FIG. 2) as
a graphical display to facilitate interactions between the user and
the computer, such as the client 200. This behavior of the system
is brought about by the interaction of the network components with
a series of system software routines associated with the operating
system 420. These system routines, in turn, interact with the
components architecture layer 430 to create the windows and
graphical user interface elements, as described further herein.
The window environment is generally part of the operating system
software 420 that includes a collection of utility programs for
controlling the operation of the computer 200. The operating
system, in turn, interacts with the components to provide higher
levels functionality, including a direct interface with the user. A
component makes use of operating system functions by issuing a
series of task commands to the operating system via the network
component layer 450 or, as is typically the case, through the
component architecture layer 430. The operating system 420 then
performs the requested task. For example, the component may request
that a software driver of the operating system initiate transfer of
a data packet over the networks 250 or that the operating system
display certain information on a window for presentation to the
user.
FIG. 5 is a schematic illustration of the interaction of a
component 502, software component layer 506 and an operating system
510 of a computer 500, which is similar to, and has equivalent
elements of, the client computer 200 of FIG. 2. As noted, the
network component layer 450 (FIG. 4) is integrated with the
computer architecture layer 430 to provide a cooperating
architecture that allows any component to be replaced or extended,
and allows new components to be added, without affecting operation
of the network component system, accordingly, for purposes of the
present discussion, the layers 430 and 450 may be treated as a
single software component layer 506.
The component 502, component layer 506 and operating system 510
interact to control and coordinate the operations of the computer
500 and their interaction is illustrated schematically by arrows
504 and 508. In order to display information on a screen display
535, the component 502 and component layer 506 cooperate to
generate and send display commands to a window manager 514 of the
operating system 510. The window manager 514 stores information
directly (via arrow 516) into a screen buffer 520.
The window manager 514 is a system software routine that is
generally responsible for managing windows 544 that the user views
during operation of the network component system. That is, it is
generally the task of the window manager to keep track of the
location and size of the window and window areas which must be
drawn and redrawn in connection with the network component system
of the present invention.
Under control of various hardware and software in the system, the
contents of the screen buffer 520 are read out of the buffer and
provided, as indicated schematically by arrow 522, to a display
adapter 526. The display adapter contains hardware and software
(sometimes in the form of firmware) which converts the information
in the screen buffer 520 to a form which can be used to drive a
display screen 535 of a monitor 532. The monitor 532 is connected
to display adapter 526 by cable 528.
Similarly, in order to transfer information as a packet over the
computer networks, the component 502 and component layer 506
cooperate to generate and send network commands, such as remote
procedure calls, to a network-specific interface 540 of the
operating system 510. The network interface comprises system
software routines, such as "stub" procedure software and protocol
stacks, that are generally responsible for forming the information
into a predetermined packet format according to the specific
network protocol used, e.g., TCP/IP or Apple-talk protocol.
Specifically, the network interface 540 stores the packet directly
(via arrow 556) into a network buffer 560. Under control of the
hardware and software in the system, the contents of the network
buffer 560 are provided, as indicated schematically by arrow 562,
to a network adapter 566. The network adapter incorporates the
software and hardware, i.e., electrical and mechanical interchange
circuits and characteristics, needed to interface with the
particular computer networks 550. The adapter 566 is connected to
the computer networks 550 by cable 568.
In a preferred embodiment, the invention described herein is
implemented in an object-oriented programming (OOP) language, such
as C++, using System Object Model (SOM) technology and OOP
techniques. The C++ and SOM languages are well-known and many
articles and texts are available which describe the languages in
detail. In addition, C++ and SOM compilers are commercially
available from several vendors. Accordingly, for reasons of
brevity, the details of the C++ and SOM languages and the
operations of their compilers will not be discussed further in
detail herein.
As will be understood by those skilled in the art, OOP techniques
involve the definition, creation, use and destruction of "objects".
These objects are software entities comprising data elements and
routines, or functions, which manipulate the data elements. The
data and related functions are treated by the software as an entity
that can be created, used and deleted as if it were a single item.
Together, the data and functions enable objects to model virtually
any real-world entity in terms of its characteristics, which can be
represented by the data elements, and its behavior, which can be
represented by its data manipulation functions. In this way,
objects can model concrete things like computers, while also
modeling abstract concepts like numbers or geometrical designs.
Objects are defined by creating "classes" which are not objects
themselves, but which act as templates that instruct the compiler
how to construct an actual object. A class may, for example,
specify the number and type of data variables and the steps
involved in the functions which manipulate the data. An object is
actually created in the program by means of a special function
called a "constructor" which uses the corresponding class
definition and additional information, such as arguments provided
during object creation, to construct the object. Likewise objects
are destroyed by a special function called a "destructor". Objects
may be used by manipulating their data and invoking their
functions.
The principle benefits of OOP techniques arise out of three basic
principles encapsulation, polymorphism and inheritance.
Specifically, objects can be designed to hide, or encapsulate all,
or a portion of, its internal data structure and internal
functions. More specifically, during program design, a program
developer can define objects in which all or some of the data
variables and all or some of the related functions are considered
"private" or for use only by the object itself. Other data or
functions can be declared "public" or available for use by other
programs. Access to the private variables by other programs can be
controlled by defining public functions for an object which access
the object's private data. The public functions form a controlled
and consistent interface between the private data and the "outside"
world. Any attempt to write program code which directly accesses
the private variables causes the compiler to generate an error
during program compilation which error stops the compilation
process and prevents the program from being run.
Polymorphism is a concept which allows objects and functions that
have the same overall format, but that work with different data, to
function differently in order to produce consistent results.
Inheritance, on the other hand, allows program developers to easily
reuse pre-existing programs and to avoid creating software from
scratch. The principle of inheritance allows a software developer
to declare classes (and the objects which are later created from
them) as related. Specifically, classes may be designated as
subclasses of other base classes. A subclass "inherits" and has
access to all of the public functions of its base classes just as
if these functions appeared in the subclass. Alternatively, a
subclass can override some or all of its inherited functions or may
modify some or all of its inherited functions merely by defining a
new function with the same form (overriding or modification does
not alter the function in the base class, but merely modifies the
use of the function in the subclass). The creation of a new
subclass which has some of the functionality (with selective
modification) of another class allows software developers to easily
customize existing code to meet their particular needs.
In accordance with the present invention, the component 502 and
windows 544 are "objects" created by the component layer 506 and
the window manager 514, respectively, the latter of which may be an
object-oriented program. Interaction between a component, component
layer and a window manager is illustrative in greater detail in
FIG. 6.
In general, the component layer 606 interfaces with the window
manager 614 by creating and manipulating objects. The window manger
itself may be an object which is created when the operating system
is started. Specifically, the component layer creates window
objects 630 that create the window manager to create associated
windows on the display screen. This is shown schematically by an
arrow 608. In addition, the component layer 606 creates individual
graphic interface objects 650 that are stored in each window object
630, as shown schematically by arrows 612 and 652. Since many
graphic interface objects may be created in order to display many
interface elements on the display screen, the window object 630
communicates with the window manager by means of a sequence of
drawing commands issued from the window object to the window
manager 614, as illustrated by arrow 632.
As noted, the component layer 606 functions to embed components
within one another to form a component document having mixed data
types and formats. Many different viewing editors may work together
to display, or modify, the data contents of the documents. In order
to direct keystrokes and mouse events initiated by a user to the
proper components and editors, the component layer 606 includes an
arbitrator 616 and a dispatcher 626.
The dispatcher is an object that communicates with the operating
system 610 to identify the correct viewing editor 660, while the
arbitrator is an object that informs the dispatcher as to which
editor "owns" the stream of keystrokes or mouse events.
Specifically, the dispatcher 626 receives these "human-interface"
events from the operating system 610 (as shown schematically by
arrow 628) and delivers them to the correct viewing editor 660 via
arrow 662. The viewing editor 660 then modifies or displays, either
visually or acoustically, the contents of the data types.
Although OOP offers significant improvements over other programming
concepts, software development still requires significant outlays
of time and effort, especially if no pre-existing software is
available for modulation. Consequently, a prior art approach has
been to provide a developer with a set of preferred, interconnected
classes which create a set of objects and additional miscellaneous
routines that are all directed to performing commonly-encountered
tasks in a particular environment. Such predefined classes and
libraries are typically called "frameworks" and essentially provide
a pre-fabricated structure for a working document.
For example, a framework for a user interface might provide a set
of predefined graphic interface objects which create windows,
scroll bars, menus, etc. and provide the support and "default"
behavior for these interface objects. Since frameworks are based on
object-oriented techniques, the predefined classes can be used as
base classes and the built-in default behavior can be inherited by
developer-defined subclasses and either modified or overridden to
allow developers to extend the framework and create customized
solutions in a particular area of expertise. This object-oriented
approach provides a major advantage over traditional programming
since the programmer is not changing the original program, but
rather extending the capabilities of that original program. In
addition, developers are not blindly working through layers of code
because the framework providers architectural guidance and modeling
and, at the same time, frees the developers to supply specific
actions unique to the problem domain.
There are many kinds of framework available, depending on the level
of the system involved and the kind of problem to be solved. The
types of frameworks range from high-level frameworks that assist in
developing a user interface, to lower-level frameworks that provide
basic system software services such as communications, printing,
file systems support, graphics, etc. Commercial examples of
application-type frameworks include MacApp (Apple), Bedrock
(Symantec), OWL (Borland), NeXT Step App Kit (NeXT) and
Smalltalk-80 MVC (ParcPlace).
While the framework approach utilizes all the principles of
encapsulation, polymorphism, and inheritance in the object layer,
and is a substantial improvement over other programming techniques,
there are difficulties which arise. These difficulties are caused
by the fact that it is easy for developers to reuse their own
objects, but it is difficult for the developers to use objects
generated by other programs. Further, frameworks generally consist
of one or more object "layers" on top of a monolithic operating
system and even with the flexibility of the object layer, it is
still often necessary to directly interact with the underlying
system by means of awkward procedure calls.
In the same way that a framework provides the developer with prefab
functionality for a document, a system framework, such as that
included in the preferred embodiment, can provide a prefab
functionality for system level services which developers can modify
or override to create customized solutions, thereby avoiding the
awkward procedural calls necessary with the prior art framework.
For example, consider a customizable network interface framework
which can provide the foundation for browsing and accessing
information over a computer network. A software developer who
needed these capabilities would ordinarily have to write specific
routines to provide them. To do this with a framework, the
developer only needs to supply the characteristic and behavior of
the finished output, while the framework provides the actual
routines which perform the tasks.
A preferred embodiment takes the concept of frameworks and applies
it throughout the entire system, including the document, component,
component layer and the operating system. For the commercial or
corporate developer, systems integrator, or OEM, this means all of
the advantages that have been illustrated for a framework, such as
MacApp, can be leveraged not only at the application level for
things such as text and graphical user interfaces, but also at the
system level for such services as printing, graphics, multi-media,
file systems and, as described herein, network-specific
operations.
Referring again to FIG. 6, the window object 630 and the graphic
interface object 650 are elements of a graphical user interface of
a network component system having a customizable framework for
greater enhancing the ability of a user to navigate or browse
through information stored on servers coupled to the network.
Moreover, the novel network system provides a platform for
developing network navigation components for operation on a variety
of hardware and software computer systems.
As noted, the network components are preferably implemented as
objects and communication among the network component objects is
effected through novel application programming interfaces (APIs).
These APIs are preferably delivered in the form of objects in a
class hierarchy that is extensible so that developers can create
new components and editors. From an implementation viewpoint, the
objects can be subclassed and can inherit from base classes to
build customized components allow users to see different kinds of
data using different kinds of protocols, or to create components
that function differently from existing components.
In accordance with the invention, the customized framework has a
set of interconnected abstract classes for defining
network-oriented objects used to build these customized network
components. These abstract classes include CyberItem, CyberStream
and CyberExtension and the objects they define are used to build
the novel network components. Interactions among these latter
components and existing components of the underlying software
architecture provide the basis for the extensibility and
replaceability features of the network component system.
In order to further understand the operations of these network
component objects, it may be useful to examine their construction
together with the major function routines that comprise the
behavior of the objects. In examining the objects, it is also
useful to examine the classes that are used to construct the
objects (as previously mentioned the classes serve as templates for
the construction of objects). Thus, the relation of the classes and
the functions inherent in each class can be used to predict the
behavior of an object once it is constructed.
FIG. 7 illustrates a simplified class hierarchy diagram 700 of the
base class CyberItem 702 used to construct the network component
object 602. In general, CyberItem is an abstraction that may
represent resources available at any location accessible from the
client 200. However, in accordance with the illustrative
embodiment, a CyberItem is preferably a small, self-contained
object that represents a resource, such as a service, available on
the Internet and subclasses of the CyberItem base class are used to
construct various network component objects configured to provide
such services for the novel network-oriented component system.
For example, the class GopherItem 704 may be used to construct a
network component object representing a "thing in Gopher space",
such as a Gopher directory, while the subclass WebItem 706 is
derived from CyberItem and encapsulates a network component object
representing a "thing in Web space, e.g. a Web page. Similarly, the
subclass NewsGroupItem 708 may be used to construct a network
object representing a newsgroup and the class Article 710 is
configured to encapsulate a network component object representing
an article resource on an Internet server.
Since each of the classes used to construct these network component
objects are subclasses of the CyberItem base class, each class
inherits the functional operators and methods that are available
from that base class. For example, methods associated with the
CyberItem base class for returning an icon family and a name are
assumed by the subclasses to allow the network components to
display CyberItem objects in a consistent manner. The methods
associated with the CyberItem base class include (the arguments
have been omitted for simplicity): GetRefCount ();
IncrementRefCount (); Release (); SetUpFromURL ();
ExternalizeContent (); StreamToStorageUnit ();
StreamFromStorageUnit (); Clone (); Compare (); GetStringProperty
(); SetDefaultName (); GetURL (); GetIconSuite ();
CreateCyberStream (); Open (); OpenInFrame (); FindWindow ().
In some instances, a CyberItem object may need to spawn a
CyberStream object in order to obtain the actual data for the
object it represents. FIG. 8 illustrates a simplified class
hierarchy diagram 800 of the base class CyberStream 802. As noted,
CyberStream is an abstraction that serves as an API between a
component configured to display a particular data format and the
method for obtaining the actual data. This allows developers to
design viewing editors that can display the content of data
regardless of the protocol required to obtain that data.
For example, a developer may design a picture viewing editor that
uses the CyberStream API to obtain data bytes describing a picture.
The actual data bytes are obtained by a subclass of CyberStream
configured to construct a component object that implements a
particular protocol, such as Gopher and HTTP. That is, the
CyberStream object contains the software commands necessary to
create a "data stream" for transferring information from one object
to another. According to the invention, a GopherStream subclass 804
is derived from the CyberStream base class and encapsulates a
network object that implements the Gopher protocol, while the class
WebStream 806 may be used to construct a network component
configured to operate in accordance with the HTTP protocol.
The methods associated with the CyberStream class, and which are
contained in the objects constructed from the subclasses, include
(the arguments have been omitted for simplicity): GetStreamStatus
(); GetTotalDataSize (); GetStreamError (); GetStatusString ();
OpenWithCallback (); Open (); GetBuffer (); ReleaseBuffer (); Abort
().
FIG. 9 is a simplified class hierarchy diagram of the base class
CyberExtension 902 which represents additional behaviors provided
to components of the underlying software component architecture.
Specifically, CyberExtension are the mechanisms for adding
functionality to, and extending the APIs of, existing components so
that they may communicate with the novel network components. As a
result, the CyberExtension base class 902 operates in connection
with a Component base class 906 through their respective subclasses
BaseExtension 904 and BaseComponent 908.
The CyberExtension base class provides an API for accessing other
network-specific components, such as notebooks and logs, and for
supporting graphical user interface elements, such as menus.
CyberExtension objects are used by components that display the
contents of CyterItem objects. This includes browser-like
components such as a Gopher browser or Web browser, as well as
JPEG-specific components which display particular types of data
such as pictures. The CyberExtension objects also keep track of the
CyberItem objects which these components are responsible for
displaying.
In accordance with the invention, the class GopherBrowser 910 may
be used to construct a Gopher-like network browsing component and
the class WebBrowser 912 may be able to construct a Web-like
network browsing component. Likewise, a TextViewer subclass 918 may
encapsulate a network component configured to display text and a
PictureViewer subclass 920 may construct a component for displaying
pictures. The methods associated with the CyberExtension class
include (the arguments have been omitted for simplicity):
TABLE-US-00001 ICyberExtension ( ); Components displaying the
contents of CyberItem object SetCyberItem ( ); GetCyberItem ( );
GetCyberItemWindow ( ); IsCyberItemSelected ( );
GetSelectedCyberItems ( ); Notebook and Log Tools AddCyberItemToLog
( ); ShowLogWindow ( ); IsLogWindowShown ( );
AddCyberItemToNotebook ( ); AddCyberItemsToNotebook ( );
ShowNotebookWindow ( ); IsNotebookWindowShown ( ); SetLogFinger (
); ClearLogFinger ( ); Notebook and Log Menu Handlers
InstallServicesMenu ( ); AdjustMenus ( ); DoCommand ( ).
In summary, the novel network system described herein captures, the
essence of a "comprehensive-based" approach to browsing and
retrieving network-oriented information as opposed to the
monolithic application-based approach of prior browsing systems.
Advantages of such a component-based system include the ability to
easily replace and extend components because of the cooperating
relationship between the novel network-oriented component system
and the underlying component architecture. This relationship also
facilitates "seamless" integration and cooperation between
components and component viewing editors when confronted with
differing data types and formats.
While there has been shown and described an illustrative embodiment
for implementing an extensible and replaceable network component
system, it is to be understood that various other adaptations and
modifications may be made within the spirit and scope of the
invention. For example, additional system software routines may be
used when implementing the invention in various applications. These
additional system routines include dynamic link libraries (DLL),
which are program files containing collections of window
environment and networking functions designed to perform specific
classes of operations. These functions are invoked as needed by the
software component layer to perform the desired operations.
Specifically, DLLs, which are generally well-known, may be used to
interact with the component layer and window manager to provide
network-specific components and functions.
The foregoing description has been directed to specific embodiments
of this invention. It will be apparent, however, that other
variations and modifications may be made to the described
embodiments, with the attainment of some or all of their
advantages. Therefor, it is the object of the appended claims to
cover all such variations and modifications as come within the true
spirit and scope of the invention.
* * * * *