我工作的應用程序是一個WinForms應用程序,幾乎全部用Visual C++編寫,大約在2003年。在我到達現場之前,由於UI構建框架,.NET被選中,但絕大多數代碼是在非託管的土地。其中一部分是絕對必要的 - 我們對一些非常大的數據集進行一些實時圖像處理,使用一些需要指向圖像緩衝區的英特爾圖像處理庫,而我們真的是,其中< 1%的情況性能是至關重要的。在混合C++ .NET應用程序中強調託管還是非託管?
該應用程序本身是一個大型的可執行文件,它將UI代碼鏈接到幾個靜態庫,每個庫都對應一個功能子系統 - 數據採集,圖像處理等等。自從我加入後,我通過編寫託管包裝器將這些子系統分成了幾個子系統,我們在其他應用程序中重用,但主應用程序仍然由靜態鏈接庫組成。
我和我的同事對於是否進一步發展應該強調非託管還是管理有很大不同。除了我提到的情況外,沒有規定非託管代碼的性能要求。我們堅定致力於.NET,所以跨平臺不是問題。我認爲我們應該贊成管理,除非另有規定。
上個月,我的同事開發了一套管理子系統的類;而不是將它們作爲ref類實現,並將某些事件添加到.NET接口中,他編寫了Observer的幾個實現,使用gcroot爲託管客戶端提供句柄,並允許自己留在非託管的土地上。這在我看來是錯誤的,只是因爲爲什麼寫一些你可以免費得到的東西呢?但我想知道我是否過於僵化。
有什麼想法?