[Editor: This sounds intriguing. Is it real, or is it Marketing?]
What makes the virtualization particularly difficult to implement is finding the right abstraction model that works for all platforms being virtualized.
What does it mean to virtualize application development?
We started with the basic concept that all applications can be composed from three main elements:
• data (persisted and non-persisted).
• operations - data transformations that can be applied to data.
• user interface components - determine how the users view and interact with data.
Based on that we came up with the following plan – if we virtualize all those elements and create a facility for building application functionality with them, our applications will be completely virtualized. The immediate benefits are:
• Simplified application development – we hide most of the complexities behind virtualization layers and end up with single data, operation and presentation component interfaces.
• Low-cost maintenance – we can replace the implementation of any component (data, operation or presentation) without affecting the application functionality.
Moving forward in our design we came with application architecture consisting of:
• Data virtualization service
• Operation virtualization service
• Presentation component virtualization service
• Application orchestration – facility for creating application functionality from virtualized components.
It is important to notice the following:
• Application process can access all components available through virtualization services running within the application
• Virtualized components (data objects, operations and presentation components) are defined outside of the application process. They have no application dependencies and can be reused in other applications.
• Virtualization services can be configured to expose components to other applications as well.
Being new-generation application architecture, Virtualized Application Architecture accounts for the new application development trends. It serves as a foundation for the development of collaborative applications. How?
• Applications are developed with virtualized components (data, operations and presentation components).
• Developers can change the implementation of any component from local to remote and vice versa without affecting the application functionality.
• Developers can configure virtualization services to expose components to other applications.
The reason why Virtualized Application Architecture fits in this picture is because it prepares the applications for change.
• Developers may start by implementing the functionality as standalone application (all virtualized components implemented locally).
• If enterprise architects decide to serve some components remotely, developers will remove the local implementations and point them to the remote application. It results in configuration change at the virtualization service level.
• If enterprise architects decide to expose local services to other applications, developers can add required configuration, including required access control.
• The enterprise architects have the option of sharing services from the context of individual applications or consolidate shared services in enterprise repositories: Enterprise Object Repository, Enterprise Operation Repository and Enterprise Presentation Repository.
If you want to get started with virtualized application development, see http://shipka.com
. There are plenty of opportunities to contribute ideas, code, etc.
Let us know what you think.