Following general design and development recommendations is the first step in creating high-performance and secure vSphere Web Client extensions. You can then move on to special areas, such as developing HTML-based extension solutions.

When you develop and test your extension solution, make sure that the plug-in package installs and functions properly on both the vCenter Server Appliance and the vCenter Server running on Windows. Your plug-in package must be OS agnostic. You must avoid reading and writing on the file system from the vSphere Web Client service layer. In case you need to temporarily store files, you must use the Tomcat temp directory. To achieve platform independent read/write file operations, use the Java APIs for handling file paths.

To provide a consistent end-user experience in case your vSphere Web Client extension migrates server workloads, make sure that your extension migrates only to vSphere environments that are hosted by a VMware vCloud Air Network Service Provider. For more information about the available service providers, see http://vcloudproviders.vmware.com/find-a-provider.

When you create a Flex-based extension for the vSphere Web Client, you must use the Data Access Manager API. The Data Access Manager communicates with the Data Service on the service layer. The Data Service acts as the intermediary between the user interface layer and the objects in the vSphere environment.

Using the Data Access Manager library has the following advantages:

Provides a unified data channel

Enables sending multiple queries in a batch request

Provides a simple event-based API

Enables receiving of aggregated responses to data requests

Provides mechanisms for extending the existing vSphere managed objects and creating custom ones.

To achieve greater security and scalability, you must use the Java service layer for requesting data from the vSphere environment. The communication between the Flex GUI objects and the Java service layer is achieved by using the BlazeDS Java remoting technology and creating secure AMF channels. This approach eliminates security breaches to data sent to and received from the vSphere environment.

Avoid using deprecated or private APIs and extension points. Using deprecated APIs in your vSphere Web Client extensions will prevent them from working with future version of the vSphere Web Client.

To prevent performance problems in the vSphere Web Client and vCenter Server instances, use your Java services only for communication between the vCenter Server instances, or other remote data sources, and the user interface layer. You must not create thread pools in your Java services. Consider implementing any complex business logic in your own backend servers.

Avoid caching data in the Java service layer. Make sure that the vSphere Web Client remains stateless. To ensure the scalability of the vSphere Web Client, you must use your backend server to cache data.

Use the data refresh mechanisms, which are provided by the Data Access Manager, to limit the time for refreshing the data of your view objects. For further information about how to use the Data Access Manager refresh mechanism, see Data Refresh and Data Update Specifications.

To increase the security of your extensions, you must limit the access to your plug-ins to specific users. Use the plugin.xml extension definition to control the user access to your extensions based on their privileges. For example, you can make your extensions available only to users who have privileges to create or delete Datastore objects. For more information about how to filter extensions, see Filtering Extensions.

To achieve optimal scalability and performance for your vSphere Web Client plug-ins, your Java services must not require any significant heap allocation.