Spotfire Developer Documentation

Extensions

A Spotfire extension is the smallest functional unit added to the platform. It is developed in Visual Studio® and is included in a Spotfire add-in, enabling versioning, licensing, deployment and loading. This topic describes the key concepts needed when you develop extensions adding custom capabilities to the Spotfire platform.

Extensions are bundled for loading into Spotfire in units called add-ins. Spotfire handles versioning, deploys and loads functionality as add-ins registering extensions. For detailed information on how to create extensions to Spotfire, see the Community.

A Spotfire add-in is implemented as a C# project in Visual Studio®. The design guidelines for Spotfire extensions prescribes that every add-in contains one class derived from the AddIn class. An add-in is basically defined by information provided when creating the project from the SDK template. The add-in project contains one or more extensions. Additional extensions can easily be added to the project at a later point in time, to build a new version.

Each extension is implemented in a set of classes, typically overriding a base class defining a specific extension type. The add-in registrations are made declaratively by overriding an extension type specific method, Register[ExtensionType](). Each such method is passed a registrar that allows the add-in to register the extension in the appropriate registry in Spotfire. For instance, to register a new tool, the RegisterTools(ToolRegistrar) is overridden. A similar procedure is used when licensing extensions.

An add-in can also register services that can be used by other add-ins. This provides a simple way for add-ins to provide extension points of their own.

A module is defined as qualified for loading in Spotfire if it has a valid module definition file. It declares the add-in to the application by defining the fully qualified type name for the AddIn class and the assembly name. It also declares a unique project GUID and a strong name for the assembly. Combinations of these uniquely identifies the project and the add-in. Extension assemblies must therefore be signed with a strong name key using a strong name key file (.snk). The extension project template contains a default key. You may replace this key file with your own, but if you do, make sure to alter the module definition file accordingly.