IP Library › Granted Patent US 8,516,037
Granted Patent B2
US 8,516,037 · App. 12/139,688 · Granted Aug 20, 2013

Methods for dynamic partitioning of applications in client-server environments

Inventors: Michael Beisiegel (Poughkeepsie, NY); Judah M. Diament (Bergenfield, NJ); Avraham Leff (Spring Valley, NY); Thomas A. Mikalsen (Cold Spring, NY); James T. Rayfield (Ridgefield, CT)
Assignee: International Business Machines Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,516,037
App. No.
12/139,688
Granted
Aug 20, 2013
Kind
B2
Abstract

A method for dynamically deploying an application in a client-server environment includes evaluating at least one constraint of at least one of the application or the client-server environment and partitioning the placement and execution of components of the application in the client-server environment dynamically at runtime according to the at least one constraint.

Claims (30)

1. A method for dynamically deploying an application in a client-server environment, comprising:

creating a web application to run entirely on a web browser, said application comprising at least one application component and at least one abstract constraint, wherein application logic is independent of its placement on a server or a client and the at least one abstract constraint is expressed external to the application logic, wherein the at least one abstract constraint comprises a requirement of at least one of reliability, privacy, security, or trusted code for the at least one application component;

evaluating a runtime context of the application in the client-server environment; and

partitioning the placement and execution of the at least one application component dynamically at runtime so that implementation of the at least one abstract constraint is provided,

wherein placement and execution of the at least one application component varies in different client-server environments,

wherein the at least one application component comprises at least one computational component, at least one data component, or a combination of computational and data components,

wherein the at least one computational component manipulates a state of the application and comprises validating forms, accessing a database, managing queries, calling services, conducting transactions, graphic transformations, image processing, calculations, spell checker, syntax highlighting, or interaction with user interface components, and

wherein the at least one data component comprises a searchable collection of data or objects and comprises submitted orders; a database; a collection of image files, music files, or documents; or a file that needs to be stored persistently.

2. The method according to claim 1 , comprising automatically partitioning the application into a client-side subset and a server-side subset according to the at least one abstract constraint.

3. The method according to claim 1 , wherein said reliability constraint comprises that operations of the at least one application component operate as an atomic unit despite failures that occur as the operations execute.

4. The method according to claim 1 , wherein the application supports cross-domain requests between applications running on at least one of different servers, different devices, or different networks by forcing the at least one application component to run on a server and to interact with a client web browser having a security restriction.

5. The method according to claim 1 , wherein the at least one abstract constraint comprises a privacy requirement and the partitioning allows sensitive information to stay on a server.

6. The method according to claim 5 , wherein the sensitive information comprises at least one of financial information or proprietary information.

7. The method according to claim 1 , wherein the application comprises trusted code that is allowed to directly access a database and the at least one abstract constraint guarantees that the trusted code is not altered so that trusted code executes in a trusted environment.

8. The method according to claim 1 , wherein the programming model allows for automated, just-in-time partitioning of the application based on client-side capabilities of individual users of the application.

9. The method according to claim 1 , wherein the at least one constraint is not encoded in the at least one application component and implementation code for the at least one constraint is factored out of the application.

10. The method according to claim 1 , wherein the at least one application component is placed on both a client and a server.

11. The method according to claim 1 , wherein multiple sessions of the web application share the same at least one application component.

12. The method according to claim 1 , wherein the reliability constraint guarantees delivery of messages of one application to another application if a system fails.

13. The method according to claim 1 , wherein the at least one abstract constraint comprises a non-functional requirement specified by a developer.

14. The method according to claim 1 , wherein the at least one abstract constraint comprises a requirement of at least one of privacy, security, or trusted code.

15. A computer program product, comprising:

a non-transitory, non-signal computer useable storage medium having a computer readable program, wherein the computer readable program when executed on a computer causes the computer to:

create a web application to run entirely on a web browser, said application comprising at least one application component and at least one abstract constraint, wherein application logic is independent of its placement on a server or a client and the at least one abstract constraint is expressed external to the application logic, wherein the at least one abstract constraint comprises a requirement of at least one of reliability, privacy, security, or trusted code for the at least one application component;

evaluate a runtime context of the application in the client-server environment; and

partition the placement and execution of the at least one application component dynamically at runtime so that implementation of the at least one abstract constraint is provided,

wherein placement and execution of the at least one application component varies in different client-server environments,

wherein the at least one application component comprises at least one computational component, at least one data component, or a combination of computational and data components,

wherein the at least one computational component manipulates a state of the application and comprises validating forms, accessing a database, managing queries, calling services, conducting transactions, graphic transformations, image processing, calculations, spell checker, syntax highlighting, or interaction with user interface components, and

wherein the at least one data component comprises a searchable collection of data or objects and comprises submitted orders; a database; a collection of image files, music files, or documents; or a file that needs to be stored persistently.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2008
From: BEISIEGEL, MICHAEL; DIAMENT, JUDAH M; LEFF, AVRAHAM; MIKALSEN, THOMAS A; RAYFIELD, JAMES T
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 021100/0536 →
Continuity (1)
Related Publication 20090313319A1 · Dec 17, 2009