Обучение - расширяемость: динамическая загрузка и любые другие обновления программного обеспечения без перекомпиляции

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

Я прочитал некоторые библиотеки DLL (или отложенную загрузку для Unix), динамическую загрузку, загрузку / выгрузку библиотек во время выполнения и т. Д., Но до сих пор не могу понять, что мне нужно делать. Я приведу пример программы, и если кто-то может направить меня в правильном направлении для того, чтобы чему-то научиться, чтобы началась моя большая программа, я буду чрезвычайно благодарен!

Допустим, я создаю консольную программу "iAmDog", в которой вы можете вводить команды, и собака соответствующим образом ответит выводом на консоль. Теперь давайте предположим, что когда я создаю эту программу, у собаки есть только 1 команда, "кора", которая выдает вывод "крыша крыши!". Как мне написать эту программу, чтобы, пока пользователь все еще ее запускал, я мог редактировать библиотеку или код где-то еще, чтобы добавить команду "sit" в репертуар собак.

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

Спасибо за чтение!

Рассел ака SgtPooki

1 ответ

Решение

Вы используете.NET? Тогда MEF, Managed Extensibility Framework, вероятно, хорошо подойдет для вас.

На Hanselminutes есть подкаст о MEF. Вы найдете mp3, а также стенограмму PDF, которая позволяет вам искать шоу. Они даже обсуждают возможность непрерывного просмотра папок на наличие обновлений, чтобы добиться того, что вы описали, хотя и не рекомендуют делать это.

Другие вопросы по тегам