WO2001067244A2 - Tier-independent data access framework - Google Patents
Tier-independent data access framework Download PDFInfo
- Publication number
- WO2001067244A2 WO2001067244A2 PCT/US2001/005399 US0105399W WO0167244A2 WO 2001067244 A2 WO2001067244 A2 WO 2001067244A2 US 0105399 W US0105399 W US 0105399W WO 0167244 A2 WO0167244 A2 WO 0167244A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- client
- server
- tier
- communication
- 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/546—Message passing systems or structures, e.g. queues
-
- 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/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
Definitions
- This invention relates to the fields of computer systems and data access application programs. More particularly, a system and methods are provided for developing and operating a tier- independent data access application.
- Today's application development tools generally allow an application (e.g., a program for accessing and/or manipulating data) to be developed and operate only within a computing environment having a specified form.
- one development tool may be of use in designing an application for a two-tier environment (e.g., a client/server architecture) while a different tool is used for an application that will run on a stand-alone computer system.
- an application developed for one type of environment e.g., two-tier
- cannot operate in a different environment e.g., three-tier
- database applications evolved from stand-alone applications to two-tier (e.g., client/server) environments, three-tier environments are now becoming more and more popular.
- An illustrative three-tier environment for database operations may consist of a user's computer system (e.g., a client), a middle-tier computer server and a database server containing a database or other collection of data.
- Present application development tools for developing a data access application for a two-tier environment or a three-tier environment yield applications that are generally limited to the target environment.
- An application developed and operated in a two-tier environment cannot, without substantial alteration, operate in a three-tier environment, and vice versa.
- CORBA Common Object Request Brokering Architecture
- RPC Remote Procedure Call
- EJB Enterprise Java Beans
- RMI Remote Method Invocation
- a related problem in an environment having multiple tiers is that an application or portion of an application must typically be developed and tested on the tier on which it will ultimately operate. Otherwise, it must be substantially altered when transported to the final operating tier. Again, this problem is due to the inability of existing application environments to make the effects of data operations and related events uniform between participating tiers (e.g., a client and a middle tier server).
- Another method of attempting to promote programming uniformity among multiple- tier environments is to simply synchronize data between inter-connected computer systems.
- some of the data maintained or cached by a server may be replicated on a client system.
- This simply copies data states and does little to make an application transportable or uniform between tiers.
- synchronizing data states on multiple tiers does not maintain the information necessary to re-create or audit a particular transaction that caused data to change states. For example, although a data change effected in one tier may be copied to another, side effects or events related to the data change are not, thereby limiting the uniformity of the application between tiers.
- an application development framework is desired in which an application may be developed and implemented for one environment (e.g., two-tier or client/server) and yet be readily usable in another environment (e.g., three-tier) and vice- versa.
- an application may be developed and implemented for one environment (e.g., two-tier or client/server) and yet be readily usable in another environment (e.g., three-tier) and vice- versa.
- such a system may ensure that the operation or behavior of a particular data access application is highly uniform between different tiers.
- a data operation requested by a user may be effected on a first tier and the effects or results of the operation are applied to a second tier as if the operation were native to the second tier.
- the programming model will work within the resource constraints of a particular tier (e.g., such as a "thin” client) and communication (e.g., network) performance between tiers is maintained at an acceptable level.
- a particular tier e.g., such as a "thin” client
- communication e.g., network
- a system and methods are provided for developing and/or operating a data access application in either a two-tier or three-tier computing environment without modification.
- an application developed within an application development framework described below functions in either environment simply by specifying an appropriate switch or parameter when the application is executed.
- a cache is implemented on a client system (e.g., a user's computer system), which may be a "thin" client.
- the "thin" cache is populated with data provided by a server (e.g., a middle tier server or database server).
- the amount of data provided by the server to the client depends on the size of the cache and/or the amount of data needed by the client to execute a user's requested operation.
- the client cache may be kept small, thereby avoiding the need for extensive resources on the client.
- Communications between tiers are made efficient by focusing on a higher level than individual data values, as was done in previous application development environments.
- inter-tier communications may be performed at the level of database rows or records rather than individual fields or attributes in a row.
- the entire record may be transferred in one communication.
- the number of inter-tier communications are further limited in one embodiment of the invention by using only one round-trip communication to effect a single data operation.
- a client system For example, if a client system requires data from a server in order to meet a user's request, the request is passed to the appropriate server, which locates and loads all of the requested data (or as much as the client can store in its cache or display for the user at one time) along with any related events into a return communication.
- the client receives the return communication and its contents are used to recreate the actions/events that occurred on the server to satisfy the request.
- the effects of the data operation are uniformly applied to both the server and client, even while keeping the effectiveness or efficiency of inter-tier communications at a high level.
- An event manager operates in one or more tiers (e.g., on a middle tier server and/or a client) in order to capture, recognize and report to another tier those events (e.g., data operations, exceptions) that occur on the host system.
- tiers e.g., on a middle tier server and/or a client
- events e.g., data operations, exceptions
- a lightweight proxy may call the corresponding method on the server.
- the event manager operating on the server captures the results of implementing the method and reports all of the effects of the call to the client in one communication, which is received and "replayed" or recreated on the client.
- FIGs. 1 A-C are block diagrams depicting illustrative multi-tier computing environments in accordance with an embodiment of the present invention.
- FIG. 2 illustrates one set of communications between a client and a middle tier server for effecting one data operation in accordance with an embodiment of the invention.
- FIGs. 3A-B comprise a flow chart demonstrating a method of executing a data operation within a data access framework according to a present embodiment of the invention.
- the techniques of the present invention might be implemented using a variety of technologies.
- the methods described herein may be implemented in software executing on a computer system, or implemented in hardware utilizing either a combination of microprocessors or other specially designed application specific integrated circuits, programmable logic devices, or various combinations thereof.
- the methods described herein may be implemented by a series of computer-executable instructions residing on a storage medium such as a carrier wave, disk drive, or computer-readable medium.
- Exemplary forms of carrier waves may take the form of electrical, electromagnetic or optical signals conveying digital data streams along a local network or a publicly accessible network such as the Internet.
- An embodiment of the present invention is particularly suited for use with Oracle
- a data access application may be designed and developed using the design-time module of Business Component for Java, hosted by Oracle Corporation's JDeveloper.
- JDeveloper is an interactive Java development environment that allows the developer to develop Java applications quickly and interactively.
- other programming tools or IDEs are also possible.
- the resulting data access application may then be operated in a computing environment that includes the run-time module of Business Component of Java.
- programming objects, controls and other tools are provided to interface with database management systems in order to access, manipulate and display data for users.
- employing such an embodiment of the invention allows a data access application to be developed and/or operate on virtually any type of computer system (e.g., desktop, workstation, a "thin" client, a server).
- the data access application promotes data uniformity (e.g., uniformity of data states and computing events) between tiers.
- the APIs Application Programming Interfaces
- the APIs Application Programming Interfaces
- Java Application Programming Interfaces
- Database applications and other applications for accessing data have evolved from centralized systems (e.g., a mainframe and dumb terminals) to today's client/server, two-tier and three-tier computing environments.
- client/server architectures both the client and server computers may possess sufficient resources for storing and/or manipulating data.
- Virtually all data access applications used in the centralized systems required extensive modification in order to function in a client/server or three-tier environment.
- a user application runs on a computer system and interacts with a separate database server to retrieve, manipulate or otherwise access stored data.
- the user application contains most of the business logic in this architecture.
- a user may initiate data operations on his or her client system (e.g., a laptop, notebook or desktop computer), but a middle tier server is now interposed between the client and the database server.
- the middle tier server may, for example, comprise an application server operating a data access application that is designed to manage access to the data stored on a database server.
- this architecture improves data security, auditing and accountability.
- a primary difference between two-tier and three-tier environments may be the location of most of the business logic employed or invoked by an application.
- a two-tier system it is in a user program operating on a client computer.
- a three-tier system it is in the middle tier server.
- an exemplary two-tier system may require each client computer to be relatively robust or rich in resources because it must execute complex business logic.
- the burden of executing most of the business logic is placed on the middle tier server, where it can be shared by multiple clients.
- three-tier environments may be more suitable for thin clients.
- a data access application may be developed for use, and then operate, in either a two-tier or three-tier environment.
- the application may be operated in either environment by simply specifying an appropriate parameter at the time the application is executed. For example, one switch or parameter may be specified if the application is to run in a two-tier mode, and another may be specified for a three-tier mode.
- a user operates a client computer system, which may be a "thin" client having few or limited resources.
- the user's computer system need not, however, be a thin client and one or more embodiments of the invention described herein will operate with robust client systems with little or no modification.
- One or more databases or other collections of data are maintained on a database server that, in a three-tier environment, is separated from client systems by a middle tier server.
- the middle tier server operates an application server program to manage access to the data.
- a three-tier environment may include users operating desktop, notebook or other computing devices and communicating with the middle tier server via a network such as the Internet.
- a firewall, proxy server, gateway or other security or access system may be interposed between the clients and the middle tier server.
- a client computer system in a three-tier environment in a present embodiment of the invention has fewer resources (e.g., lower processor speed, less memory, less storage capacity) than the middle tier server through which it accesses data.
- the communication link between the client computer and the middle tier server may be relatively slow (e.g., less than 1.544 Mbps) because of the novel and efficient method (described below) with which data and other information is exchanged between these two tiers.
- a faster link may be employed to further enhance the operation and efficiency of the framework.
- FIG. 1 depicts an illustrative three-tier environment in which a data access application may be developed and/or operate according to a present embodiment of the invention.
- Environment 100 comprises clients 102a, 102b and 102c, middle tier server 104 and database server 106.
- Various communication links e.g., dedicated, dial-up
- clients 102b, 102c communicate with middle tier server 104 using network 112, which may be a private network or a public network such as the Internet.
- a client cache maintained on a client system
- an event manager e.g., operating on a middle tier server
- lightweight proxies operating on a client computer
- object-oriented programming language such as Java
- the novel form of communications improves data and programming uniformity between tiers by allowing one tier to inform another of data changes, exceptions and other events that may then be implemented or effected on the other tier.
- the side effects or results of the operation and any events triggered by the operation are captured and passed to the other tier, in a single communication, where they may then be recreated or "replayed.” Because virtually all data and/or other information concerning a data operation or other event is sent in one communication, fewer communications need to be transmitted - thereby improving the efficiency of inter-tier communications.
- data updates, related events, etc. may be accumulated on the client system and then packaged into one communication to the middle tier server.
- any requested data, any exceptions encountered on the middle tier server, any related events and data changes, etc. may be gathered on the middle tier server and returned to the client in one communication.
- the operation may be performed first on the middle tier server.
- the middle tier server receives a message from the client system that includes the operation (and possibly other requests or operations).
- the middle tier server then performs the necessary processing (e.g., access the database server, locate one or more database rows or records) and returns all the results (e.g., data, exceptions, other events) to the client in one communication.
- the client may replay or apply the contents of the communication in order to update the user's data, fire (i.e., perform) the same events, throw the same exceptions, etc.
- this scheme is far more efficient than existing methods in which one field, attribute or data value is retrieved at a time, which requires numerous communications to effect one data operation and results in poor network performance.
- a user operation may, however, be performed first on the client system, in which case the middle tier receives a message identifying the operation and/or the results of that operation as applied on the client.
- the middle tier server may then perform the operation or just apply the results.
- the middle tier server performs the operation because it may trigger other events specified in the programming logic residing on the middle tier server (which are not triggered on the client).
- the results e.g., side effects, other events
- a client cache is configured on a client system to store multiple data objects or items.
- the cache is designed to store enough data to facilitate the execution of a user's specified operation and possibly a limited number of subsequent operations, but is not meant to replicate a large set of data such as may be stored on the middle tier server.
- the client cache is populated by the data access framework in response to communications received from the middle tier server.
- an event manager may be configured to intercept events, exceptions, warnings and messages that occur on the middle tier when a user's data operation/request is received and applied.
- the event manager passes these exceptions and messages to a client system so that it may take appropriate action or apply the same side effects that occurred on the middle tier server.
- the event manager thus helps ensure that individual events, rather than just data states, are propagated between tiers of a multi-tier computing environment.
- data values may be passed between tiers, but not the circumstances (e.g., an event) associated with the data values.
- the event manager introduced above may enforce the correct timing or sequencing of events, such as exceptions.
- a middle-tier event manager may thus propagate an event to a client computer complete with data and in the exact sequence that the event transpired on the middle-tier. The client may then replay the event in the correct order.
- User interface controls on a client for example, often rely on a source located on another tier for the data needed to update a display or scroll through a list of items. It is crucial to ensure that the elements of an event are provided to the user interface control in the correct order.
- Lightweight proxies operate on client systems and represent objects through which the clients invoke or manipulate corresponding objects on a middle tier server. For example, given an employee object (e.g., residing on the middle tier or in a database), a lightweight proxy for the employee object may reside on a client system. The lightweight proxy allows a user to operate on the employee object in a uniform manner regardless of whether the user is working in a two or three-tier environment. In particular, if the user invokes a "GiveRaise" method for the employee object to give an employee a raise, the proxy may route the call to a corresponding "GiveRaise" method on the middle tier, which then performs the actual implementation. Results or events associated with the GiveRaise call are then returned to, and recreated on, the client.
- an employee object e.g., residing on the middle tier or in a database
- the lightweight proxy allows a user to operate on the employee object in a uniform manner regardless of whether the user is working in a two or three-tier environment.
- proxies might have been used to access objects across tiers, but only by marshalling or exchanging method parameters.
- a call from a client computer to the GiveRase object on the middle tier may include a raise percentage or amount as one parameter.
- a previous environment would supply this parameter and respond with just a return value (e.g., new salary).
- a return value e.g., new salary
- all data changes, events and exceptions are sent with the return value so that they may all be played back on the client system.
- the GiveRaise method on the middle tier that is invoked by the lightweight proxy on a client causes other programming logic to execute (e.g., to update a payroll table), those effects are also passed back to the client.
- an application development and/or operating framework in which data may be accessed and manipulated while promoting uniformity between tiers in a multi-tier computing environment.
- all data operations and events associated with operations on the data e.g., "side effects" of a data operation
- FIG. IB is a block diagram of an exemplary two-tier environment in which an embodiment of the invention may be applied.
- middle tier 104 acts as a client and the middle tier server.
- user program 204a contains user program 204a, middle tier objects (e.g., programming objects) 204b and middle tier server cache 204c.
- the user program accesses data stored on database server 106 through the middle tier objects.
- User program 204a contains a user's programming logic and works with middle tier objects 204b.
- the user program may initiate a call to a middle tier object.
- a middle tier object When a middle tier object is invoked, it may cause various data to change and events to be fired (i.e., performed), and may cause other side effects determined by the programming logic installed with the middle tier objects.
- Middle tier server cache 204c Data changes (e.g., changes to data stored on database server 106) resulting from execution of a middle tier programming object are stored in middle tier server cache 204c, while fired events are returned to the user program.
- a user program can directly access objects within the data access framework (e.g., middle tier objects 204b) without using proxies, and does not need a separate client cache.
- Programming calls and call returns need not be packaged into formal inter-tier communications as in a three-tier environment.
- FIG. 1C is a block diagram showing additional detail of an exemplary three-tier environment such as environment 100 of FIG. 1A, according to one embodiment of the invention.
- an illustrative client such as client 102a of FIG. 1 A includes user program 302a, one or more lightweight proxies 302b, coordinator 302c and client cache 302d.
- Middle tier server 104 in this embodiment includes event manager 304a, middle tier objects 304b (through which data on database server 106 are accessed) and middle tier server cache 304c.
- One advantage of an embodiment of the present invention is that user program 302a of the three-tier environment of FIG. 1C is essentially the same as user program 204a of the two-tier environment of FIG. IB.
- the user may specify a switch or parameter to indicate whether the program is to run in a two-tier or three-tier mode. Appropriate program modules are then loaded and the program runs in the specified mode. In either operating mode, the user program is developed to use interfaces (e.g., Java interfaces) to access middle tier objects.
- interfaces e.g., Java interfaces
- the interfaces that user program 302a uses provide method specifications but not implementations.
- the user program therefore does not have direct access to or knowledge of the middle tier objects.
- lightweight proxies are provided.
- the lightweight proxies route calls for particular middle tier objects to the middle tier, where a corresponding method is called.
- coordinator 302c which represents the data access framework.
- Coordinator 302c may gather one or more object calls, data operations, results, events, etc., from the client and forward them in a single, efficient, message to event manager 304a of middle tier server 104.
- client cache 302d may be holding data changes, operations and/or other effects or results that have not yet been sent to the middle tier server.
- the coordinator packages all of these into the message.
- CORBA Common Object Request Brokering Architecture
- EJB Enterprise Java Beans
- some other similar system may be used to exchange communications between coordinator 302c and event manager 304a.
- Event manager 304a passes the call to the programming logic represented by middle tier server 304b, at which time an appropriate method is executed. Depending on the configuration of the programming logic, other objects may be invoked or called as a result of the first call. All of the end results, side effects, events, data changes, etc., (collectively termed the "results" for the present discussion) from the call are captured by the event manager. Event manager 304a records or stores the results for inclusion in a single, consolidated, communication to be sent back to the client so that it may apply them, update its cache, fire the same events, etc. Thus, after the event manager has gathered all of the results, it places them in a communication and transmits the communication to the client. Illustratively, the results are arranged so that they may be read, and applied, by the client in the order in which they occurred on the middle tier server.
- coordinator 302c When coordinator 302c receives the communication from the middle tier server, it plays back its component parts. In particular, data changes are used to update client cache 302d, while events are fired for or returned to user program 302a.
- a client system employs one or more caches, which may be rather small for thin clients, in order to improve performance while performing various data operations.
- a client cache may be compared to an object cache located on the middle tier server. Just as the middle tier server's object cache improves the efficiency of data operations on the middle tier, a client cache provides a similar benefit for the client computer.
- the contents of the client cache may be a subset of the contents of the middle tier server's cache.
- the object cache will typically be much larger than the client cache.
- a middle tier server's object cache may store thousands of data objects (e.g., database records or rows)
- the client cache of a client system connected to the middle tier server may store fewer than one hundred, depending on how many objects the application is designed to display for a user at one time, the size of the objects and the resources of the client.
- the size of a client cache By limiting the size of a client cache, fewer resources are required to manage the cache.
- One aspect of a current embodiment of a data access framework is that the framework is suitable for use with thin clients without sacrificing performance.
- Client systems manage the contents of the client cache in an attempt to populate it with data that is relevant to a user's data operations.
- a client system may inform a middle tier server of the size or capacity of its cache so that the middle tier server can provide a suitable amount of data to the client and thereby decrease the frequency with which the client requests additional data.
- the client may structure its data request (e.g., to the middle tier server) appropriately.
- Intelligence may be applied by the client (or the middle tier server) in order to look ahead or guess which data objects should be pre-provided from the middle tier server in order to be prepared for a next data operation performed by the user.
- Any suitable caching scheme e.g., least recently used may be used to manage the client cache and replace existing cache entries with new data.
- a data operation requested by a user or user application can be satisfied from data stored on the client (e.g., in a client cache), the performance of the user application is enhanced.
- the data operation is performed locally (i.e., on the client).
- the middle tier server just as events occurring on the middle tier are recreated or played back on the client, the data operation on the client and its effect(s) are forwarded to the middle tier server so that the operation may be applied there as well.
- Some simple operations performed first on the client may be collected before sending them to the middle tier server. Other, more complex, operations may be sent on to the middle tier immediately after execution on the client.
- data and other information exchanged between a client and a middle tier server (in a three-tier environment) in a present embodiment of the invention are clustered or aggregated in order to increase communication (e.g., network) performance.
- inter-tier communication performance was often very inefficient.
- the granularity, or level of data and information, that was exchanged between tiers could be very low, particularly when object calls were attempted across tiers or one tier tried to inform another of an event occurring on the first tier.
- numerous communications were required in order to perform or propagate a single operation, such as updating or retrieving a database table.
- the level of granularity of items in the client cache matches the granularity of objects contained in a client/middle tier communication.
- a client cache may be configured to store some number (e.g., twenty to fifty) of orders that a user has immediate access to at one time.
- a first data request (e.g., for one or more data objects) is passed from a client system to the middle tier server
- the middle tier server learns the size of the client's cache. This value may be included in the client's request or be provided to the middle tier server via a separate communication.
- the middle tier server retrieves the requested data (e.g., from its cache or a database server) and enough additional data (e.g., the next N data objects after the requested objects) to fill the client cache.
- the requested data is packed into a communication (e.g., using Java serialization) and forwarded to the client.
- the client receives the communication, unpacks the contents, populates the client cache and returns to the application.
- the middle tier may retrieve and provide the client with just that number of objects that the application can use.
- Communications from a client to a middle tier server are also improved by allowing multiple data updates to accumulate in the client before sending the entire collection (e.g., instead of sending each update individually). Updates may be forwarded at regular intervals or upon certain events. Illustratively, the updates are received by the middle tier and applied to its object cache in order to synchronize the data on the client and the middle tier server. By propagating events, exceptions and data across tiers in both directions, programming and data uniformity are promoted.
- data operations submitted to a client are assigned a mode of execution.
- a first, or priority, mode may indicate that the operation is to be reported to the middle tier immediately.
- an operation can be performed without the middle tier's involvement (e.g., with data already in a client cache), then even in priority mode it may not need to be reported to the middle tier. Any data changes, however, must be reported.
- a requested operation requires the involvement of the middle tier server (e.g., a priority operation), and cannot be performed on the client (e.g., necessary data is unavailable) it is immediately passed to the middle tier server for execution.
- operations may be accumulated on the client and forwarded to the middle tier server after a particular number of operations have been accumulated and/or a priority mode operation is submitted.
- a priority mode operation is submitted.
- an operation is performed locally (e.g., with data in a client cache), if possible, and then later forwarded to the middle tier server.
- the data access framework allows components and objects within the framework to register interest in events and other objects.
- the middle tier server may specify to the client that the middle tier server has an interest in a particular data operation (e.g., changes to employee salaries).
- the client may be configured to immediately forward such operations to the middle tier server, possibly disregarding any mode that may be otherwise assigned to the operation.
- the middle tier server may, for example, maintain some specialized or custom logic that is to be executed for certain operations.
- whichever tier has more complicated "side effects" to implement for an operation will receive and execute the operation first before communicating the operation and those effects to the other tier.
- a master/detail relation may be used to display information concerning departments (master) and employees within a department (detail).
- a master/detail relation allows selection of a master item (e.g., a department) so that detail items (e.g., employees within that department) may be viewed or accessed.
- User interface objects may be associated with each master or detail component.
- a text box may allow a user to enter a particular piece of master data, such as a department name or number.
- data may be retrieved concerning the employees within the specified department and displayed (e.g., in a table).
- the user may select another user interface object (e.g., a "NEXT" or "- " icon or button) in order to select the next master item (e.g., department).
- the employee detail is then updated or refreshed, and so on.
- master/detail coordination may be performed in either the client or middle tier server. Due to the need for sufficient resources to store and process the necessary data, however, in one embodiment of the invention master/detail coordination is performed on the middle tier server so that thin clients (e.g., systems with limited resources) can operate within the environment. More specifically, in order to implement or manage master/detail arrangements in a client system, it may require additional resources, programming logic, data and so on.
- a user interface object on the client may contain components (e.g., text box, grid) for selecting or displaying master/detail data. These components are hooked to the client cache and may be refreshed automatically as the cache is populated with requested data (e.g., the employees within a next department). However, the master/detail relation is actually managed by the middle tier. Thus, all master/detail operations are forwarded to the middle tier server for execution. The operation and its effects (e.g., a new set of employees for a newly selected department) are then returned to and implemented on the client. Specifically, when a user identifies a particular department or requests a next department, the client calls or sends a communication to the middle tier server.
- components e.g., text box, grid
- the middle tier server locates the requested department data.
- An event manager operating on the middle tier recognizes that a new set of employees is needed (because of the master/detail arrangement) and ensures that the necessary number of employee records or rows are returned when the middle tier server responds to the client's call.
- the number of employee records sent to the client may depend on the range size of a client cache, the number of records that can be displayed in the user interface object on the client, the number of records the data access application is configured to manipulate at one time, etc.
- FIG. 2 demonstrates a (single) round-trip communication that may be used to update the master/detail data on a client system.
- communication 202 from client 102b to middle tier server 104 identifies a data operation requested by a user.
- the user has requested information for the "next" department.
- the client may maintain a list of departments, perhaps identified by name and/or number, and possibly with some other information (e.g., number of employees in the department).
- Middle tier server 104 receives the requested operation.
- the master (e.g., department) object on the middle tier is set to the specified department, which automatically causes the employee data for the department to be retrieved (e.g., from the middle tier cache or from a database server) and updated on the middle tier server.
- the employee data must then be sent back to client 102b so that it may update its employee grid.
- the detail (e.g., employee) object on the middle tier server fires an event that is trapped or handled by an event manager (described further in the following section).
- the event manager recognizes that the employee object on the middle tier server is reporting a new set of employees in a master/detail relation that the client must be informed of.
- the event manager thus assembles the employee data for the new department with other information needed to replicate the master/detail update on the client.
- the amount of employee data sent to the client may be determined by the amount of data (e.g., number of records) that will fit into the client's cache.
- the communication sent back to client 102b from middle tier server 104 consists of several items.
- the format of the communication reflects the order in which data was updated or changed, and in which related events occurred, on the middle tier server. Therefore, communication 204 includes a first part 204a concerning data for the selected, or "next," department (e.g., department number, department name, number of employees).
- the next department may or may not already be in the client cache. If it is (as is the case in the illustrated embodiment), the middle tier is aware of this fact and, in part 204a simply directs the client to go to the next department (e.g., department 20, named Engineering, having ten employees).
- the department record is the first part of communication 204 in this example because it is the first item that was changed or affected on the middle tier server.
- part 204a will include the necessary department data.
- the department data may be preceded in part 204a by a command from the middle tier server for the client to make room in the cache for the new department.
- the command may be something like "scroll begin.” Following the scroll begin command would be the department data (e.g., "20, Engineering, 10 employees") that is placed in the client cache. Trailing the department data is a complementary command to "scroll begin,” such as "scroll end,” which tells the client to fire the department event and update the client cache.
- Second portion 204b of communication 204 comprises a command or directive from the middle tier server to the client to make room in its cache for the requested data (e.g., employee records). Second portion 204b may specify how much room should be made (e.g., by clearing, erasing or moving entries) in the cache.
- the command used in the illustrated embodiment is "refresh begin.”
- a third portion 204c of communication 204 includes individual employee records
- a fourth portion of the communication 204d informs the client that it may complete its refreshing operation.
- Fourth portion 204d may thus comprise a command such as "refresh end" which, when received by the client, causes the client to fire the refresh event.
- Client 102b receives communication 204 from middle tier server 104.
- the client populates a client cache with the specified department and employee data and fires their events as they are encountered in the communication.
- the user interface control for the department data e.g., a text box
- the text box is cleared and department 20 is displayed.
- the user interface control e.g., a grid
- the employee data is cleared and filled with the employee data of portion 204c of communication 204.
- communications passing between a client and a middle tier server may include data changes/updates, new data, events and other information useful in ensuring that a data access application has the same behavior or effects on both the client and the middle tier server.
- one communication relates to one user action, which may, however, involve many system-level events. The events are gathered, clustered, or aggregated in the correct sequence so that when a communication is received it can be "played back" to recreate the event(s).
- a middle tier e.g., a middle tier
- application developers may easily customize or otherwise alter a data access application developed according to a present embodiment of the invention. For example, consider the master/detail scenario described above in which one user interface object (e.g., a text box) is associated with a department data object and another user interface object (e.g., a grid) is associated with employee data corresponding to a specified department object.
- one user interface object e.g., a text box
- another user interface object e.g., a grid
- An embodiment of the invention may ensure that master and detail data is synchronized between tiers. A programmer or developer may wish to alter this master/detail arrangement to add custom business logic.
- the programmer may wish to meet users' requests that active projects within the department be identified every time a new department is selected and the employees for that department are displayed. Thus, the programmer may add another user interface control or object to a user's form.
- custom business logic may be accommodated by hooking it into the middle tier server.
- the programmer may override the department navigation (e.g., to a next department) event described in conjunction with FIG. 2.
- the business logic kicks in to display or update the project data.
- the return communication to the client e.g., communication 204 of FIG. 2 is modified accordingly to capture the project data and refresh event.
- a communication similar to communication 204 of FIG. 2 is returned to the user's client in order to ensure that the same data is presented to the user.
- communication 204 illustratively receives three additional sections added in the following order after section 204d.
- a "refresh begin” or similar command is expressed to clear or make room in the client cache for the project data.
- the actual project data is added.
- a "refresh end” or similar command is added to end the project refresh event.
- a user interface control e.g., a grid
- the size or range of a client cache need only be large enough to fill a user interface object.
- the client cache(s) need only be large enough to store the number of departments, employees and projects that can be displayed on one user form. This minimizes the amount of data that must be exchanged between a client and a middle tier and, because of the manner in which information is clustered or aggregated, reduces the network traffic passing between them.
- an event manager operates on a middle tier server to ensure that a data operation or other event that occurs on the middle tier server is captured and reported to a client in order to recreate the operation/event.
- the event manager captures events as they occur on the middle tier server, arranges or stores entries in communications to a client so that events can be played back on the client, and forwards the communication at the end of the initiating user event or call.
- the event manager thus ensures that data modifications first made on the middle tier server are made known to a client.
- an event manager is only needed on a middle tier server operating in a three-tier environment.
- an application program may interact directly (e.g., on the same computer) with middle tier objects to make calls and receive events and data.
- the middle tier event manager is also responsible for marshalling exceptions between these tiers. In particular, when an attempted data operation or other event on the middle tier generates an exception, that exception must be reported to the client.
- the event manager may communicate an exception from one tier to another in a present embodiment of the invention
- a data operation in which a user changes the value of a data field (e.g., department name) from X to Y. This may equate to a command such as "set attribute name from X to Y.”
- a data field e.g., department name
- a lock conflict may be encountered if, for example, another user may be updating the same record but has not yet committed the transaction. Therefore, an exception is thrown on the system (e.g., middle tier server) that is attempting to lock the record.
- middle tier server e.g., middle tier server
- Table 1 illustrates how a try/catch block of programming code may be implemented in an object-oriented programming language to carry out the attempted operation to change the name of a department to a name input by a user. while (true)
- This code would adequately serve its purpose when executing on a middle tier server in a two-tier or other environment in which no other system (i.e., in another tier) had to be informed of the progress of the operation.
- the illustrated code would attempt to lock the specified record; if successful, it would break out of the loop and continue with normal operations. If, however, the record could not be locked, the routine tries again.
- Lightweight Proxies It should be noted that all or many of the various application development objects that are provided in a present data access framework can be sub-classed. Further, in one embodiment of the invention various programming objects may be available across tiers. In a two-tier mode of operation this may not be necessary, as the client is co-located (e.g., on one computer system) with the programming logic and objects of the middle tier server. However, in one embodiment of a three-tier mode of operation access to middle tier objects is made available through "lightweight" proxies installed on a client. In this embodiment programming logic needed by multiple clients is built on objects installed on the middle tier server. The programming logic is thus uniform among all clients.
- department and employee classes may be resident on the middle tier. They may therefore be considered middle tier objects.
- a user program developed to use these objects may be installed on a client.
- interfaces for the department and employee objects are generated and installed on the client as part of the data accessing framework.
- the user program may be developed using these interfaces, without concern for how the actual department and employee objects on the middle tier are accessed.
- Lightweight proxies for the middle tier objects are also placed on the client.
- the department and employee interfaces if called, invoke the lightweight proxies. If the user program was run in two-tier mode, since the middle tier objects are co-located with the user program the department and employee objects may be called directly.
- the task of the lightweight proxies for the department and employee middle tier objects is to route the object calls to the middle tier, where the corresponding methods are called.
- Data changes, exception and events concerning the object calls are collected on the middle tier and returned in a consolidated communication such as communication 204 of FIG. 2.
- the department and employee interfaces and the lightweight proxies are automatically generated by the design-time component of Oracle Corporation's Business Component for Java when the department and employee classes are created for the middle tier.
- a GiveRaise method associated with the employee class may be implemented on the middle tier server.
- a tier-independent interface e.g., Emp
- a lightweight proxy e.g., Emp_proxy
- a user then develops an application to use the employee class, in particular, the GiveRaise method. The user incorporates the Emp interface into his program to call the method.
- FIGs. 3A-B illustrate one method of employing a data access framework in a multi- tier computing environment (such as that depicted in FIG. 1) according to one embodiment of the invention.
- the illustrated procedure allows a user's data operation to be performed even while maintaining high programming model uniformity and a high level of communication efficiency between tiers.
- State 300 is a starting state in which necessary data access tools are installed or configured.
- client and middle tier systems in the computing environment are configured to operate a run-time module of Oracle Corporation's Business Component for Java (or other object-oriented programming language).
- the APIs provided by this module facilitate and enable various aspects of the present invention described in the preceding sections (e.g., efficient communications, lightweight proxies).
- a user application is configured on the client system.
- the application is designed and developed using the design-time component of Oracle Corporation's Business Component for Java plus either JDeveloper or another suitable development tool.
- a data operation (e.g., a data alteration, a request for data for a form) is received at the client system from the user application.
- the data operation may, for example, be generated automatically by a form on which a user has selected or altered a piece of data, such as a master data item in a master/detail form.
- state 304 it is determined whether the data operation is middle tier sensitive. In particular, it is determined whether the operation should be immediately forwarded to the middle tier server for execution.
- the middle tier may register an interest in particular events or operations (e.g., such as when a user navigates to a next master row).
- the middle tier server may also register interest in events, operations and/or data objects when, for example, custom or object-specific code is installed on the middle tier for execution upon occurrence of the specified event or operation involving a particular data object. Events and operations that are middle tier sensitive are forwarded directly to the middle tier server for execution. As described below, other pending events/operations may be sent at the same time.
- the client only applies the results of a middle tier sensitive operation from information returned from the middle tier server (i.e., after the operation) rather than performing the operation locally and then forwarding the operation and/or its effects/results to the middle tier server afterwards. If the operation is middle tier sensitive, the illustrated procedure advances to state 316 to immediately forward the operation. Otherwise, if the operation is not middle tier sensitive, the procedure continues at state 306. In state 306 it is determined whether the operation normally requires middle tier involvement.
- the middle tier need not be involved if the data is available locally (e.g., in a client cache).
- the client determines whether the data needed for the operation is available locally (e.g., in a client cache). If not, then the operation must be forwarded to the middle tier for satisfaction (e.g., to retrieve the necessary data). In this event the procedure continues at state 316.
- state 310 the operation is performed locally, without middle tier involvement.
- the illustrated procedure then advances to state 342 to return or display the operation results to the user, after which the procedure ends.
- state 312 it has been determined that the requested data operation requires middle tier involvement, but not immediate involvement. For example, the user may have added or changed a new attribute, row or other data value that must be communicated to the middle tier at some time, but not immediately. The operation is therefore deferrable.
- the client attempts to satisfy the operation with data available on the client. Whether or not this can be done, the operation is then appended to a collection of other operations (if any) waiting to be forwarded to the middle tier server.
- communication efficiency is improved by accumulating multiple operations on the client (e.g., which are not middle tier sensitive) before forwarding them all at once.
- the client waits until a predetermined criterion is satisfied before forwarding the presently discussed data operation and any other waiting operations/events.
- the client may await a particular event or operation or a particular type of event or operation (e.g., a middle tier sensitive operation).
- the client may wait until a predetermined number of operations or events are waiting.
- the client may wait until an operation message used to convey the waiting operations to the middle tier reaches a predetermined size. Until it is time to send the waiting operation(s) to the middle tier, additional operations and/or event may be appended.
- Operation messages i.e., messages to the middle tier containing one or more operations or events
- Operation messages may be sent from a client to the middle tier server at periodic intervals, when a particular type of operation is requested that, although not middle tier sensitive should nevertheless not be delayed too long, or when some other criteria is satisfied.
- one or more criteria for sending an operation to the middle tier server are satisfied. For example, a middle tier sensitive operation may be received, which requires immediate transfer to the middle tier. Or, a threshold for determining when one or more waiting operations should be forwarded may be satisfied. Therefore, all waiting operations (and/or the new middle tier sensitive operation) are placed in an operation message and transmitted to the middle tier server.
- the middle tier server receives the operations message and unpacks the contents.
- the middle tier server retrieves an operation from the operations message and, in state 322, executes that operation.
- various data items may be added, changed, retrieved or otherwise manipulated.
- side effects such as the execution of custom code (e.g., business logic) may execute.
- the operations are retrieved and executed in the order they were requested and/or executed on the client. Thus, some of the operations may have been performed first on the client, others will be executed for the first time on the middle tier server.
- an event manager residing on the middle tier server captures and notes the side effects and events resulting from execution of the operation.
- the event manager saves or copies the affected data and any effects of events that were triggered by the operation.
- the event manager captures all of the results of the operation whether or not the operation was already performed on the client, which will be returned to the client to ensure uniformity.
- the middle tier server need not capture all results for such operations.
- the middle tier server determines whether any other operations remain in the operations message. If so, the illustrated procedure returns to state 320. Otherwise, if all operations have been retrieved and applied, the procedure continues at state 328.
- a return communication is generated sent to the client.
- the return communication includes the data changes and other events and results of each operation.
- the return communication is formatted similar to communication 204 of FIG.
- the client may receive the communication and play back the side effects, data changes and any other events or results of the operations.
- state 330 the client receives the return communication and begins parsing it in order to play back the operations.
- a first entry is retrieved from the return communication.
- state 334 if the entry is a data change the illustrated procedure continues to state 336. If the entry is an event, then the procedure advances to state 338.
- state 336 the data retrieved from the return communication is used to update a client cache, after which the procedure advances to state 340.
- state 338 the retrieved event is applied or fired.
- state 340 it is determined whether another entry is in the return communication. If so, the illustrated procedure returns to state 332; otherwise the procedure continues to state 342. In one embodiment of the invention all entries in the return communication are played back on the client, even if they correspond to operations that were already performed on the client (e.g., in state 308). This helps ensure programming and data uniformity between tiers. Alternatively, however, intelligence may be applied to avoid duplication of effort and only apply on the client those data changes that were not already applied.
- state 342 the results or effects of the data operation requested in state 302 are displayed or returned.
- the data operation concerned an updated master data element
- the corresponding master/detail data may be displayed.
- the illustrated procedure then ends at end state 350.
Abstract
Description
Claims
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2001245300A AU2001245300A1 (en) | 2000-03-03 | 2001-02-16 | Tier-independent data access framework |
EP01918196A EP1307815A2 (en) | 2000-03-03 | 2001-02-16 | Tier-independent data access framework |
JP2001564998A JP2004507801A (en) | 2000-03-03 | 2001-02-16 | Hierarchical independent data access framework |
CA002401547A CA2401547A1 (en) | 2000-03-03 | 2001-02-16 | Tier-independent data access framework |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US51827900A | 2000-03-03 | 2000-03-03 | |
US09/518,279 | 2000-03-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2001067244A2 true WO2001067244A2 (en) | 2001-09-13 |
WO2001067244A3 WO2001067244A3 (en) | 2003-03-13 |
Family
ID=24063288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2001/005399 WO2001067244A2 (en) | 2000-03-03 | 2001-02-16 | Tier-independent data access framework |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP1307815A2 (en) |
JP (1) | JP2004507801A (en) |
AU (1) | AU2001245300A1 (en) |
CA (1) | CA2401547A1 (en) |
WO (1) | WO2001067244A2 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005015442A2 (en) * | 2003-07-22 | 2005-02-17 | Sap Aktiengesellschaft | Application business object processing |
WO2006108290A1 (en) * | 2005-04-15 | 2006-10-19 | Research In Motion Limited | System and method for unified visualization of two-tiered applications |
US8006224B2 (en) | 2005-04-15 | 2011-08-23 | Research In Motion Limited | System and method for unified visualization of two-tiered applications |
US20150222679A1 (en) * | 2014-01-31 | 2015-08-06 | Wal-Mart Stores, Inc. | Data streaming framework from database to multiple targets by leveraging cached database connections and cursors |
WO2018140183A1 (en) * | 2017-01-30 | 2018-08-02 | Microsoft Technology Licensing, Llc | Deferring invocation requests for remote objects |
-
2001
- 2001-02-16 EP EP01918196A patent/EP1307815A2/en not_active Withdrawn
- 2001-02-16 WO PCT/US2001/005399 patent/WO2001067244A2/en not_active Application Discontinuation
- 2001-02-16 AU AU2001245300A patent/AU2001245300A1/en not_active Abandoned
- 2001-02-16 JP JP2001564998A patent/JP2004507801A/en not_active Withdrawn
- 2001-02-16 CA CA002401547A patent/CA2401547A1/en not_active Abandoned
Non-Patent Citations (2)
Title |
---|
BAER J-L ET AL: "ON THE INCLUSION PROPERTIES FOR MULTI-LEVEL CACHE HIERARCHIES" PROCEEDINGS OF THE ANNUAL INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE. HONOLULU, MAY 30 - JUNE 2, 1988, WASHINGTON, IEEE COMP. SOC. PRESS, US, vol. SYMP. 15, 30 May 1988 (1988-05-30), pages 73-80, XP000039790 * |
SANDHOLM T: "Object Caching in a Transactional, Object-Relational CORBA Environment" THESIS, DEPARTMENT OF COMPUTER AND SYSTEMS SCIENCES, UNIVERSITY OF STOCKHOLM, October 1998 (1998-10), pages I-III,1-77, XP002154578 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005015442A2 (en) * | 2003-07-22 | 2005-02-17 | Sap Aktiengesellschaft | Application business object processing |
WO2005015442A3 (en) * | 2003-07-22 | 2005-11-17 | Sap Ag | Application business object processing |
US7536673B2 (en) | 2003-07-22 | 2009-05-19 | Sap Ag | Application business object processing |
WO2006108290A1 (en) * | 2005-04-15 | 2006-10-19 | Research In Motion Limited | System and method for unified visualization of two-tiered applications |
US8006224B2 (en) | 2005-04-15 | 2011-08-23 | Research In Motion Limited | System and method for unified visualization of two-tiered applications |
US20150222679A1 (en) * | 2014-01-31 | 2015-08-06 | Wal-Mart Stores, Inc. | Data streaming framework from database to multiple targets by leveraging cached database connections and cursors |
WO2018140183A1 (en) * | 2017-01-30 | 2018-08-02 | Microsoft Technology Licensing, Llc | Deferring invocation requests for remote objects |
CN110268388A (en) * | 2017-01-30 | 2019-09-20 | 微软技术许可有限责任公司 | Postpone the call request to remote object |
IL268034A (en) * | 2017-01-30 | 2019-09-26 | Microsoft Technology Licensing Llc | Deferring invocation requests for remote objects |
US10455040B2 (en) | 2017-01-30 | 2019-10-22 | Microsoft Technology Licensing, Llc | Deferring invocation requests for remote objects |
RU2759330C2 (en) * | 2017-01-30 | 2021-11-11 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Postponing call requests for remote objects |
AU2017395742B2 (en) * | 2017-01-30 | 2022-03-17 | Microsoft Technology Licensing, Llc | Deferring invocation requests for remote objects |
CN110268388B (en) * | 2017-01-30 | 2023-06-20 | 微软技术许可有限责任公司 | Deferring call requests to remote objects |
Also Published As
Publication number | Publication date |
---|---|
CA2401547A1 (en) | 2001-09-13 |
WO2001067244A3 (en) | 2003-03-13 |
AU2001245300A1 (en) | 2001-09-17 |
JP2004507801A (en) | 2004-03-11 |
EP1307815A2 (en) | 2003-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7716377B2 (en) | Clustering server providing virtual machine data sharing | |
RU2357289C2 (en) | Remote system administration using command line environment | |
US6324495B1 (en) | Synchronous parallel system for emulation and discrete event simulation | |
Gelernter | Generative communication in Linda | |
US5687373A (en) | Communications system for exchanging data between computers in a network and a method of operating such a system in which communications services are defined within a common object class | |
US7552218B2 (en) | Transparent session migration across servers | |
US5794005A (en) | Synchronous parallel emulation and discrete event simulation system with self-contained simulation objects and active event objects | |
EP0733972A2 (en) | Method and apparatus for managing relationships among objects in a distributed object environment | |
US20060184535A1 (en) | Suspension and resuming of sessions | |
US20060112398A1 (en) | System and Methodology Providing Service Invocation for Occasionally Connected Computing Devices | |
JP2004537122A (en) | Computer processing and programming method using autonomous data handler | |
KR20060071860A (en) | Synchronization of runtime and application state via batching of workflow transactions | |
KR20030011301A (en) | Distributed computing system clustering model providing soft real-time responsiveness and continuous availability | |
Yu et al. | Following the data, not the function: Rethinking function orchestration in serverless computing | |
Bykov et al. | Orleans: A framework for cloud computing | |
Gorton | Foundations of Scalable Systems | |
WO2001067244A2 (en) | Tier-independent data access framework | |
Triphathi et al. | Communication, scheduling and resource management in Sina | |
US9489424B2 (en) | Cursor pre-fetching | |
Burckhardt et al. | Reactive caching for composed services: Polling at the speed of push | |
Nutt | An experimental distributed modeling system | |
Rajasekar et al. | Micro-services: a service-oriented paradigm for scalable, distributed data management | |
CN112383588B (en) | Method, system and cloud platform for adjusting resource sequence and delaying execution | |
Harland | Towards a language for concurrent processes | |
Vaughan et al. | Causality considerations in distributed persistent operating systems |
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) | ||
WWE | Wipo information: entry into national phase |
Ref document number: 2001245300 Country of ref document: AU |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2401547 Country of ref document: CA |
|
ENP | Entry into the national phase in: |
Ref country code: JP Ref document number: 2001 564998 Kind code of ref document: A Format of ref document f/p: F |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2001918196 Country of ref document: EP |
|
REG | Reference to national code |
Ref country code: DE Ref legal event code: 8642 |
|
WWP | Wipo information: published in national office |
Ref document number: 2001918196 Country of ref document: EP |
|
WWW | Wipo information: withdrawn in national office |
Ref document number: 2001918196 Country of ref document: EP |