Best Practices for Plug-In Modules Implementation

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.
  • Your plug-in package must be OS agnostic. You must avoid reading and writing on the file system from the
    vSphere Client
    service layer. In case you need to temporarily store files, you must use the browser cache or your own back-end server.
  • To provide a consistent end-user experience in case your
    vSphere 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.
  • Avoid using deprecated or private APIs and extension points. Using deprecated APIs in your
    vSphere Client
    extensions will prevent them from working with future versions of the
    vSphere Client
    .
  • To prevent performance problems in the
    vSphere 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 Client
    remains stateless. To ensure the scalability of the
    vSphere Client
    , you must use your backend server to cache data.
  • 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.
  • To achieve optimal scalability and performance for your
    vSphere Client
    plug-ins, your Java services must not require any significant heap allocation.