When developing extensions for the user interface layer of the vSphere Web Client, follow these best practices.

Create pointer node extensions on the Object Navigator home page only for major applications and solutions. This approach provides consistent and meaningful user experience for the customized vSphere Web Client.

When you create a view for your Flex extension, use the vSphere Web Client SDK Model View Controller framework (Frinje) and the Data Access Manager APIs to achieve better performance and scalability.

When creating action set extensions for a particular type of vSphere object, you must use the extensions filtering mechanism. The defined action sets must be visible only when the user selects the relevant vSphere object type. For more information about how to filter extensions, see Filtering Extensions.

If your Flex-based solution extends the com.vmware.flexutil.proxies.BaseProxy class, make sure that you are not hard-coding the channel URI. Use the getDefaultChannelUri() method of the com.vmware.flexutil.ServiceUtil Flex class.

Use the Data Access Manager API for retrieving data from the service layer. You must use proxies only for adding, editing, and deleting issued data requests.

For better performance, avoid making proxy calls that require more than several seconds to return a response. A best practice is to design your extensions to submit a task that returns immediately, and to track the task progress.

If you use proxies for data requests, verify that you receive the request response before sending another one through the proxy.

If you want to use localization data for your plug-in package, follow these recommendations:

Set the locale attribute in the <resource> element of the plugin.xml manifest file to the value {locale}. Using the {locale} value instructs the vSphere Web Client and the vSphere Client to use the locale that the user’s Web browser specifies at runtime.

The following XML fragment shows how the <resource> element can be used in the plug-in module manifest file of a Flex-based extension.

<plugin id="com.vmware.samples.helloworld_i18nui"
   moduleUri="Helloworld.swf" defaultBundle="com_vmware_samples_helloworld">

   <resources>
      <resource locale="{locale}">
         <!-- relative path of the .swf generated by the build script.
            {locale} will be set at runtime to the current vSphere Web Client locale
         -->
         <module uri="locales/helloworld-{locale}.swf"/>
      </resource>
   </resources>

....

</plugin>

To avoid collisions with other localized plug-in packages, set a unique resource bundle name to the defaultBundle attribute of the <plugin> element in the plug-in manifest file.

If you develop HTML-based plug-ins, use the getString() API defined in the web-platform.js JavaScript file.

If you develop HTML-based plug-ins, make sure that the filenames of your resource files end with _en_US instead of -en_US