General
Antony’s modulesystem allows you to write a registry which will be loaded by the antony client. The registry is needed to let you hook into our software.
ExtensionInterfaces
Antony provides custom interfaces which are used to detect and load your registry. This interfaces comes within an easy to handle nuget package. This package doent have any other dependencies but .netstandard 2.0. Therefore you should be able to use this in nearly every project. You find this Project on http://nuget.org : https://www.nuget.org/packages/antony.Groupware.ExtensionInterfaces/
The Version of this NuGet Package will correlate with the Version of antony itselfe. A 2.21.130 of antony.Groupware.ExtensionInterfaces will be shipped with the 2.21.130 of antony. We’ll make sure, to minimize breaking changes within this interfaces. Therefore the module written for a specific version will also work on a further version. As you can read here Modules and dependent assemblies might work with another version of this interfaces and your dependencies at runtime.
Registry
To register you need to specify the assembly attribute AntonyModule
to your assembly. Within this attribute you need to point to a class, containing the Register
Call. Every module need to have an own Id, you need to specify. It is not used directly, but will in the future. Please provide the same Guid for all registries your module belongs to.
At the end you might specify a RegistryGroup
. This Group is used for the licence system. In this example we’ll define “Zoom” as a group. This registry will only be loaded, if you have a valid module-licence with this group defined. You can get these licences from our shop. If you cant to create a package for the customer please contact the support.
The Register
call needs to be annotated with the AntonyServiceRegistry
attribute to be loaded. You can optional define an application you want to be loaded in. You are loaded in every application on default. In this method you can provide your types at the ExtensionPoints you want to integrate to.
[assembly: AntonyModule(typeof(ZoomModuleAntonyRegistry), RegistryGroup = "de.die_groupware.zoom")] namespace antony.Groupware.AddinX.Zoom { public class ZoomModuleAntonyRegistry { [AntonyServiceRegistry()] public void Register(IServiceCollection services) { // ... } } }
Let antony search
As we defined the registry itself we also need to tell antony where to find your assembly. We’ll do this by using the windows registry. You need to add a value into the following key
HKEY_CURRENT_USER\SOFTWARE\SCOM\antony\modules
There you can place the path to your module in the value. As the name you can use the name of your module, but it is not relevant.
You need to provide a folder. antony will autodetect all AntonyRegistries automatically and load, if the conditions are met.
Until now we can only load whole directories. We’ll provide the ability to specify a file in a few iterations.
Conclusion
As you saw it is simple to provide a module which is loaded by antony. You only need to specify a registry and let antony know where to search for it.
So open up a VisualStudio, Create a Project and go for it. You can do it right now.