我在一个拥有大量用户安装基础的大型代码库上工作.该代码最初是用vb6编写的,带有一些用于低级工作的c ++ COM模块.
重写已经在vb6中编写并且每天都被我们的客户使用的所有代码是完全不可行的,但我们也在继续对软件(大型和小型)进行改进和定制.
到目前为止,我的解决方案是将大部分新代码写入c#(winforms甚至现在为wpf),然后使用COM interop从vb6调用模块.
有没有人有像这样(10年以上)的长期软件套件的经验,不能完全重写,但需要同时不断的新开发.此外,在这样的混合系统中,连接模块的最佳方法是什么?我现在正在使用COM,但也考虑过IPC使用单独的进程.
很难给出一个包罗万象的答案,但高层次的方法很明确.至少,这是我用过的方法.确定目标的优先顺序,然后尝试确定实现这些目标的成本.您的成本基本上可归结为"开发时间".
首先,你想要任何有效的工作.如果你有一些有效的东西,并且没有充分的理由重写它,那就保留它.
如果您的某些现有代码需要更新以完成其工作,那么您正在考虑维护成本.此时,您需要确定重写是否会提高维护成本,足以使其值得.不要忘记减去新bug的测试和调试,因为会有新的bug.不要因为它已经过时而忽略工作代码.
如果您现有的代码具有足够的模块化,那么通常可以一次完成一个代码.首先重写高维护组件.
如果您将在C#中进行新的开发,那么您应该使用COM组件,直到您有足够的理由来替换它们.