Какая инфраструктура надстроек / верстак является лучшей альтернативой .NET для Eclipse RCP? - PullRequest
6 голосов
/ 24 октября 2008

Я ищу основанную на плагинах прикладную среду, сравнимую с Eclipse Plugin Framework, которая, на мой взгляд, состоит из:

  1. базовая инфраструктура управления плагинами (Equinox / OSGI), которая предоставляет возможность объявлять конечные точки расширения, а затем обнаруживать и загружать плагины, которые обслуживают эти конечные точки. (это отличается от Dependency Injection, но, по общему признанию, разница невелика - конфигурация сильно децентрализована, есть проблемы с версиями, это может быть связано с онлайн-хранилищем плагинов, и самое главное для меня, это должно быть легко для пользователь для добавления плагинов без необходимости знать что-либо о базовой архитектуре / файлах конфигурации)
  2. много слоев плагинов, которые обеспечивают базовую оболочку рабочей среды с поддержкой параллелизма, командами, списками предпочтений, меню, панелями инструментов, привязками клавиш и т. Д.

Это всего лишь царапина на поверхности RCP, которая сама по себе должна служить основой вашего приложения, которое вы создаете путем написания / сборки даже больше плагинов.


Вот что я почерпнул из интернета за последние пару дней ...

Насколько я могу судить, в мире .NET нет ничего, что могло бы дистанционно приблизиться к надежности и зрелости Eclipse RCP для Java, но есть несколько претендентов, которые неплохо справляются либо с 1, либо с 2.

(Я должен также упомянуть, что я не принял окончательного решения по WinForms против WPF, поэтому я также пытаюсь понять уровень связывания пользовательского интерфейса в любой подходящей среде. Мне также интересно узнать о связывании платформы и исходном коде лицензирование)

Я должен сказать, что материал с открытым исходным кодом, как правило, менее документирован, но проще для понимания, в то время как материал MS обычно имеет больше документации, но менее доступен, так что со многими из технологий MS мне интересно они на самом деле, в практическом смысле.

Вот библиотеки, которые я нашел:

SharpDevelop

Первое, на что я посмотрел, был SharpDevelop, который выполняет как # 1, так и # 2 в основном (без оскорблений для SharpDevelop, что достойно восхищения - я просто имею в виду более простой чем Eclipse RCP) , Тем не менее, SharpDevelop является приложением, а не фреймворком, и здесь есть основные предположения и ограничения (т. Е. Несколько связаны с WinForms). Тем не менее, есть несколько статей о CodeProject, объясняющих, как использовать его в качестве основы для приложения.

System.Addins

Похоже, что System.Addins предназначен для обеспечения надежной инфраструктуры загрузки надстроек с некоторыми сложными опциями для загрузки сборок с различными уровнями доверия и даже запуска из процесса. Похоже, что он в основном основан на коде и довольно насыщен кодом, с множеством сборок, которые служат для защиты от проблем управления версиями, и использует Guidance Automation для генерации большого количества кода.

До сих пор я не нашел много статей System.AddIns, которые иллюстрируют, как это можно использовать для создания чего-то вроде Eclipse RCP, и многие люди, похоже, ломают голову над его сложностью.

Mono.Addins

Похоже, что Mono.Addins находились под влиянием System.Addins, SharpDevelop и MonoDevelop. Похоже, он предоставляет основы из System.Addins с менее сложными вариантами загрузки плагинов, но более простыми, с регистрацией на основе атрибутов, XML-манифестами и инфраструктурой для онлайн-хранилищ плагинов.

Он содержит довольно хороший FAQ и документацию, а также довольно надежный набор примеров, которые действительно помогают нарисовать картину того, как разрабатывать архитектуру, подобную архитектуре SharpDevelop или Eclipse. В примерах для GTI используется GTK, но сама структура не связана с GTK. Похоже, что он очень хорошо справляется с задачей № 1 (загрузка надстроек) и указывает путь к № 2 (среда рабочей среды). Похоже, что Mono.Addins был создан на основе MonoDevelop, но на самом деле я не изучал, предоставляет ли MonoDevelop хорошую базовую среду рабочей среды.

Управляемая структура расширяемости

Это то, о чем все говорят в данный момент, и постепенно становится все яснее, что он делает, но я все еще довольно размыт, даже после прочтения нескольких постов на SO. Официальное слово - «он может жить бок о бок» с System.Addins. Тем не менее, он не ссылается на него и, похоже, воспроизводит некоторые из его функций. Тогда мне кажется, что это более простая и доступная альтернатива System.Addins.

Похоже, он больше похож на Mono.Addins в том смысле, что он обеспечивает связывание на основе атрибутов. Он предоставляет «каталоги», которые могут быть на основе атрибутов или на основе каталогов. Похоже, что он не предоставляет какой-либо XML или проводки на основе манифеста. До сих пор я не нашел много документации, и примеры кажутся «волшебными» и более напоминающими DI на основе атрибутов, несмотря на разъяснения, что MEF не является контейнером DI.

Его лицензия только что открылась, но она ссылается на WindowsBase - не уверен, означает ли это, что он связан с Windows.

Акрополь

Я не уверен, что это такое. Это MEF или что-то еще?

Составные блоки приложений

Существуют блоки составных приложений WPF и Winforms, которые, по-видимому, предоставляют гораздо больше среды рабочей среды. У меня очень мало опыта с ними, но они, похоже, полагаются на автоматизацию навигации, очевидно, они связаны со слоями пользовательского интерфейса. Есть несколько примеров объединения MEF с этими блоками приложения.


Я приложил все усилия, чтобы ответить на свой вопрос здесь, но на самом деле я только поверхностно разбираюсь, и у меня нет опыта ни с одной из этих платформ. Надеюсь, некоторые из вас могут добавить больше подробностей о фреймворках, с которыми у вас есть опыт работы. Было бы здорово, если бы у нас была какая-то матрица сравнения.

Ответы [ 5 ]

1 голос
/ 23 апреля 2010

+ 1 для SharpDevelop. Библиотеки хорошо написаны и просты в расширении. На самом деле я пишу свое собственное приложение для рефакторинга кода, используя SharpDevelop Core и их инфраструктуру Addin.

Очень хорошо.

-Doug

1 голос
/ 12 ноября 2008

Вы действительно должны взглянуть на оболочку Visual Studio. Он доступен как в интегрированном режиме, где ваше приложение располагается в виде дополнения в Side Visual Studio, так и вы можете использовать оболочку в изолированном режиме, где оболочка просто служит базовой структурой для вашего приложения, аналогично оболочке Eclipse. Проверьте эту веб-страницу .

Оболочка Visual Studio является надежной, многофункциональной и бесплатной. Я еще не занимался разработкой, но я искал его для будущего проекта. Он выглядит столь же мощным из плагинных фреймворков, как Eclipse.

1 голос
/ 24 октября 2008
0 голосов
/ 11 ноября 2009

Я только что выпустил SoapBox Core как открытый исходный код и написал вводную статью о CodeProject . Это в основном то, что вы ищете. Он использует MEF для расширяемости, и я получил много идей от SharpDevelop. Обратите внимание, что он новый и все еще быстро развивается.

0 голосов
/ 24 октября 2008

Хотя я не знаком со спецификой RCP, я думаю, DxCore , вероятно, станет наиболее полной структурой для расширения Visual Studio управляемым кодом. Он использует архитектуру на основе плагинов и дает вам возможность создавать что угодно: от окон инструментов (размещая любой код по своему усмотрению) до «действий» (элементов, которые можно привязать к сочетаниям клавиш и контекстным меню) и рефакторингов с чрезвычайно богатым набором функций. контекстная система и механизм генерации кода, не зависящий от языка. Он обеспечивает очень хороший уровень абстракции поверх довольно пугающего живота Visual Studio. Он также написан как независимый от версии, поэтому плагины, написанные для DxCore, будут работать для VS 2005 и VS 2008.

Хотя он бесплатный, он не является открытым исходным кодом, и, к сожалению, документации очень мало. У вас есть примеры, которые являются хорошим началом, но вот некоторые другие ресурсы, которые могут быть полезны:

  • Марк Миллер является архитектором для DxCore / CodeRush / Refactor Pro !, и в его блоге (и * DNR TV эпизодов) есть записи о написании плагинов DxCore.
  • Существует форум сообщества , на котором вы можете оставлять вопросы. Далее следуют Марк и некоторые другие разработчики DxCore, а также некоторые люди из сообщества
  • Плагины DxCore в Google Code. Попытка собрать плагины, созданные сообществом, в одном месте. Это хорошая смесь инструментов и рефакторингов, хотя некоторые устарели.

Надеюсь, это будет полезно для вас. Единственное, что действительно плохо, я должен сказать об этом, и причина, по которой он, вероятно, не так широко используется, состоит в том, что это такая большая библиотека, почти без документации, вы должны быть готовы копать, чтобы узнать, как использовать некоторые из особенностей кулера.

Удачи!

...