When you create a data view extension for the vSphere Web Client user interface layer, you must provide user interface classes for the GUI elements that appear in the main workspace area. Data view extensions that require user interface classes are the global view extensions, extensions to existing and custom object workspaces.

Flex classes for GUI elements in the vSphere Web Client are implemented by using the Model-View-Controller (MVC) pattern. In the MVC pattern, the business logic and graphics components of a GUI element are separated into different classes. The Flex classes in vSphere Web Client data views use an internal MVC framework, called Frinje, to create the associations between the classes used in the MVC pattern.

The vSphere Web Client SDK provides an event-driven API, based on the Frinje framework, called the Data Access Manager. Data view classes can use the Data Access Manager library to query data from sources inside or outside of the vSphere environment.

You can use any framework to develop Flex-based data view extensions for the vSphere Web Client, but using the Frinje framework is a best practice. By using the Frinje framework and implementing a compatible MVC architecture, your extensions can use the built-in Data Access Manager library provided with the vSphere Web Client SDK to retrieve data and send commands to the virtual infrastructure.

The MVC architecture pattern applies only to vSphere Web Client extensions that add data views to the GUI. Other extensions, such as shortcuts for the home screen or object navigator, are defined only in metadata and do not require you to create MVC code.

The Model-View-Controller pattern separates the domain logic of the software from the user interface elements. The decoupling of components allows each part of the software to be developed, tested, and maintained independently.

In the MVC architecture, the model component manages the business logic of the software, including calculations, data access, and communications with external data sources. The view component manages only the graphics-related functions of the user interface. The controller component contains the control logic that governs communication between the model component and the view component.

The model, view, and controller components can be implemented as a single class or as a collection of different classes.