Methods and apparatus for dynamic runtime partitioning of network-based client/server
applications using a Model-View-Controller pattern are provided. Such dynamic partitioning
is accomplished by requiring that the application specify: (i) that access to the
Model be done through an application programming interface (API) which allows the
system runtime to dynamically allocate and access Model storage on the client and/or
server; and (ii) that access to the View be done through an API which allows the
system runtime to dynamically allocate and access View components on the client
and/or server. This enables applications written and tested in such a manner (referred
to herein as the "canonical form") to execute in a non-distributed mode or in a
dynamically partitioned mode in which client/server issues are not a factor. This
greatly facilitates development of the application. Furthermore, by specifying
View components in an abstract, or "platform-independent" API, the application
can run on multiple client devices without modifying the application. All that
is required is a platform-specific implementation of the View components' API.
Client platforms for the application can thus include, for example, applets, HTML
browsers, and PDAs.