2011-01-27 1 views
0

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

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

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

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

Благодарим за понимание!

Рассел ака SgtPooki

+0

Любые конкретные причины, по которым он не должен перекомпилироваться, а не просто компилироваться? (I.e. Ruby) – Robert

+0

Я в основном спрашивал о C++, думаю, я должен был указать это, но я надеялся узнать, как это сделать на C++, основываясь на том, как это делают другие языки, если ничего не произошло о C++. Мне нравится C++ =) – SgtPooki

+0

И после того, как я узнал больше о MySQL с момента публикации этого сообщения, я понимаю, что должен сделать что-то простое, как command & output. Затем программа будет проверять команды в базе данных вместо того, чтобы их жестко закодировала .. но это оставило бы ее очень ограниченным только [cout << getOutPutFor (userCommand); ] или что-то подобное .. – SgtPooki

ответ

1

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

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

+0

Я планировал использовать C++, но я думал, что может быть какой-то общий способ сделать это для всех языков, даже если они для некоторых являются растяжками. Почему это не рекомендуется делать? – SgtPooki

+0

@SgtPooki. На самом деле я не могу вспомнить, почему, но я помню, что это обсуждалось. Посмотрите на шоу. – Marcel

Смежные вопросы