Разработка приложения, которое может принимать надстройки - PullRequest
8 голосов
/ 23 марта 2011

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

Fire Bug in Mozilla Firefox.

Как они проектируют такие приложения и как приложение принимает модуль и как оно может автоматически интегрироваться.

Во-вторых, я не знаюесли описанный выше процесс является общим или зависит от языка или инструмента.Можем ли мы сделать такое приложение в WPF или Winforms?

Ответы [ 4 ]

6 голосов
/ 23 марта 2011

Выезд MEF .

Managed Extensibility Framework (MEF) - это новая библиотека в .NET, которая позволяет повторно использовать приложения и компоненты. Используя MEF, приложения .NET могут перейти от статической компиляции к динамической компоновке. Если вы создаете расширяемые приложения, расширяемые платформы и расширения приложений, тогда MEF для вас.

2 голосов
/ 23 марта 2011

Возможно, вы захотите взглянуть на LuaInterface .Вы имеете полный контроль над тем, что и как выполняется в файлах!

2 голосов
/ 23 марта 2011

Если вы сосредоточены именно на WPF и .NET, посмотрите Mono.Addins .На сайте документации есть список проектов, которые используют Mono.Addins - я уверен, что вы можете найти много примеров того, как написать приложение, готовое к надстройке.

Насколько это правильнодизайн идет, это немного сложно, чтобы получить право.Если вы будете следовать принципам упаковки, упомянутым в книге Роберта К. Мартина, Agile Software Development, Принципы, Шаблоны и Практики , дизайн вашего приложения, естественно, позволит добавлять дополнения.Два принципа, которые имеют особое значение, - это принцип обращения зависимостей и принцип стабильной абстракции.

2 голосов
/ 23 марта 2011

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

Это возможно в C, C ++, C # и многих других языках, но реальная реализация зависит от того, «как» вы хотитеэто работает:

  • Многие игры (особенно MMORPG) позволяют пользователю изменять и расширять свой пользовательский интерфейс, используя некоторую комбинацию файлов XML и сценариев (например, Lua).Это более простой и безопасный подход, особенно ориентированный на более неопытных пользователей (его, скорее всего, проще редактировать / обновлять / использовать, вашим пользователям не нужно будет понимать полный язык, а ВЫ сами решаете, что выставлять).

  • Другие программы используют файлы библиотек для плагинов.Общая концепция аналогична приведенной выше, но ее сложнее использовать (для создания дополнений / расширений вы должны знать поддерживаемый язык программирования), и вы можете выставить больше, чем хотели бы (например, дополнения могут изменять части вашей программы, которые вы не делали).не хочу, чтобы они касались).

Общий процесс всегда похож:

  1. Поиск доступных файлов дополнений (XML-файлы, файлы Lua, XUL-файлы), zip-файлы, dll-файлы, ... ваше решение)
  2. Загрузка и оценка файлов (например, загрузка файла сценария, анализ файла xml или загрузка dll)
  3. Запустите код иликод, предоставленный аддон-файлами или кодом вызова внутри этих файлов и т. д.

Поскольку вы пометили это в C #, я думаю, вы предпочтете подход dll / assembly.Есть другие вопросы с рабочими решениями, например, этот .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...