В настоящее время мы работаем на базе унаследованного кода C ++, которая состоит из нескольких программных компонентов.
Один из компонентов написан так, что его крайне сложно поддерживать. (Например, выделение памяти выполняется в X месте, но удаление памяти выполняется в Y. Это делает управление памятью болезненной работой). До сих пор мы смогли решить (или обойти) все проблемы утечки памяти.
Однако, после нескольких раундов исправления ошибок, мы считаем, что из-за высокой стоимости обслуживания этого программного компонента мы не можем отойти слишком далеко от текущего этапа.
Я знаю, что было бы плохо переписать исходный код: http://www.joelonsoftware.com/articles/fog0000000069.html
Однако вместо перефакторинга текущего кода, мы ожидаем, что будет лучше переписать с нуля из-за
- До сих пор никто в команде не мог полностью понять этот программный компонент.
- Устаревший программный компонент представляет собой небольшую часть программного обеспечения. 20 тысяч строк, наверное
- Наши команды достаточно четко понимают требования и то, что мы пытаемся достичь
Следовательно, мы планируем использовать управляемый код, по крайней мере сделать управление памятью безболезненным занятием . Мы планируем выбрать C #, как
- Весь наш код C ++ скомпилирован с использованием Microsoft VC ++
- Мы используем MFC в других программных компонентах. (в форме DLL) Каждая DLL имеет свой собственный ресурс.
Я из C ++ и Java, и ничего не знаю о C #.
- Насколько хорошо C # для взаимодействия с MFC DLL, с некоторыми функциями DLL будет вызывать MFC GUI?
- Что-нибудь, на что мне нужно обратить внимание?
- Будет ли легче взаимодействовать с устаревшими DLL-библиотеками C ++, если мы используем Managed C ++?
Спасибо.