Профилируйте приложение, решайте, в каких точках интеграции вы можете отключить логику C # и перейти в C ++ и наоборот. Организовать их в план, чтобы шаблон проектирования Facade перемещался по системе, постепенно заменяя C ++ на C #. Ключевой проблемой является стоимость процессора и памяти при принятии решения о переключении языков на каждом подходящем фасаде / интерфейсе.
Возможно, вы захотите иметь возможность вносить изменения, поэтому вам лучше всего использовать один набор исходного кода и репозиторий исходного кода для исходного кода C ++, а другой набор и репозиторий для фасада плюс C #.
Затем, когда в лоток входит работа по улучшению / обслуживанию, вы применяете его к обеим базам кода и стараетесь убедиться, что фасад движется по системе, начиная с кода, который с наименьшей вероятностью изменится в расширениях или обслуживании, чтобы минимизировать удвоение изменений работают.
Также идеально структурируйте свою работу, чтобы вы могли откатить фасад, чтобы вернуться к 100% C ++, если вы наткнетесь на препятствие.
Чтобы проверить, можно ли разделить пару особенно непостижимых модулей C ++ на кусок C ++ и кусок C #, запустите их в двух разных процессах Win32 C ++, взаимодействующих с использованием канала или сокета. Таким образом, вы получите лучшее представление о том, есть ли проблемы с управлением памятью или производительностью, которые необходимо исправить, прежде чем вы сможете разделить цепочку вызовов на этом этапе.