What add-in / workbench structure is the best .NET alternative for Eclipse RCP?

I am looking for a plugin-based application platform that is comparable to the Eclipse Plugin Framework, which, in my simple view, consists of:

  • basic plugin infrastructure (Equinox / OSGI), which provides the ability to declare extension endpoints and then discover and load plugins that serve these endpoints. (this is different from Injection Dependency, but admittedly the difference is subtle. The configuration is very decentralized, there are problems with version control, this may include an online plugin repository, and, most important to me, it should be easy for the user to add plugins without needing any knowledge about the basic architecture / configuration files).
  • many layers of plugins that provide a basic workbench with concurrency support, commands, preference sheets, menus, toolbars, key bindings, etc.

It just scratches the RCP surface, which in itself serves as the foundation of your application that you create, creating even more plugins.


This is what I learned from the Internet over the past couple of days ...

As far as I can tell, there is nothing in the .NET world that remotely approaches the reliability and maturity of Eclipse RCP for Java, but there are several competitors that perform well # 1 or # 2.

(I should also mention that I did not make a final decision on WinForms vs WPF, so I am also trying to understand the level of user interface interaction in any candidate structure. I am also interested in learning about the connection between the platform and the source code of licensing)

I have to say that open source material is generally less documented, but easier to understand, while MS material usually has more documentation, but is less accessible, so with many MS technologies I have to wonder what they are on in a practical sense.

These are the libraries I found:

Sharpdevelop

The first thing I looked at was SharpDevelop, which does both # 1 and # 2 in a basic way (no insult to SharpDevelop, which is amazing - I mean simpler than Eclipse RCP). However, SharpDevelop is more of an application than a framework, and there are basic assumptions and limitations (i.e., Some are related to WinForms). However, there are some articles about CodeProject explaining how to use it as the basis for an application.

System.addins

It seems that System.Addins is intended to create a reliable platform for loading add-ons with some complex parameters for loading assemblies with different levels of trust and even inaction. It appears to be mostly code-based and rather heavy code, with many assemblies that serve as isolation from version problems. Using Automation Automation to generate a lot of code.

So far, I have not found many System.AddIns articles that illustrate how it can be used to create something like RCP Eclipse, and many people seem to push their hands off its complexity.

Mono.Addins

Looks like Mono.Addins was influenced by System.Addins, SharpDevelop and MonoDevelop. It appears to provide the basics of System.Addins with less complex options for loading plugins, but more simplicity, with attribute-based registration, XML manifests, and infrastructure for online plugin repositories.

It has pretty good FAQs and documentation, as well as a fairly robust set of examples that really help to get a picture of how to develop an architecture similar to SharpDevelop or Eclipse. The examples use GTK for the user interface, but the structure itself is not related to GTK. So it looks like # 1 (loading the add-in) is pretty good, and points to the path to # 2 (workbench frame). It seems that Mono.Addins was obtained from MonoDevelop, but I did not really see if MonoDevelop supports a good kernel working environment.

Managed Extensibility Framework

This is what everyone is talking about at the moment, and it slowly becomes clear what it is doing, but I'm still pretty fuzzy, even after reading a few posts on SO. The official word is that it "can live side by side" with System.Addins. However, it does not refer to it and seems to reproduce some of its functionality. It seems to me that this is a simpler and more affordable alternative to System.Addins.

This seems to be more like Mono.Addins, as it provides attribute-based wiring. It provides "directories" that can be attribute based or directory based. It doesn't seem to provide any XML-based or manifest-based wired connections. So far, I have not found much documentation, and the examples seem to be kind of β€œmagical” and more reminiscent of attribute-based DIs, even though MEF is not a DI container.

His license has just been opened, but it refers to WindowsBase - not sure if this means that it is associated with Windows.

Acropolis

I am not sure what it is. Is it MEF or something else?

Composite Application Blocks

There are Composite Application WPF and Winforms blocks that appear to provide much more desktop features. I have very little experience with them, but they seem to rely on control automation, quite a bit, obviously, related to user interface layers. There are several examples of combining MEF with these application blocks.


I did my best to answer my own question here, but I really only scratch the surface and I have no experience with any of these frameworks. Hopefully some of you can add more details about the structures you encounter. It would be great if we could get some kind of comparative matrix.

+6
eclipse plugins add-in extensibility
source share
5 answers
+1
source share

You really should take a look at the Visual Studio shell. It is available as in integrated mode, where the application is next to the visual studio as an add-on, or you can use the shell in isolated mode, where the shell simply serves as the base for your application, similar to the Eclipse shell. Check out the webpage .

Visual Studio is robust, feature rich, and free. I have not done any development yet, but I looked at it for the upcoming project. It seems like every bit of the same powerful plugin platform as Eclipse.

+1
source share

+1 for SharpDevelop. Libraries are well written and easy to distribute. I actually write my own code refactoring application using Core SharpDevelop and their Addin framework.

Very nice.

-Doug

+1
source share

While I am not familiar with the specifics of RCP, I think DxCore will probably be the most comprehensive framework for extending Visual Studio with managed code. It uses a plug-in architecture and gives you the ability to create anything from tool windows (hosting any code you want), to Actions (elements that can be tied to keyboard shortcuts and context menus) and refactoring with an extremely rich context system and mechanism for generating agnostic language code. It provides a very nice layer of abstraction on top of the pretty scary underbelly of Visual Studio. It is also written agnostically, so plugins written against DxCore will work for VS 2005 and VS 2008.

While it is free, it is not open source, and unfortunately there is very little documentation. You have samples that are a good start, but here are some other resources that might be helpful:

  • Mark Miller is the architect for DxCore / CodeRush / Refactor Pro !, and has some blog posts (and DNR TV episodes ) about creating DxCore plugins.
  • There is a community forum forum where you can post questions. It is followed by Mark and some other DxCore developers, as well as some people from the community.
  • DxCore plugins in Google Code. Trying to collect community-created plugins in one place. This is a good mix of tools and refactoring, although some are outdated.

Hope this will be helpful for you. The only thing I can really say about this, and the reason it is probably not more widely used, is that it is such a large library, with almost no documentation, you should be ready to dig to learn how to use some cooler functions.

Good luck

0
source share

I just released SoapBox Core as an open source and wrote an introductory article about CodeProject . This is basically what you are looking for. It uses MEF for extensibility, and I got a lot of ideas from SharpDevelop. Please note that it is brand new and is still developing rapidly.

0
source share

All Articles