2011-11-21 47 views
1

我的公司目前正在從VB6程序轉換到.NET。我一直在爲傳統程序編寫模塊作爲原生C++ DLL一段時間,而我的老闆設想了一個場景,我們基本上將GUI和相關邏輯(什麼時候出現按鈕等等)移植到VB.NET中,並繼續開發底層程序邏輯作爲本機C++ DLL。尋找關於使用.NET和C++進行本地管理的建議

他很擔心.NET代碼可能被複制,因爲中間語言可以很容易和可靠地反編譯,就像Java類文件一樣。所以請假定有人真的想要他的代碼,但是從本機代碼反彙編對他們來說是不可行的。

現在,我認爲在.NET中開發所有東西比如託管C++更聰明。然後GUI和程序之間的接口大概是更少的麻煩,不涉及COM或其他進程間通信,我也可以使用整個.NET API,我認爲這可能會爲我節省很多時間編碼。

請告訴我,如果我的假設是有問題或錯誤的。如果這是正確的,你也可以推薦在.NET中編程,如果必須使用用於GUI,那麼我可以通過什麼方式與我的老闆聯繫?

我聽說有混淆器。他們可靠嗎?他們有多難使反編譯?有一個特別好的測試,或者你也有一個很好的測試結果嗎?我想確保他的代碼庫是安全的是這裏最大的問題,但我也在尋找關於這件事的其他方面的見解。

+0

有趣的是,現在我在這裏得到反向逆向工程廣告:) –

回答

1

我的理解是,有很好的混淆器,雖然我沒有足夠的經驗與他們說只是他們如何好。我聽說過有關Dotfuscator的好消息。他們有一個評估版本。

如果你打算編寫.NET代碼,我會建議你在.NET中做所有事情。我寫新的本地代碼的唯一原因是,如果我真的需要性能(.NET代碼對於大量計算會比較慢),或者如果本機代碼正在做一些你在.NET中無法做到的事情。也就是說,如果不需要,我不會建議將現有的本地代碼轉換爲.NET。使用Platform Invoke來調用.NET的本地代碼非常簡單。

但我會用託管C++或其他託管語言編寫新代碼。它使事情變得更容易。另外,您可以利用.NET運行時庫,這可能會節省您的編碼時間。您將使用與GUI代碼相同的運行時環境,這意味着您可以使用它們使用的相同數據結構。這將簡化編碼並減少您在GUI代碼和處理代碼之間封送數據的問題數量。

相關問題