WO2001037087A2 - Internet component object method - Google Patents
Internet component object method Download PDFInfo
- Publication number
- WO2001037087A2 WO2001037087A2 PCT/US2000/031519 US0031519W WO0137087A2 WO 2001037087 A2 WO2001037087 A2 WO 2001037087A2 US 0031519 W US0031519 W US 0031519W WO 0137087 A2 WO0137087 A2 WO 0137087A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- server
- environment
- application programming
- programming interface
- service application
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/543—User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
Definitions
- the present invention relates to adapters (i.e., software components) that expose an interface to an underlying service, and more particularly, to adapters that function in both client-server environments and web environments.
- the present invention provides an Internet component object method that enables an adapter to operate in either a client-server architecture or three-tier network computing architecture.
- the adapter includes a service application programming interface class that is instantiated in a client workstation operating in a client-server environment or in a client workstation and web server operating in a web environment.
- a method in the service application programming interface class enables the computer system in which it was instantiated to determine the type of environment in which the computer system is operative. Based upon this determination, the logic of the adapter will follow one of two distinct paths of execution. If the computer system is operating in a client-server environment, then a direct call is made to a service application programming interface.
- a hypertext transfer protocol request is sent to a web server to remotely access a service application programming interface.
- the adapter of the present invention can be run in two physical places (e.g., a client workstation and a web server).
- FIG. 1 is an architecture diagram of the interaction of adapters in a client-server environment and in a three-tier network-computing environment.
- FIG. 2 illustrates an adapter architecture according to the present invention.
- FIG. 3 is a flowchart of the operation of an adapter architecture in a client-server environment and in a three-tier network-computing environment.
- an adapter that exposes an interface (i.e., a set of properties and methods) to an underlying service is typically implemented as a "heavyweight” component.
- a “heavyweight” component is any component that directly makes use of a bulky service (in terms of its code size) such as a database service (e.g., ActiveX Data Objects (ADO), Data Access Objects (DAO), Open Database Connectivity (ODBC), etc.) or a client-server application programming interface (API).
- ADO ActiveX Data Objects
- DAO Data Access Objects
- ODBC Open Database Connectivity
- “Lightweight” components on the other hand, have a relatively small memory footprint and indirectly make use of a bulky service by accessing the service remotely via some form of inter-process communication (IPC).
- IPC inter-process communication
- Adapters in a client-server environment are typically implemented to directly make use of an underlying core engine and/or database engine.
- the client-server adapter communicates directly with the server via Transmission Control Protocol/Internet Protocol (TCP/IP) sockets.
- TCP/IP Transmission Control Protocol/Internet Protocol
- client-server adapters are not well suited for web- based applications that make use of graphical user interface (GUI) controls in a web browser. Having the adapter directly use the underlying core components causes the web-based application to be large due to the number of software components that need to be installed on the machine before the web-based application can run.
- client-server adapters create problems for network managers who are responsible for security firewall and proxy issues. Most firewalls and proxies allow only a few protocols (such as the hypertext transfer protocol (HTTP)) and ports (e.g., port 80) to be enabled for obvious security reasons.
- HTTP hypertext transfer protocol
- an Internet component object method is defined that enables an adapter to function both in a client-server environment as a traditional "heavyweight” component and in a web environment as a "lightweight” component.
- This universal adapter greatly increases code re-use and hence the maintainability of the system software.
- the adapter of the present invention is operative to discover the environment in which it is running. Based upon this environment discovery, the adapter may either (1) make a call directly to the underlying service API or (2) remotely access the service API by issuing an HTTP request to a web server.
- FIG. 1 illustrates a general three-tiered computing architecture. Illustrated within the tree-tiered computing architecture of FIG. 1 is the two-tier client-server model and the three-tier network computing architecture (NCA) model.
- the two-tier client-server model is illustrated by the interaction between client workstation 110 and server 140.
- client-server (C/S) application 111 via control component 112 (e.g., OCX controls), calls into adapter component 1 13 A.
- Adapter component 1 13A makes direct use of underlying service API 1 14A to access core engine/database engine 141 on server 140.
- the access of core engine/database engine 141 on server 140 by service API component 1 14A is illustrated as communication 115 in FIG. 1.
- the NCA model is illustrated by the interaction between client workstation 120, web server 130, and server 140.
- web application 121 via control component 122, calls into adapter component 113B.
- Adapter component 1 13B makes indirect use of underlying service API 1 14B by issuing an HTTP request to web server component 131.
- the issuance of HTTP request from adapter 113B to web server component 131 is illustrated as communication 125 in FIG. 1.
- Web server component 131 dispatches the request to a handler 132 (e.g., Active Server Pages (ASP), Internet Service API (ISAPI) extensions, Common
- handler 132 e.g., Active Server Pages (ASP), Internet Service API (ISAPI) extensions, Common
- Adapter component 113C then makes direct use of underlying service API 114B to access core engine/database engine 141 on server 140.
- the access of core engine/database engine 141 on server 140 by service API component 1 14B is illustrated as communication 135 in FIG. 1.
- handler 132 delivers the results to client workstation 120 in an HTTP response.
- adapter 1 13 of the present invention can be described as a "split adapter.”
- the term “split adapter” is used to describe the fact that adapter 113 can be run in two physical places (i.e., client workstation 110/120 and web server 130) and that its logic is split into two distinct paths of execution depending on whether adapter 1 13 is running in a client-server environment or in a web environment. More specifically, adapter 1 13 A, 113B, and 1 13C represent separate instantiations of classes defined in adapter 113.
- FIG. 2 illustrates the internal architecture of adapter 1 13. In FIG. 2, the term
- adapter user is used to refer to any software component that creates instances of the classes defined in adapter 1 13 and makes use of the properties and methods defined within those classes. Accordingly, adapter user 210 can represent an end-user application, a control, or some other component.
- Each adapter 1 13 consists of several component classes 220-1 to 220-N whereby each component class 220- 1 to 220-N exposes methods and properties to adapter user 210.
- Each method or property of component classes 220-1 to 220-N has the potential to call methods or functions in the underlying service API 1 14. In the present invention, all calls to the underlying service API 114 are split out into a separate class named ServiceAPI class 230.
- each method or property of component classes 220-1 to 220-N has the potential to call methods or functions in ServiceAPI class 230.
- a method of ServiceAPI class 230 can either make direct use of service API 1 14A or make indirect use of service API 1 14B by sending an HTTP request to web server 130 using, for example, the Microsoft Internet Transfer Control 240.
- This indirect call to service API 114B is processed by web server component 131 and handler 132. The request is then passed to a separate instance of service API class 230 that is running on web server 130.
- these separate instances of service API class 230 give rise to the term "split adapter.”
- FIG. 3 illustrates the operation of the adapter architecture of
- FIG. 2 in the context of the three-tiered computing architecture of FIG. 1.
- the flowchart of FIG. 3 begins at step 302 with adapter user 210 making a call into a property or method of component #N class 220-N.
- adapter user 210 can represent either control component 112 on client workstation 1 10 or control component 122 on client workstation 120.
- component #N class 220-N requires use of an underlying service, at step 304, it makes a call into a method of ServiceAPI class 230 that is instantiated on either client workstation 110 or client workstation 120.
- the method of ServiceAPI class 230 may make direct use of service API 114 or make indirect use of service API 1 14 by sending an HTTP request to web server component 131 using Internet Transfer Control 240.
- the choice of action by the method of Service API class 230 is dependent upon a determination of environment type (i.e., client-server environment or web environment) at step 306. If it is determined, at step 306, that adapter 1 13 is operative on client workstation 110 as part of a client-server environment (i.e., adapter 1 13 A), then the method of ServiceAPI class 230 instantiated on client workstation 1 10, at step 308, makes a direct call to underlying service API 1 14A, which then accesses core engines/database engines 141. This communication is illustrated as communication 115 in FIG. 1. The results of the API call are then returned in a communication from server 140 to client workstation 110 (not shown) at step 310.
- environment type i.e., client-server environment or web environment
- step 306 If it is determined, at step 306, that adapter 113 is operative on client workstation 120 as part of a web environment (i.e., adapter 113B), then the method of ServiceAPI class 230 instantiated at client workstation 120, at step 312, makes an indirect call to underlying service API 1 14B by issuing an HTTP request to web server 130.
- This HTTP request is illustrated as communication 125 in FIG. 1.
- web server component 131 extracts the parameters from the HTTP request and dispatches it to handler 132.
- handler 132 operating as adapter user 210, makes a call into a property or method of component #N class 220-N. If component #N class 220-N requires use of an underlying service, at step 318, it makes a call into a method of ServiceAPI class 230 that is instantiated on web server 130.
- the same determination of the environment type at step 306 is performed at step 320.
- the primary path of execution is as a client-server environment.
- web server 130 is the computer that will make a direct call to service API 114B.
- the branch of execution as a web server environment is not required.
- a direct call is made, at step 322, to underlying service API 1 14B, which then accesses core engines/database engines 141. This communication is illustrated as communication 135 in FIG. 1.
- the results of the API call are then returned, at step 324, in a communication (not shown) from server 140 to web server 130, and subsequently to client workstation 120.
- Folder refers to a directory in the file system and a File object refers to an actual data file.
- the properties of a Folder object might include its name, full path, size, creation date, modification date, last access date, etc. For the purposes of this example, only two properties will be addressed, its name and full path.
- the Folder object consists of child items (i.e., subfolders) and it returns from its Childltems property a collection of Folder objects that represent the subfolders contained in the folder.
- Child items i.e., subfolders
- the g ServiceAPI variable is a global which represents a single instance of ServiceAPI class 230. This variable is declared as follows.
- the primary portions of the split adapter code are contained in ServiceAPI class 230.
- the example ServiceAPI method GetChildren is defined as follows.
- split adapter 1 13 will support applications operating in either a client- server environment or in a web environment.
- adapter 113 includes a mechanism for determining whether it is (1) running in a client- server environment and needs to make direct calls into the underlying service API 1 14 or (2) running in a web environment and needs to make indirect use of the underlying service API 1 14 via HTTP.
- a TreevEnvironment class is added to adapter component 113.
- This TreevEnvironment class provides two properties, ServerAddress and TCPPortNumber, which represent the two key attributes required by the web environment: (1) the address of the web server (e.g., www.site.com) and (2) the TCP port number to be used (e.g., 1730).
- the default attributes will be a web server address containing an empty string ("") and a TCP port number of 80.
- An empty web server address serves to indicate that no web server 130 exists and that adapter 113 should make direct calls to the underlying service API 1 14.
- the two attributes are implemented as static class members (not instance variables) such that any component running in the same process will have access to the same information.
- adapter 1 13 determines whether or not it should make a direct call to the underlying service API 1 14 or should make indirect use of the underlying service API 1 14 via HTTP.
- adapter 113 includes the following line of code in a code module (e.g., GLOBALS.BAS).
- This line of code instantiates a global instance of the TreevEnvironment class that can be used by adapter 113 to determine the need for a direct call to the underlying service API 1 14 versus an indirect use of the underlying service API 114 via an HTTP request.
- the environment determination process is effected by executing code similar to the following:
- ServerAddress and TCPPor Number properties will be set to the correct values when web application 121 is started on client workstation 120. Note that client-server application 1 1 1 does not need to set these properties since they have reasonable defaults.
- the VBByteArray class will provide the basic means of implementing persistence to byte arrays. It will consist of LoadObject and SaveObject methods to handle the reading and writing of objects to the underlying byte array. It will also consist of a Bytes property which will allow the caller to either get/set the byte array that is to be operated on. In addition, it will implement an interface allowing it handle the reading and writing of any variant type of data. Once an object has been persisted to a byte array, it can be written across any communication channel.
- Internet Transfer Form FRMINET.FRM
- This Visual Basic (VB) form contains a single Microsoft Internet Transfer Control and is intended to be used in each and every adapter 113 to provide the basic means to support transfer of data between a client workstation 120 and web server 130 via HTTP.
- the GetChildren method of ServiceAPI class 230 examines the ServerAddress property (see code line 10) to determine whether to make a direct call to the underlying service API 1 14 or to make an indirect call to the underlying service API 1 14 by issuing an HTTP request to web server 130.
- the method utilizes a global instance of the Scripting.FileSystemObject class (i.e., g_FileSystem) to enumerate the subfolders of the current path and return a collection of Folder objects (see code lines 1 1-30).
- g_FileSystem a global instance of the Scripting.FileSystemObject class
- the method issues an HTTP request to web server 130, reads the response into a byte array, and uses the VBByteArray class to load the object represented by this byte array (see code lines 32-40).
- the GetChildren method of ServiceAPI class 230 exists as a separate instantiation on either client workstation 110, 120 or web server 130.
- the GetChildren method determines at code line 10 that the ServerAddress property has been set to the default value (i.e., "").
- the GetChildren method then proceeds to make a direct call to underlying service API 114 at code lines 1 1-30.
- the GetChildren method determines at code line 10 that the ServerAddress property has been set to the address of web server 130. The GetChildren method then proceeds to make an indirect API call to underlying service API 1 14 at code lines 32-40. This indirect call includes the issuance of an HTTP request at code lines 33-35.
- the GetChildren method determines at code line 10 that the ServerAddress property has been set to the default value (i.e., ""). The GetChildren method then proceeds to make a direct call to underlying service API 114 at code lines 1 1-30.
- the environment determination process described above has been described using the defined TreevEnvironment class, other methods of determining the operating environment of client workstation 1 10, 120 or web server 130 would be apparent to one of ordinary skill in the relevant art.
- the present invention cover the modifications and variations of this invention provided they come within the scope of the appended claims and their equivalents.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
Abstract
Description
Claims
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU16158/01A AU1615801A (en) | 1999-11-19 | 2000-11-17 | Internet component object method |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US44334499A | 1999-11-19 | 1999-11-19 | |
US09/443,344 | 1999-11-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2001037087A2 true WO2001037087A2 (en) | 2001-05-25 |
WO2001037087A3 WO2001037087A3 (en) | 2002-06-06 |
Family
ID=23760425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2000/031519 WO2001037087A2 (en) | 1999-11-19 | 2000-11-17 | Internet component object method |
Country Status (2)
Country | Link |
---|---|
AU (1) | AU1615801A (en) |
WO (1) | WO2001037087A2 (en) |
-
2000
- 2000-11-17 WO PCT/US2000/031519 patent/WO2001037087A2/en active Application Filing
- 2000-11-17 AU AU16158/01A patent/AU1615801A/en not_active Abandoned
Non-Patent Citations (4)
Also Published As
Publication number | Publication date |
---|---|
AU1615801A (en) | 2001-05-30 |
WO2001037087A3 (en) | 2002-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6370436B1 (en) | Distributed objects for a computer system | |
US5987517A (en) | System having a library of protocol independent reentrant network interface functions for providing common calling interface for communication and application protocols | |
US5958013A (en) | Apparatus, methods and computer program products for conducting a persistent session with a host-based application | |
AU730088B2 (en) | A system, method and article of manufacture for seamless, server application support of network and non-network client terminals | |
US6434598B1 (en) | Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system | |
EP0648354B1 (en) | Method and system for implementation-independent interface specification | |
US6038590A (en) | Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system | |
US7330878B2 (en) | Method and system for remote control of a local system | |
US6085198A (en) | Integrated three-tier application framework with automated class and table generation | |
US5964836A (en) | Apparatus, methods and computer program products for managing web-page-embedded sessions with a host-based application | |
US5768510A (en) | Object-oriented system, method and article of manufacture for a client-server application enabler system | |
CA2279382C (en) | Web request broker controlling multiple processes | |
US7496658B2 (en) | Systems and methods for testing network services | |
US6266709B1 (en) | Object-oriented system, method and article of manufacture for a client-server failure reporting process | |
US6272555B1 (en) | Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system | |
EP0962860A2 (en) | Apparatus and method for increasing the performance of JAVA programs running on a server | |
EP0978976B1 (en) | A method and system for an application dispatcher for server application | |
US6920410B2 (en) | Systems and methods for testing a network service | |
JPH09231076A (en) | Method and device for making general purpose stub capable of aligning/align-releasing data of data format intrinsic to object reference | |
US9800475B2 (en) | Message oriented construction of web services | |
KR20010052263A (en) | On-board system comprising network interface means, and method for activating applications located in said on-board system | |
WO2001037087A2 (en) | Internet component object method | |
JP2003076563A (en) | Distributed object middleware connection method and recording medium with program recorded thereon and program | |
Goddard et al. | WebVector: agents with URLs | |
Baeckstroem et al. | Design of a contact service in a Jini-based spontaneous network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A2 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A2 Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
AK | Designated states |
Kind code of ref document: A3 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A3 Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG |
|
REG | Reference to national code |
Ref country code: DE Ref legal event code: 8642 |
|
122 | Ep: pct application non-entry in european phase |