Проект "MonoDevelop Add-in для PascalABC.NET"

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску

Mono.Addins Reference Manual

Введение

Mono.Addins является основой для создания расширяемых приложений, а также для создания библиотек, расширяющих эти приложения(аналог "плагинов").

Эта структура вытекает из использования MonoDevelop, путем добавления в MonoDevelop расширяемые приложений (extensible applications), хотя MonoDevelop был полностью переписан и усовершенствован, существует множество способов сделать его более общим и простым в использовании. Добавление в программу MonoDevelop "плагинов" (Mono.Addins) реализованно на много удобней, чем по сравнению с инструментом SharpDevelop, который реализован на основе идей от Eclipse add-in engine (добавления "плагинов" в системе Eclipse).

Mono.Addins был разработан, чтобы быть полезным для широкого спектра приложений: от простых приложений с малыми потребностями расширения(дополнения к коду) до сложных приложений (таких как сам MonoDevelop), которые нуждаются в поддержке: в больших дополнениях в структурах программы.

Этот документ включает в себя подробное описание всех функций, которые предоставляет Mono.Addins. Если у Вас есть вопросы или предложения о Mono.Addins, подпишитесь на рассылку разработчиков Mono.Addins (http://groups.google.com/group/mono-addins).

Основы Mono.Addins

Модель расширения Mono.Addins базируется на четырех концепциях:

Add-in host: приложение или библиотека, которые могут быть расширены с помощью add-ins. Расширение возможностей определяется посредством точек расширения(extension points).

Extension point: a placeholder where add-ins can register extension nodes to provide extra functionality. Extension points are identified using extension paths.

Extension node: an attribute-decorated element that describes an extension. Extension nodes are typed. Extension points may declare which types of extension nodes do they accept.

Add-in: A set of files which register new nodes in one or several extension points defined by add-in hosts. An add-in can also act as an add-in host, and as such it can be extended by other add-ins.

Mono.Addins also defines an Add-in Description Model, which is used by add-ins and add-in hosts to declare all extensibility information. Add-in descriptions can be represented either using an XML manifest, or by applying custom attributes to assemblies and types.

Finally, Mono.Addins provides an API (implemented in Mono.Addins.dll) which can be used at run-time to query and handle add-in extensions

In order to clarify all those concepts, let's see a very simple example of an application based on Mono.Addins.

A simple example The idea is to implement a Text Editor which can be extended by add-ins. The following diagram shows the extension points that the editor will offer, and how they are extended by several add-ins:


Subsequent chapters of this document will explain how to use Mono.Addins to provide different kinds of extensibility features to the editor. Now let's start with the skeleton of the application and a very simple extension.