Extensible, replaceable network component system
Claim Score by NHIP
Abstract
An extensible and replaceable network-oriented component system provides a platform for developing network 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 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 network component system.

Term
Term ended
Expired 5 May 2015, 11.4 years ago.
- Priority
- Filed
- Granted
- Expired
- Today
21 claims: 4 independent, 17 dependent
- 1An 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.
- 6An 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.
- 14An 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 one abstract class comprises one or more subclasses 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.
- 19Broadest claimClaim Score 54, average(NHIP)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 one abstract class defines a network navigation object that represents a method of downloading information from a remote location on the computer network.
Independent claims4
105 paragraphs in 6 sections, as filed
0001More than one reissue application has been filed for the reissue of U.S. Pat. No. 6,212,575 B1: application Ser. No. 10/408,789 filed Apr. 3, 2003, now U.S. Pat. No. RE 39,486; and this application, which is a continuation of U.S. Pat. No. RE39,486.
CROSS-REFERENCE TO RELATED APPLICATIONS
0002This invention is related to the following copending U.S. Patent Applications:
0003U.S. patent application Ser. No. 08/435,374, titled REPLACEABLE AND EXTENSIBLE NOTEBOOK COMPONENT OF A NETWORK COMPONENT SYSTEM;
0004U.S. patent application Ser. No. 08/435,862, titled REPLACEABLE AND EXTENSIBLE LOG COMPONENT OF A NETWORK COMPONENT SYSTEM;
0005U.S. patent application Ser. No. 08/435,213, titled REPLACEABLE AND EXTENSIBLE CONNECTION DIALOG COMPONENT OF A NETWORK COMPONENT SYSTEM;
0006U.S. patent application Ser. No. 08/435,671, titled EMBEDDING INTERNET BROWSER/BUTTONS WITHIN COMPONENTS OF A NETWORK COMPONENT SYSTEM; and
0007U. S. patent application Ser. No. 08/435,880, titled 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
0008This invention relates generally to computer networks and, more particularly, to an architecture for building Internet-specific services.
BACKGROUND OF THE INVENTION
0009The 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.
0010Not 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 for information-having a particular data format using a particular protocol to actually acquiring information of a different format in accordance with a different protocol.
0011For 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 netnews 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 μ-law sound files.
0012Coincident 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.
0013A 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.
0014An 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.
0015Two 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.
0016Some 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.
0017The other popular information service 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).
0018The 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.
0019As 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.
0020The 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.
0021Netscape Navigator™ (“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.
0022The 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 application. Thus, if a user operating within the Netscape application “opens” an MPEG movie, that browsing application 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.
0023Typically, 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.
0024Generally, 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.
0025The 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.
0026A 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.
0027In 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 or format, can work on the contents of the document at the same time, unlike the application-based computing environment.
0028Since many editors may work together on the same document, the compound document is apportioned into individual modules of content 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.
0029Therefore, 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.
0030Another 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.
0031Still 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.
0032Still 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
0033Briefly, 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 systems. 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.
0034According 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.
0035In 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.
0036Specifically, 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.
0037The 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 recourse is to use another service because the user cannot modify the application to perform the protocol functions in a different manner. Clearly, the replaceability feature of the novel network component system provides a flexible alternative to the user.
0038Second, 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.
0039A third advantage of the novel network system is directed to the cooperating relationship between the system and the underlying software component 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
0040The 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:
0041<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram of a network system including a collection of computer networks interconnected by client and server computers;
0042<figref idref="DRAWINGS">FIG. 2</figref> is a block diagram of a client computer, such as a personal computer, on which the invention may advantageously operate;
0043<figref idref="DRAWINGS">FIG. 3</figref> is a block diagram of a server computer of <figref idref="DRAWINGS">FIG. 1</figref>;
0044<figref idref="DRAWINGS">FIG. 4</figref> is a highly schematized block diagram of a layered component computing arrangement in accordance with the invention;
0045<figref idref="DRAWINGS">FIG. 5</figref> is a schematic illustration of the interaction of a component, a software component layer and an operating system of the computer of <figref idref="DRAWINGS">FIG. 2</figref>;
0046<figref idref="DRAWINGS">FIG. 6</figref> is a schematic illustration of the interaction between a component, a component layer and a window manager in accordance with the invention;
0047<figref idref="DRAWINGS">FIG. 7</figref> 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;
0048<figref idref="DRAWINGS">FIG. 8</figref> is a simplified class heirarchy diagram illustrating a base class CyberStream, and its associated subclasses, in accordance with the invention; and
0049<figref idref="DRAWINGS">FIG. 9</figref> 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
0050<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram of a network system <b>100</b> comprising a collection of computer networks <b>110</b> interconnected by client computers (“clients”) <b>200</b>, e.g., workstations or personal computers, and server computers (“servers”) <b>300</b>. The servers are typically computers having hardware and software elements that provide resources or services for use by the clients <b>200</b> 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.
0051Several types of computer networks <b>110</b>, including local area networks (LANs) and wide area networks (WANs), may be employed in the system <b>100</b>. 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 <b>100</b> is the Internet system of geographically distributed computer networks.
0052Computers 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 <b>200</b> sends an appropriate information packet to the server <b>300</b>, which performs the service and returns a result back to the client <b>200</b>.
0053<figref idref="DRAWINGS">FIG. 2</figref> illustrates a typical hardware configuration of a client <b>200</b> comprising a central processing unit (CPU) <b>210</b> coupled between a memory <b>214</b> and input/output (I/O) circuitry <b>218</b> by bidirectional buses <b>212</b> and <b>216</b>. The memory <b>214</b> 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 <b>210</b> and client computer <b>200</b>.
0054The I/O circuitry <b>218</b>, in turn, connects the computer to computer networks, such as the Internet computer networks <b>250</b>, via a bidirectional bus <b>222</b> and to cursor/pointer control devices, such as a keyboard <b>224</b> (via cable <b>226</b>) and a mouse <b>230</b> (via cable <b>228</b>). The mouse <b>230</b> typically contains at least one button <b>234</b> operated by a user of the computer. A conventional display monitor <b>232</b> having a display screen <b>235</b> is also connected to I/O circuitry <b>218</b> via cable <b>238</b>. A pointer (cursor) <b>240</b> is displayed on windows <b>244</b> of the screen <b>235</b> and its position is controllable via the mouse <b>230</b> or the keyboard <b>224</b>, as is well-known. Typically, the I/O circuitry <b>218</b> receives information, such as control and data signals, from the mouse <b>230</b> and keyboard <b>224</b>, and provides that information to the CPU <b>210</b> for display on the screen <b>235</b> or, as described further herein, for transfer over the Internet <b>250</b>.
0055<figref idref="DRAWINGS">FIG. 3</figref> illustrates a typical hardware configuration of a server <b>300</b> of the network system <b>100</b>. The server <b>300</b> has many of the same units as employed in the client <b>200</b>, including a CPU <b>310</b>, a memory <b>314</b>, and I/O circuitry <b>318</b>, each of which are interconnected by bidirectional buses <b>312</b> and <b>316</b>. Also, the I/O circuitry connects the computer to computer networks <b>350</b> via a bidirectional bus <b>322</b>. These units are configured to perform functions similar to those provided by their corresponding units in the computer <b>200</b>. In addition, the server typically includes a mass storage unit <b>320</b>, such as a disk drive, connected to the I/O circuitry <b>318</b> via bidirectional bus <b>324</b>.
0056It is to be understood that the I/O circuits within the computers <b>200</b> and <b>300</b> 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 <b>200</b> and server <b>300</b>.
0057The computers are preferably personal computers of the Macintosh® 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®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® System 7®, IBM OS2®, or the Microsoft® Windows® operating systems.
0058As noted, the present invention is based on a modular document computing arrangement as provided by an underlying software component architecture, rather than the typical application-based environment of prior computing systems. <figref idref="DRAWINGS">FIG. 4</figref> is a highly schematized diagram of the hardware and software elements of a layered component computing arrangement <b>400</b> that includes the novel network-oriented component system of the invention. At the lowest level there is the computer hardware, shown as layer <b>410</b>. Interfacing with the hardware is a conventional operating system layer <b>420</b> 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.
0059The software component architecture is preferably implemented as a component architecture layer <b>430</b>. Although it is shown as overlaying the operating system <b>420</b>, the component architecture layer <b>430</b> 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.
0060In accordance with the present invention, a novel network:oriented component layer <b>450</b> 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 <b>430</b>. These novel APIs are preferably delivered in the form of objects in a class hierarchy.
0061It should be noted that the network component layer <b>450</b> 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.
0062Using tools such as viewing editors, the component architecture layer <b>430</b> 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” <b>460</b> comprised of a viewing editor along with the data content. An example of the computing component <b>460</b> 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.
0063According to the invention, the network component layer <b>450</b> extends the functionality of the underlying component architecture layer <b>430</b> by defining network-oriented components <b>480</b>. 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 transfering 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.
0064A feature of the invention is the ability to easily extend, or replace, any of the components of the layered computing arrangement <b>400</b> 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 <b>450</b> and its underlying component architecture layer <b>430</b>. 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.
0065<figref idref="DRAWINGS">FIG. 4</figref> also illustrates the relationship of applications <b>490</b> to the elements of the layered computing arrangement <b>400</b>. Although they reside in the same “user space” as the components <b>460</b> and network components <b>480</b>, the applications <b>490</b> do not interact with these elements and, thus, interface directly to the operating system layer <b>420</b>. 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 <b>400</b> are designed to work together via the common component architecture layer <b>430</b> or, in the case of the network components, via the novel network component layer <b>450</b>.
0066Specifically, 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 provided by System 7 or Windows, that is preferably displayed on the screen <b>235</b> (<figref idref="DRAWINGS">FIG. 2</figref>) as a graphical display to facilitate interactions between the user and the computer, such as the client <b>200</b>. 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 <b>420</b>. These system routines, in turn, interact with the component architecture layer <b>430</b> to create the windows and graphical user interface elements, as described further herein.
0067The window environment is generally part of the operating system software <b>420</b> that includes a collection of utility programs for controlling the operation of the computer <b>200</b>. The operating system, in turn, interacts with the components to provide higher level 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 <b>450</b> or, as is typically the case, through the component architecture layer <b>430</b>. The operating system <b>420</b> 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 <b>250</b> or that the operating system display certain information on a window for presentation to the user.
0068<figref idref="DRAWINGS">FIG. 5</figref> is a schematic illustration of the interaction of a component <b>502</b>, software component layer <b>506</b> and an operating system <b>510</b> of a computer <b>500</b>, which is similar to, and has equivalent elements of, the client computer <b>200</b> of <figref idref="DRAWINGS">FIG. 2</figref>. As noted, the network component layer <b>450</b> (<figref idref="DRAWINGS">FIG. 4</figref>) is integrated with the component architecture layer <b>430</b> 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 <b>430</b> and <b>450</b> may be treated as a single software component layer <b>506</b>.
0069The component <b>502</b>, component layer <b>506</b> and operating system <b>510</b> interact to control and coordinate the operations of the computer <b>500</b> and their interaction is illustrated schematically by arrows <b>504</b> and <b>508</b>. In order to display information on a screen display <b>535</b>, the component <b>502</b> and component layer <b>506</b> cooperate to generate and send display commands to a window manager <b>514</b> of the operating system <b>510</b>. The window manager <b>514</b> stores information directly (via arrow <b>516</b>) into a screen buffer <b>520</b>.
0070The window manager <b>514</b> is a system software routine that is generally responsible for managing windows <b>544</b> 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.
0071Under control of various hardware and software in the system, the contents of the screen buffer <b>520</b> are read out of the buffer and provided, as indicated schematically by arrow <b>522</b>, to a display adapter <b>526</b>. The display adapter contains hardware and software (sometimes in the form of firmware) which converts the information in the screen buffer <b>520</b> to a form which can be used to drive a display screen <b>535</b> of a monitor <b>532</b>. The monitor <b>532</b> is connected to display adapter <b>526</b> by cable <b>528</b>.
0072Similarly, in order to transfer information as a packet over the computer networks, the component <b>502</b> and component layer <b>506</b> cooperate to generate and send network commands, such as remote procedure calls, to a network-specific interface <b>540</b> of the operating system <b>510</b>. The network interface comprises system software routines, such as “stub” procedure software and protocol stacks, that are generally responsible for formating the information into a predetermined packet format according to the specific network protocol used, e.g., TCP/IP or Apple-talk protocol.
0073Specifically, the network interface <b>540</b> stores the packet directly (via arrow <b>556</b>) into a network buffer <b>560</b>. Under control of the hardware and software in the system, the contents of the network buffer <b>560</b> are provided, as indicated schematically by arrow <b>562</b>, to a network adapter <b>566</b>. 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 <b>550</b>. The adapter <b>566</b> is connected to the computer networks <b>550</b> by cable <b>568</b>.
0074In 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.
0075As 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.
0076Objects 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.
0077The 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.
0078Polymorphism 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.
0079In accordance with the present invention, the component <b>502</b> and windows <b>544</b> are “objects” created by the component layer <b>506</b> and the window manager <b>514</b>, respectively, the latter of which may be an object-oriented program. Interaction between a component, component layer and a window manager is illustrated in greater detail in <figref idref="DRAWINGS">FIG. 6</figref>.
0080In general, the component layer <b>606</b> interfaces with the window manager <b>614</b> by creating and manipulating objects. The window manager itself may be an object which is created when the operating system is started. Specifically, the component layer creates window objects <b>630</b> that cause the window manager to create associated windows on the display screen. This is shown schematically by an arrow <b>608</b>. In addition, the component layer <b>606</b> creates individual graphic interface objects <b>650</b> that are stored in each window object <b>630</b>, as shown schematically by arrows <b>612</b> and <b>652</b>. Since many graphic interface objects may be created in order to display many interface elements on the display screen, the window object <b>630</b> communicates with the window manager by means of a sequence of drawing commands issued from the window object to the window manager <b>614</b>, as illustrated by arrow <b>632</b>.
0081As noted, the component layer <b>606</b> functions to embed components within one another to form a compound document having mixed data types and formats. Many different viewing editors may work together to display, or modify, the data contents of the document. In order to direct keystrokes and mouse events initiated by a user to the proper components and editors, the component layer <b>606</b> includes an arbitrator <b>616</b> and a dispatcher <b>626</b>.
0082The dispatcher is an object that communicates with the operating system <b>610</b> to identify the correct viewing editor <b>660</b>, 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 <b>626</b> receives these “human-interface” events from the operating system <b>610</b> (as shown schematically by arrow <b>628</b>) and delivers them to the correct viewing editor <b>660</b> via arrow <b>662</b>. The viewing editor <b>660</b> then modifies or displays, either visually or acoustically, the contents of the data types.
0083Although 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 modification. Consequently, a prior art approach has been to provide a developer with a set of predefined, 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 pre-defined classes and libraries are typically called “frameworks” and essentially provide a pre-fabricated structure for a working document.
0084For 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 provides architectural guidance and modeling and, at the same time, frees the developers to supply specific actions unique to the problem domain.
0085There are many kinds of frameworks 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).
0086While 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.
0087In 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 frameworks. 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.
0088A 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.
0089Referring again to <figref idref="DRAWINGS">FIG. 6</figref>, the window object <b>630</b> and the graphic interface object <b>650</b> are elements of a graphical user interface of a network component system having a customizable framework for greatly 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.
0090As 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.
0091In 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.
0092In 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.
0093<figref idref="DRAWINGS">FIG. 7</figref> illustrates a simplified class hierarchy diagram <b>700</b> of the base class CyberItem <b>702</b> used to construct the network component object <b>602</b>. In general, CyberItem is an abstraction that may represent resources available at any location accessible from the client <b>200</b>. 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.
0094For example, the class GopherItem <b>704</b> may be used to construct a network component object representing a “thing in Gopher space”, such as a Gopher directory, while the subclass WebItem <b>706</b> 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 <b>708</b> may be used to construct a network object representing a newsgroup and the class Article <b>710</b> is configured to encapsulate a network component object representing an article resource on an Internet server.
0095Since 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): <ul id="ul0001" list-style="none"><li id="ul0001-0001" num="0000"><ul id="ul0002" list-style="none"><li id="ul0002-0001" num="0096">GetRefCount ( );</li><li id="ul0002-0002" num="0097">IncrementRefCount ( );</li><li id="ul0002-0003" num="0098">Release ( );</li><li id="ul0002-0004" num="0099">SetUpFromURL ( );</li><li id="ul0002-0005" num="0100">ExternalizeContent ( );</li><li id="ul0002-0006" num="0101">StreamToStorageUnit ( );</li><li id="ul0002-0007" num="0102">StreamFromStorageUnit ( );</li><li id="ul0002-0008" num="0103">Clone ( );</li><li id="ul0002-0009" num="0104">Compare ( );</li><li id="ul0002-0010" num="0105">GetStringProperty ( );</li><li id="ul0002-0011" num="0106">SetDefaultName ( );</li><li id="ul0002-0012" num="0107">GetURL ( );</li><li id="ul0002-0013" num="0108">GetIconSuite ( );</li><li id="ul0002-0014" num="0109">CreateCyberStream ( );</li><li id="ul0002-0015" num="0110">Open ( );</li><li id="ul0002-0016" num="0111">OpenInFrame ( );</li><li id="ul0002-0017" num="0112">FindWindow ( ).</li></ul></li></ul>
0113In some instances, a CyberItem object may need to spawn a CyberStream object in order to obtain the actual data for the object it represents. <figref idref="DRAWINGS">FIG. 8</figref> illustrates a simplified class hierarchy diagram <b>800</b> of the base class CyberStream <b>802</b>. 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.
0114For 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 transfering information from one object to another. According to the invention, a GopherStream subclass <b>804</b> is derived from the CyberStream base class and encapsulates a network object that implements the Gopher protocol, while the class WebStream <b>806</b> may be used to construct a network component configured to operate in accordance with the HTTP protocol.
0115The 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): <ul id="ul0003" list-style="none"><li id="ul0003-0001" num="0000"><ul id="ul0004" list-style="none"><li id="ul0004-0001" num="0116">GetStreamStatus ( );</li><li id="ul0004-0002" num="0117">GetTotalDataSize ( );</li><li id="ul0004-0003" num="0118">GetStreamError ( );</li><li id="ul0004-0004" num="0119">GetStatusString ( );</li><li id="ul0004-0005" num="0120">OpenWithCallback ( );</li><li id="ul0004-0006" num="0121">Open ( );</li><li id="ul0004-0007" num="0122">GetBuffer ( );</li><li id="ul0004-0008" num="0123">ReleaseBuffer ( );</li><li id="ul0004-0009" num="0124">Abort ( ).</li></ul></li></ul>
0125<figref idref="DRAWINGS">FIG. 9</figref> is a simplified class hierarchy diagram of the base class CyberExtension <b>902</b> which represents additional behaviors provided to components of the underlying software component architecture. Specifically, CyberExtensions 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 <b>902</b> operates in connection with a Component base class <b>906</b> through their respective subclasses BaseExtension <b>904</b> and BaseComponent <b>908</b>.
0126The 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 CyberItem 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.
0127In accordance with the invention, the class Gopher-Browser <b>910</b> may be used to construct a Gopher-like network browsing component and the class WebBrowser <b>912</b> may be used to construct a Web-like network browsing component. Likewise, a TextViewer subclass <b>918</b> may encapsulate a network component configured to display text and a Picture Viewer subclass <b>920</b> may construct a component for displaying pictures. The methods associated with the CyberExtension class include (the arguments have been omitted for simplicity):
0128<tables id="TABLE-US-00001" num="00001"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="28pt" align="left" /><colspec colname="2" colwidth="189pt" align="left" /><thead><row><entry namest="1" nameend="2" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /><entry>ICyberExtension ( );</entry></row><row><entry /><entry>Components displaying the contents of CyberItem object</entry></row><row><entry /><entry>SetCyberItem ( );</entry></row><row><entry /><entry>GetCyberItem ( );</entry></row><row><entry /><entry>GetCyberItemWindow ( );</entry></row><row><entry /><entry>IsCyberItemSelected ( );</entry></row><row><entry /><entry>GetSelectedCyberItems ( );</entry></row><row><entry /><entry>Notebook and Log Tools</entry></row><row><entry /><entry>AddCyberItemToLog ( );</entry></row><row><entry /><entry>ShowLogWindow ( );</entry></row><row><entry /><entry>IsLogWindowShown ( );</entry></row><row><entry /><entry>AddCyberItemToNotebook ( );</entry></row><row><entry /><entry>AddCyberItemsToNotebook ( );</entry></row><row><entry /><entry>ShowNotebookWindow ( );</entry></row><row><entry /><entry>IsNotebookWindowShown ( );</entry></row><row><entry /><entry>SetLogFinger ( );</entry></row><row><entry /><entry>ClearLogFinger ( );</entry></row><row><entry /><entry>Notebook and Log Menu Handlers</entry></row><row><entry /><entry>InstallServicesMenu ( );</entry></row><row><entry /><entry>AdjustMenus ( );</entry></row><row><entry /><entry>DoCommand ( ).</entry></row><row><entry namest="1" nameend="2" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0129In summary, the novel network system described herein 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. 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.
0130While 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.
0131The 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. Therefore, 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.
Contents6
10 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| EP0631456A2 | Cites | European Patent Office (EPO) | Applicant |
| GB2242293A | Cites | United Kingdom | Applicant |
| US5297249A | Cites | United States of America | Applicant |
| US5339430A | Cites | United States of America | Applicant |
| US5481666A | Cites | United States of America | Applicant |
| US5499343A | Cites | United States of America | Search report |
| US5530852A | Cites | United States of America | Applicant |
| US5537526A | Cites | United States of America | Applicant |
| US5548722A | Cites | United States of America | Applicant |
| US5581686A | Cites | United States of America | Applicant |
| US5584035A | Cites | United States of America | Applicant |
| US5634129A | Cites | United States of America | Applicant |
| US5669005A | Cites | United States of America | Applicant |
| US6564270B1 | Cites | United States of America | Search report |
| EP631456A2 | Cites | European Patent Office (EPO) | Third party observation |
| GB2242293 | Cites | United Kingdom | Third party observation |
| Andert, Glerk; “Object-Frameworks in the Taligent OS”, IEEE electronic Library, pp. 112-121, 1994. | Non-patent | – | Third party observation |
| Arnold, E.C. 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. | Non-patent | – | Third party observation |
| Bonner, Paul, “Component software: putting the pieces together”, Computer Shopper, Sep. 1994, v14, n9, p. 532. | Non-patent | – | Third party observation |
| Develop, The Apple Technical Journal, “Building an OpenDoc Part Handler”, Issue 19, Sep. 1994, pp. 6-16. | Non-patent | – | Third party observation |
| Goldberg, S.H. and J.A. Mounton, Jr. A Base for Portable Communications Software, IBM Systems Journal, vol. 30 (1991) No. 3, Armonk, NY, pp. 259-279. | Non-patent | – | Third party observation |
| Gruman, Galen, “OpenDoc & OLE 2.0”, MacWorld, Nov. 1994, v11, n11, p. 96. | Non-patent | – | Third party observation |
| Harkey et al, “Object component suites”, Datamation, Feb. 15, 1995, v41, n3 p. 44. | Non-patent | – | Third party observation |
| Helm et al, “Integrating information retrieval and domain specific approaches for browsing and retrieval in object-oriented class libraries”, ACM Digital Library, 1991. | Non-patent | – | Third party observation |
| Hess, Robert, “Cyberdog to fetch Internet Resources for Open Doc apps.” MacWeek, Nov. 7, 1994, v8, n44 p. 44. | Non-patent | – | Third party observation |
| “Leveraging object-oriented frameworks”, Taligent white paper, 1993. | Non-patent | – | Third party observation |
| Lippman, Stanley, “C++ Primer,” 2<sup>nd </sup>edition, Addison-Wesley, 1991, pp. 394-397. | Non-patent | – | Third party observation |
| Monnard et al; An object-oriented scripting environment for the WEBSs electronic book system, ACM Digital Library, 1992. | Non-patent | – | Third party observation |
| Norr, Henry, “Cyberdog could be a breakthrough if it's Kept on a leash”, MacWeek, Nov. 14, 1994, v8, n45, p. 50. | Non-patent | – | Third party observation |
| Piersol, Kurt; A Close-Up of OpenDoc; AIXpert, Jun. 1994. | Non-patent | – | Third party observation |
| Potel et al; The Architecture of the Taligent System; Dr. Dobbs Journal on CD-ROM, SP 94. | Non-patent | – | Third party observation |
| Prosise, Jeff, “Much ado about object”, PC Magazine, Feb. 7, 1995, v14, n3; p. 257. | Non-patent | – | Third party observation |
| Reinhardt, Andy, “The Network with Smarts,” BYTE, Oct. 1994, pp. 51-64. | Non-patent | – | Third party observation |
| Rush, Jeff; OpenDoc; Dr. Dobb's Journal on CD-ROM, SP 94. | Non-patent | – | Third party observation |
| Schmidt et al; “An object-oriented framework for developing network server daemons”, C+++ World Conference, pp. 1-15, Oct. 1993. | Non-patent | – | Third party observation |
| Spiegel, Leo, “OLE promises barrier-free computing”, InfoWorld, Mar. 6, 1995, v17, n10, p. 53. | Non-patent | – | Third party observation |
| Helm et al; “Integrating information retrieval and domain specific approaches for browsing and retrieval in object-oriented class libraries”, ACM Digital Library, 1991. | Non-patent | – | Search report |
| Monnard et al; An object-oriented scripting environment for the WEBSs electronic book system' ACM Digital Library, 1992. | Non-patent | – | Search report |
| Norr, Henry. “Cyberdog could be a breakthrough if it's Kept on a leash”, <i>MacWeek</i>, Nov. 14, 1994, v8, n45, p. 50. | Non-patent | – | Search report |
| Prosise, Jeff, “Much ado about object”, <i>PC Magazine</i>, Feb. 7, 1995, v14, n3, p. 257. | Non-patent | – | Search report |
| 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. | Non-patent | – | Third party observation |
| 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. | Non-patent | – | Third party observation |
| Helm et al; "Integrating information retrieval and domain specific approaches for browsing and retrieval in object-oriented class libraries", ACM Digital Library, 1991. | Non-patent | – | Search report |
| Monnard et al; An object-oriented scripting environment for the WEBSs electronic book system' ACM Digital Library, 1992. | Non-patent | – | Search report |
| Norr, Henry. "Cyberdog could be a breakthrough if it's Kept on a leash", MacWeek, Nov. 14, 1994, v8, n45, p. 50. | Non-patent | – | Search report |
| Prosise, Jeff, "Much ado about object", PC Magazine, Feb. 7, 1995, v14, n3, p. 257. | Non-patent | – | Search report |
| Andert, Glerk; "Object-Frameworks in the Taligent OS", IEEE electronic Library, pp. 112-121, 1994. | Non-patent | – | Applicant |
| Arnold, E.C. 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. | Non-patent | – | Applicant |
| Bonner, Paul, "Component software: putting the pieces together", Computer Shopper, Sep. 1994, v14, n9, p. 532. | Non-patent | – | Applicant |
| Develop, The Apple Technical Journal, "Building an OpenDoc Part Handler", Issue 19, Sep. 1994, pp. 6-16. | Non-patent | – | Applicant |
| Goldberg, S.H. and J.A. Mounton, Jr. A Base for Portable Communications Software, IBM Systems Journal, vol. 30 (1991) No. 3, Armonk, NY, pp. 259-279. | Non-patent | – | Applicant |
| Gruman, Galen, "OpenDoc & OLE 2.0", MacWorld, Nov. 1994, v11, n11, p. 96. | Non-patent | – | Applicant |
| Harkey et al, "Object component suites", Datamation, Feb. 15, 1995, v41, n3 p. 44. | Non-patent | – | Applicant |
| Helm et al, "Integrating information retrieval and domain specific approaches for browsing and retrieval in object-oriented class libraries", ACM Digital Library, 1991. | Non-patent | – | Applicant |
| Hess, Robert, "Cyberdog to fetch Internet Resources for Open Doc apps." MacWeek, Nov. 7, 1994, v8, n44 p. 44. | Non-patent | – | Applicant |
| "Leveraging object-oriented frameworks", Taligent white paper, 1993. | Non-patent | – | Applicant |
| Lippman, Stanley, "C++ Primer," 2nd edition, Addison-Wesley, 1991, pp. 394-397. | Non-patent | – | Applicant |
| Monnard et al; An object-oriented scripting environment for the WEBSs electronic book system, ACM Digital Library, 1992. | Non-patent | – | Applicant |
| Norr, Henry, "Cyberdog could be a breakthrough if it's Kept on a leash", MacWeek, Nov. 14, 1994, v8, n45, p. 50. | Non-patent | – | Applicant |
| Piersol, Kurt; A Close-Up of OpenDoc; AIXpert, Jun. 1994. | Non-patent | – | Applicant |
| Potel et al; The Architecture of the Taligent System; Dr. Dobbs Journal on CD-ROM, SP 94. | Non-patent | – | Applicant |
| Prosise, Jeff, "Much ado about object", PC Magazine, Feb. 7, 1995, v14, n3; p. 257. | Non-patent | – | Applicant |
| Reinhardt, Andy, "The Network with Smarts," BYTE, Oct. 1994, pp. 51-64. | Non-patent | – | Applicant |
| Rush, Jeff; OpenDoc; Dr. Dobb's Journal on CD-ROM, SP 94. | Non-patent | – | Applicant |
| Schmidt et al; "An object-oriented framework for developing network server daemons", C+++ World Conference, pp. 1-15, Oct. 1993. | Non-patent | – | Applicant |
| Spiegel, Leo, "OLE promises barrier-free computing", InfoWorld, Mar. 6, 1995, v17, n10, p. 53. | Non-patent | – | Applicant |
| 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. | Non-patent | – | Applicant |
| 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. | Non-patent | – | Applicant |
9 members in 5 offices
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 43537795 | United States of America | A | |
| 40878903 | United States of America | A |
Members9
| Document | Office | Kind | |
|---|---|---|---|
| WO9635285A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU5384196A | Australia | A | |
| EP0777943A1 | European Patent Office (EPO) | A1 | |
| US6212575B1 | United States of America | B1 | |
| EP0777943B1 | European Patent Office (EPO) | B1 | |
| DE69635337D1 | Germany | D1 | |
| DE69635337T2 | Germany | T2 | |
| USRE39486E | United States of America | E | |
| USRE43438EThis record | United States of America | E |
68 transactions on the USPTO file
Allowed after 2 non-final rejections.
- Non-final rejections
- 2
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Reasons for AllowanceEX.R | EX.R | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail-Petition Decision - GrantedMPTGR | MPTGR | |
| Petition Decision - GrantedPTGR | PTGR | |
| Petition EnteredPET. | PET. | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail-Petition Decision - DismissedMPTDI | MPTDI | |
| Petition Decision - DismissedPTDI | PTDI | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Petition EnteredPET. | PET. | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Paralegal or electronic terminal disclaimer approvedP574 | P574 | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Terminal Disclaimer FiledDIST | DIST | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Terminal Disclaimer FiledDIST | DIST | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Transfer Inquiry to GAUTI1050 | TI1050 | |
| Filing Receipt - UpdatedFLRCPT.U | FLRCPT.U | |
| Application Is Now CompleteCOMP | COMP | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Mail-Petition Decision - GrantedMPTGR | MPTGR | |
| Petition Decision - GrantedPTGR | PTGR | |
| Additional Application Filing FeesADDFLFEE | ADDFLFEE | |
| A statement by one or more inventors satisfying the requirement under 35 USC 115, Oath of the ApplicOATHDECL | OATHDECL | |
| Petition EnteredPET. | PET. | |
| Mail-Petition Decision - DismissedMPTDI | MPTDI | |
| Petition EnteredPET. | PET. | |
| Mail-Petition Decision - DismissedMPTDI | MPTDI | |
| Cleared by OIPE CSRL194 | L194 | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Cleared by OIPE CSRL194 | L194 | |
| Cleared by OIPE CSRL194 | L194 | |
| Petition EnteredPET. | PET. | |
| Notice of Reissue Published in Official GazetteNRE. | NRE. | |
| Cleared by OIPE CSRL194 | L194 | |
| Notice Mailed--Application Incomplete--Filing Date AssignedINCD | INCD | |
| Cleared by OIPE CSRL194 | L194 | |
| Preliminary AmendmentA.PE | A.PE | |
| Initial Exam Team nnIEXX | IEXX |
2 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Fee paymentFPAY | FPAY | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP |
Numbers
- Publication
- RE043438
- Application
- 11436188
Titles
- English
- Extensible, replaceable network component system
Classification
- CPC, 5
- H04L67/02
- G06F8/20
- G06F8/315
- H04L69/325
- H04L9/40
- IPC, 2
- G06F13 00
- H04L69 325