Best Practices for Extending the User Interface Layer

When developing extensions for the user interface layer of the vSphere 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 Client.
  • When you create 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.
  • Use the REST API for retrieving data from the service layer. 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 request through the proxy.
  • If you 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 Client to display the plug-in by using the current vSphere Client locale.

      The following XML fragment shows how the <resource> element can be used in the plug-in module manifest file.
      <plugin id="com.vmware.samples.htmlsample"
         defaultBundle="com_vmware_samples_htmlsample">
      
         <resources baseUrl="locales/">
            <resource>com_vmware_samples_htmlsample</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. Use your company name and product name as part of the resource bundle name to make it unique.
    • Make sure that the filenames of your resource files end with _en_US instead of -en_US