微軟 C++ 技術的脈絡是怎樣的?

微軟的 MFC ATL COM COM+ ActiveX DirectX OLE OCX 等等都是幹什麼的,有什麼關係?其中哪些技術已經淘汰?既然未來的發展方向是.net,那vc++的領域是不是只剩下遊戲開發了


問題有個錯誤,就像你不能說數學物理歷史政治是漢語的一樣,你也不能說這些技術是C++的技術。C++是跨平台的語言。

脫離了具體使用場景,要談淘汰就是扯淡。每個工具都有多個使用場景,比如在家裡大多數的時候你可以搬個板凳來替代梯子,但是要說搬個板凳就能代替消防車上的梯子就是扯淡。用得比較少、有替代品不代表就被淘汰了。使用場景少的技術,被替代的可能性比較低。相反大眾化的技術被替代的可能性較高。比如對Microsoft Office或者Windows商店應用的第三方開發來說,微軟定的API介面是COM這個是躲不掉的,就算用VSTO這樣的.Net封裝類也需要了解COM不然會有引用泄漏、死鎖等問題。在用什麼編程語言來做開發這一點上倒是有很多選擇。要看這些技術現在都有什麼使用場景,可以去招聘網站和技術社區搜索一下。

對於成熟的微軟技術來說,用起來根本就用不到微軟,網上教程討論一大把,跑起來也不會出什麼需要找微軟技術支持的問題,以至於一個成熟技術到底活躍用戶數是多少微軟是不知道的——當然,除了出問題的時候。Windows 7發SP1的時候微軟主推http://ADO.Net已經十多年了,ADO也已經有兩個大Windows版本都沒動了,微軟以為在新項目里用ADO的用戶數已經少到可以修一個架構bug來兼容64位的Office——但是收到的反饋表明他們大大低估了ADO的用戶數(A Better solution for the Windows 7 SP1 ADO GUID changes)。

微軟就是一個賺錢機器而已,只要一個技術有足夠Windows開發者買賬微軟就會支持,微軟不會和錢過不去,你看現在不是連Objective-C都開始支持了?至於一個項目應該使用什麼技術——那是你自己應該做的事情,不要偷懶,一個技術熱門不代表就適合你的用戶場景。比如DirectX和C++做遊戲再熱門,Windows Phone不支持還不是只能改去用C#和Silverlight?


這個話題很大。每一個都可以寫很長的故事。

MFC: Microsoft Foundation Class, 微軟基礎類庫。主要封裝Windows
API便於以C++中的使用。包含UI,資料庫,通訊等。

ATL:Active Template
Library. 活動模板庫。主要為了支持COM開發,其特點是基於template,bootstrap小。

MFC中現在已經重用很多ATL的內容,比如string.

COM: 二進位對象模型,主要為了方便不同語言之間的組件的互相調用而提出。

OLE:對象鏈接與嵌入,基於COM,但增加持久化,對象激活等等,這樣可以在一個程序中調用另外一個程序。比如Word中插入excel表格。

OCX微軟基於COM的組件標準。

ActiveX: OCX的互聯網版

DirectX: 遊戲API,基於COM。

COM+:微軟的中間件服務。要說清COM+就必須說DCOM。我們知道COM是二進位組件調用模型,不同語言寫的組件可以互相調用。但這個調用是要求在同一台機器上的。如果需要跨機器,你必須對COM進行擴展,這就是DCOM。COM+是在DCOM和COM基礎上利用截取技術做出的中間件服務。增加了事務支持,同步支持等內容。

在Windows中,COM並末死去。最新的Windows Runtime也是基於COM。


STL是C++標準庫,和微軟沒關係; DirectX你看看就知道是幹嘛的了。其他的都是過時技術,忽略吧。


推薦閱讀:

全息投影、虛擬現實與增強現實的關係與區別是什麼?在實際生活中會有怎樣的運用?
哪些跡象表明PC時代已落幕?
VSCODE如何在終端中使用Linux風格的路徑或者是相對路徑?
win10為什麼要靜默安裝遊戲和軟體?是入鄉隨俗還是收費推送?
微軟和蘋果在對待「槍」這個 Emoji 表情上截然不同的態度體現了什麼?

TAG:微軟Microsoft | C | MFC | DirectX | ActiveX |