久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

介紹幾本COM的書籍

 北海藏經(jīng)閣 2011-07-20
介紹幾本COM的書籍

作者:未知 來源:月光軟件站 加入時間:2005-2-28 月光軟件站

-

 

介紹幾本COM的書籍


  -- 韓少勇

最有效的獲取知識的途徑就是讀書,當(dāng)然要讀好書,。難怪古人把求學(xué)也稱作“念書”,。                    

引言

實際上,寫一些介紹電腦圖書的文章是我長久以來的愿望,。一方面由于我的朋友們經(jīng)常讓我為他們推薦
一些切實有用的書,,另一方面的原因是我在早些時候的學(xué)習(xí)并不很順利,面對書店里魚龍混雜的
“繁華”,,真是不知所措,。結(jié)果橫下心來,只要覺得差不多,,就買,!結(jié)果買了很多本不必買的書,浪費
了錢財、浪費了時間,。數(shù)年下來,,倒也對電腦圖書市場有了一些看法,產(chǎn)生了一些感慨,。

大多數(shù)世人都不是圣賢,,因此往往聽得贊美,對批評卻很難接受。我的許多朋友擔(dān)心我的安全,,勸我多
說好話,。可是書有好有劣,,說假話當(dāng)然有違初衷,,說真話又難免得罪人。于是我們共商了一個“安全政
策”:以“揚善”為主,,在詳細(xì)地介紹了一本好書之后就算提了幾點不足,,我想作者和出版社還是會接
受的吧。至于一些不負(fù)責(zé)任的出版,,我只說現(xiàn)象,,不提名字。(請大家理解,,浮生在世,,安全第一、安
全第一,。)
   
目前IT行業(yè)競爭激烈,市場風(fēng)云變換莫測,為了生存,,所有人都超負(fù)荷地承受著各方面的壓力。當(dāng)程序員
或者經(jīng)理們好不容易從一大堆煩瑣的事務(wù)中探出頭來,,拿起一本向往已久的專業(yè)書籍來充實自己的時候,,
他們當(dāng)然希望盡快的把書上的東西轉(zhuǎn)化為自己的思想,從而利用這寶貴而短暫的緩沖期學(xué)到更多的東西,。

但可惜的是有些書卻不是為了這個目的來寫的,書上的話象文言文一樣難懂(也許有些作者覺得只有這樣
才能顯示出他的水平深不可測,也許有些作者壓根兒就沒有理解所講的內(nèi)容,只好用一大堆云山霧繞的語
言來“遮羞”),。不僅如此,還有更可怕的現(xiàn)象,,當(dāng)電腦圖書開始呈現(xiàn)出強(qiáng)勁的銷售勢頭的時候,,無數(shù)
的“專家”、“大師”就在一夜之間涌現(xiàn)了出來,,各種名字“大氣磅礴”的書籍,、培訓(xùn)讓人目不暇接,
就象大街上穿梭不息的出租車一樣多,。且不說他們的水平究竟如何,,我想,,“多必濫”似乎是一個曾被
驗證了許多次的道理,。我就在北京某大學(xué)的布告欄里看到了“Internet培訓(xùn)”的宣傳,實在讓人哭笑不
得,。

現(xiàn)在,,形形色色的電腦培訓(xùn)班已經(jīng)成為了“IT文化的一大風(fēng)景”。對于這種現(xiàn)象,,外國人的評論似乎更
能發(fā)人深?。?#8220;在美國,,是沒有這么多培訓(xùn)班的,但是一個小學(xué)生都可以熟練地操作電腦,。”“在中國,,
電腦培訓(xùn)班到處都是,但計算機(jī)技術(shù)的普及卻仍然是一個問題,。”“中國的自行車很多,,男女老幼都會
騎,但是你見到過自行車培訓(xùn)班嗎,?如果到處都是自行車培訓(xùn)班,,在不厭其煩地教你‘自行車的輪子直
徑多長、有多少根輻條’等等問題,,那么相信會騎自行車的人會越來越少,。”寫書或者譯書也是如此,
電腦圖書的空前繁榮是否表示我們的水平很高呢,?我認(rèn)為不然,。有時為了解決個別問題去書店找找資料,
結(jié)果往往是浪費了時間還徒留“天下文章一大抄”的感慨,。題材和形式都很雷同的書籍的大量充斥市場,,
我稱之為“爆米花現(xiàn)象”。典故是這樣的:前些年,,我家門前的大街上來了一家爆米花的,,因為獨此一
家,所以生意紅紅火火,??墒菦]過多久,又雨后春筍般地涌現(xiàn)了十幾家,,沿著大街一字排開,,煞是壯觀。
現(xiàn)在大家的生意均不太好,,但誰都沒有意見,,只是我家常年“米花飄香”。如果說中國人“跟風(fēng)”的脾
性是祖宗傳下來的,,因循守舊者把它奉若神明的話,,我們的電腦作者們是否應(yīng)該具有一些開創(chuàng)精神,靜
下心來想一想,,市場上究竟缺些什么書,,不要一味地“人云亦云”。

雖然好為人師者比比皆是,但是老師卻不是那么好當(dāng)?shù)?,因為你得對所講述的知識有深刻的理解,并能
夠用深入淺出的語言來講給別人聽,。態(tài)度當(dāng)然是第一位的,但是書的神圣卻被不少作者和出版社踐踏著,。
一些出版社不顧質(zhì)量,,一味求出書快,結(jié)果商機(jī)有了,,卻倒了牌子,。一本原先很不錯的英文書被他們翻
譯得驢頭不對馬嘴,根本不能看,。而由于版權(quán)賣給了他們,,其他出版社有心重翻也無能為力了。一本好
書甚至一套好書就此被糟蹋,,而利益受損的當(dāng)然是讀者,。除了態(tài)度,還要有水平,,書不是隨便一個人都
可以寫出來的,。時下里許多書的名字起的要多嚇人有多嚇人,總是讓我想起了街邊賣大力丸的:“只要
吃了我的藥,,就刀槍不入,、百毒不侵”??墒聦嵣显S多作者本身功力薄弱,, 寫不出架構(gòu)與精神,于是
入門書籍千篇一律就是教大家按下菜單,,選擇命令,, 出現(xiàn)對話框,按下‘確定’ ...”,。 真正的老
師不好找,,但“二把刀師傅”卻到處都是(就象現(xiàn)在一天到晚占著電視頻道的歌星、影星一樣讓人眼花
繚亂),。加上某些出版社把關(guān)不嚴(yán),,這才造成了是個人就可以出書的現(xiàn)象。

今天,,我為大家介紹幾本COM的書籍,,希望能在COM的學(xué)習(xí)上助君一臂之力。

欲學(xué)COM之必讀書籍---《COM技術(shù)內(nèi)幕》
書名:《COM技術(shù)內(nèi)幕》
英文原名:《Inside COM》
作者:(美)Dale Rogerson
Microsoft Press 1997
中文譯者:楊秀章
清華大學(xué)出版社 1999年3月第1版
定價:50.00元(帶光盤)


Microsoft Press的《Inside ……》(翻譯成中文就是《……技術(shù)內(nèi)幕》)系列書籍似乎總保持著獨
到的權(quán)威性,,很少讓人失望,。從《Inside OLE》到《Inside Visual C++》,都十分受到讀者的歡迎,,
名聲極好,。《Inside Visual C++》稱的上是深入淺出的典范,,大師的語言以及清楚的思路都讓人收益
非淺,。但是可能是由于名字的原因,很多想學(xué)Visual C++的人面對這本厚厚的大作的時候,,多少總有些
膽怯,,擔(dān)心自己看不懂。少勇認(rèn)為,,只要你具有了一些C++的基本知識(有WIN32的概念更好),,學(xué)這本
書就不難,當(dāng)然毅力是克服困難的秘方,。

《Inside COM》也稱的上是一本難得的上乘之作,,這本書的最大特點在于語言輕松、循序漸進(jìn),,在選
材和結(jié)構(gòu)組織上不難看出作者著實是煞費了一番苦心,。為了把“門檻”設(shè)得低一些,作者在前幾章盡可
能地回避了很多諸如類廠,、注冊表等難點和細(xì)節(jié)問題,,集中“優(yōu)勢兵力逐個殲滅敵人”,我不知道
Dale Rogerson先生是不是從朝鮮戰(zhàn)爭中彭總司令的指揮藝術(shù)中得到的啟示,。在示例程序的安排上,,每
章都有一到兩個獨立于其他章節(jié)的程序,而且作者盡量使這些程序簡短而完整,。一方面短的例子閱讀起
來比較容易,,另一方面讀者可以將學(xué)習(xí)的重點放在COM組件的需求上,而無需費力去搞清楚復(fù)雜的例子中
的那些不必要的細(xì)節(jié)及復(fù)雜的實際問題,。于編程語言,,作者采用的是傳統(tǒng)的C++語言,沒有涉及到任何
WIN32以及MFC的知識,,除了在第九章中用到了一些方便的接口指針類之外,,書中的其他部分都沒有用到
模板類??傊髡弑M可能地拋掉了一切累贅使讀者能輕裝前進(jìn),,只要你學(xué)過標(biāo)準(zhǔn)C++,有面向?qū)ο缶幊痰?br>基本概念(封裝性,、繼承性,、多態(tài)性),,就大可放心地讀這本書了。

書的前五章講的很明白,,都是一些諸如組件,、接口、引用計數(shù),、接口查詢以及DLL等基本概念,,無需少
勇多費口舌。稍微有點美中不足的是書里邊建立程序時都用如下命令:
“cl Client1.cpp Create.cpp GUIDS.cpp UUID.lib”
“cl/LD Cmpnt1.cpp GUIDS.cpp UUID.lib Compnt1.def”以及
“nmake –f makefile”,。

問題是,,現(xiàn)在有多少人能夠很熟練地寫makefile文件以及運用nmake和cl命令?恐怕很少吧,。于是讀者
就得花很多時間來琢磨程序的編譯過程,,費時、費事,、不打糧食,!
   
當(dāng)然,作為原理性的論述,,這些東西還是要講,,但是至少應(yīng)該告訴讀者該如何操作才對。我拿第五章的
例子來說,,首先是建立組件DLL:由于有了VC++,,我們大可不必用“cl/LD”來做了,只需要編輯好
CMPNT1.CPP,、CMPNT1.DEF以及IFACE.H,、GUIDS.CPP后,在VC++的集成環(huán)境中選擇建立一個空的
WIN32 DLL工程,,把這四個文件加入工程,,編譯連接后CMPNT1.DLL就生成了。然后是建立客戶程序:
很多人往往這樣做:先建立一個空的WIN32工程文件,,然后把編輯好的標(biāo)準(zhǔn)C++文件加入工程,,可是卻
通不過連接。

于是不止一次的有人問我:在VC++下如何建立標(biāo)準(zhǔn)C++的工程,?
   (1),、隨便寫一個標(biāo)準(zhǔn)C的程序,越簡單越好,,如:
            main(){return 1;}
把這個文件存入你希望的目錄下,,一定要與你想建的工程同名。(如果你希望的工名是APPLE,,那么你
應(yīng)該把這個文件存為APPLE.CPP),。
   (2),、編譯APPLE.CPP,這時VC++會提示你沒有建工程,,是否需要他為你缺省地建一個,,當(dāng)然
“是”。于是VC++就在存有APPLE.CPP的目錄下創(chuàng)建了名字為APPLE的工程,。
   (3),、下一著就是“過河拆橋”,,從工程里刪除APPLE.CPP,,加入或者編輯你希望的文件即可。

書的前六章講的很明白,,都是一些諸如組件,、接口、引用計數(shù),、接口查詢以及DLL,、HRESULT、GUID,、
注冊表等基本概念,,大體上過得去,無需少勇多費口舌,。

第七章講述類廠,,利用類廠來創(chuàng)建組件可能會讓人迷惑:不用類廠,一樣可以寫出功能同樣強(qiáng)大的組
件來,,為什么還要多此一舉呢,?少勇認(rèn)為,如果您只想寫一個進(jìn)程內(nèi)的組件,,那么這句話一點沒錯,,
因為您完全可以寫一個全局函數(shù)來創(chuàng)建所有的組件,這時,,我們絲毫看不出類廠有什么存在的必要性,。
但是,如果您要跨進(jìn)程來創(chuàng)建組件,,則情況就不同了:您能寫出在其他進(jìn)程中創(chuàng)建組件并返回句柄的
“全局函數(shù)”來嗎,?于是乎Microsoft就想出了創(chuàng)建一個特殊的組件,用這個特殊組件來創(chuàng)建其他的
組件,,這個特殊組件就是類廠,。在進(jìn)程外組件的創(chuàng)建過程中,類廠接口IClassFactory是第一個跨進(jìn)
程的連接,。

第八章是至關(guān)重要的一章,,講述了組件的復(fù)用:包容和聚合,。關(guān)于“COM是不是面向?qū)ο蟮?#8221;之類的
討論好象一直在進(jìn)行著。COM曾經(jīng)被指責(zé)是一項很差的技術(shù),,原因是COM不支持傳統(tǒng)意義上的“繼承”,。
這里我們得這樣來看這個問題:組件具有“可獨立發(fā)布特性”和“二進(jìn)制特性”,既然可獨立發(fā)布,,
就不應(yīng)該依賴于某個基類,,否則如果基類變了,那么組件也得跟著做變動,,可獨立發(fā)布也就無從談
起,。而組件復(fù)用又是一個現(xiàn)實存在的問題,因為用現(xiàn)成的組件實現(xiàn)新組件的某些功能可以節(jié)約大量的
時間,,COM利用包容和聚合實現(xiàn)了組件的復(fù)用,,這樣既維護(hù)了組件的“可獨立發(fā)布特性”,又變相實
現(xiàn)了“繼承”,。嘻嘻,!把“貓”叫了個“咪”。少勇認(rèn)為,,關(guān)于一些無礙全局的爭吵越少越好,,衡量
一個技術(shù)好壞的標(biāo)準(zhǔn)是看它是不是確實好用,能不能解決我們的問題,。

關(guān)于本章的示例程序作一點說明:

細(xì)心的讀者可能都會提出這樣的問題:在Cmpnt1.cpp的CA::Init()函數(shù)中有這么一句:
hr=m_pUnknownInner->QueryInterface(IID_IY,(void**)&m_pIY);
通過這句話,,外部組件CA將得到指向內(nèi)部組件IY接口的指針。但是問題就此產(chǎn)生了,,是不是應(yīng)該調(diào)
用NondelegatingQueryInterface呢,?種種跡象看來都應(yīng)該是的,因為我們這里要得到非代理未知
接口的指針,。如果調(diào)用了代理未知接口的查詢函數(shù),,情況會怎么樣呢?代理未知接口又把請求轉(zhuǎn)發(fā)
給外部組件,,而外部組件又把請求推回給內(nèi)部組件,,形成了死循環(huán)。但是運行一下例子程序,,發(fā)現(xiàn)
死循環(huán)并沒有出現(xiàn),,一切正常!為什么,?仔細(xì)一看方突然醒悟:追究一下m_pUnknownInner指針的
由來,,發(fā)現(xiàn)它是指向內(nèi)部組件的非代理未知接口的,也就是說這里調(diào)用的實際上就是
NondelegatingQueryInterface,,當(dāng)然不會出錯(這也是面向?qū)ο蠖鄳B(tài)性的一個體現(xiàn)),。

第九章除了智能指針之外,,基本上沒有新概念的提出(實際上智能指針也不是什么新東西,
Visual C++本身就支持智能指針),。至于CUnknown和CFactory,,只要前八章您切實看懂了,理解
它們不是什么難事,。

至于接下來的三章……呃……據(jù)說此書一出,,從讀者反饋的意見來看,對后幾章批評頗多,。少勇的
觀點如下:首先成績是主要的,,因為COM的跨進(jìn)程調(diào)用的確很復(fù)雜,少勇也是花了九牛二虎之力才
“撥云見日”,,能講成這個樣子已經(jīng)很不容易了,。但是讀者對書有意見主要是因為沒有看懂,,他們
希望的是把一個復(fù)雜的知識用最通俗的語言講出來,,而且要嚴(yán)密。因此,,這幾章的語句和概念需要
斟酌處還是很多,,對于DCOM的論述應(yīng)該加強(qiáng)(但是這確實會有一定難度)。

書的最后提供了一個七巧板的例子,,有興趣的讀者可以研究一下,,玩一玩,辛苦了半天,,也該輕松
片刻了,。

書的結(jié)束語中寫到:“在理解了本書介紹的所有內(nèi)容之后,讀者應(yīng)該可以算得上是一個COM專家了”,。
但少勇以為,,此言尚為時過早,如果把COM的知識比做一個“大樹模型”,,那么本書只是解決了最
基本的問題,,也就是大樹的第一個樹杈之下的主體部分。如果說完全了解COM,,那么還應(yīng)該了解COM
這棵大樹的每一個樹枝,、每一片樹葉以及樹葉上的蟲子。

此書值得一看---《COM/DCOM編程指南》
書名:《COM/DCOM編程指南》
英文原名:《COM/DCOM Primer Plus》
作者:(美)Corry, Mayfield, Cadman
Sams Publishing 1999
中文譯者:劉云 孔雷
清華大學(xué)出版社 2000年1月第1版
定價:52.00元(帶光盤)


SAMS出版的書以它獨到的視角占領(lǐng)著市場,,在讀者中名聲還挺不錯,。看他們的書可能是一條快速入門
的捷徑,。在現(xiàn)在COM書籍非常短缺的時候,,《COM/DCOM編程指南》稱得上是一本值得一看的書,。少勇
對此書的評價是:關(guān)于原理的論述中規(guī)中矩,無明顯的破綻,,而且對相關(guān)知識的涉及頗廣,,語言也還
算流暢,倒也十分難得,,只可惜火候尚欠,,不夠深入,因此,,稱不上是一本“COM專著”,。讀完此書,
少勇閉目細(xì)品,,就好象在滿懷希望地吃了一頓大餐之后卻沒有哪道菜是上檔次的“大廚手藝”,,不免
覺得有些美中不足。不過,,從實用的角度來看,,此書卻也稱得上是上乘之作了,不光給出了完整的例
子,,在第十章還給出了DCOMCNFG的配置示例,,實為難得。讀者如果把這本書和其他的一些書搭配著看,,
《指南》當(dāng)之無愧是一個優(yōu)秀的“二傳手”(看得出譯者在為本書取名字的時候確實花了一番心思,,
倒也十分得體)。

SAMS公司的書的一貫風(fēng)格是門檻較底,,學(xué)起來基本沒有什么痛苦,。但COM卻是一種比較高級的技術(shù),
“零痛苦”的學(xué)習(xí)似乎不太可能,,而且SAMS總是力求實用,,于是免不了舉一些實際的例子,因此所涉
及的知識就比較多了,。如果您對C++,、事件驅(qū)動編程以及MFC還不夠了解的話,則應(yīng)該在閱讀此書之前
先去看一些相關(guān)知識的書籍,。

書中關(guān)于接口定義語言(IDL)的論述可以算是一個閃光點,。IDL最初并不是設(shè)計為描述COM類和接口
的一種方法,而是開放軟件基金會為分布式計算環(huán)境(DCE)規(guī)定的RPC IDL,。微軟最初把IDL設(shè)想為
描述可用于Windows NT機(jī)器間通信的RPC接口的一種方法,,后來逐步加入了許多專用于COM組件的關(guān)
鍵字,用來描述COM接口以及COM對象。

談到IDL和ODL,,可能不少讀者會感到很迷惑,。不過沒辦法,這是一個歷史遺留問題,,書中第170頁的
論述相信會給您一個滿意的答復(fù),。

美國人寫書,喜歡把一些背景文化寫進(jìn)去,,少勇非常贊賞,。比如這本書中提到了“COM的生活方式”,
著實讓人眼睛一亮,、精神為之一震,。Don Box 是一位COM領(lǐng)域泰斗級的人物,在MSDN 中時常能見到
他的大作,,他所說的“COM的生活方式”實際上是在區(qū)別COM編程與傳統(tǒng)的C++程序開發(fā)的不同以及在
軟件工程上的改變,。

書中有如下評論:
“強(qiáng)烈建議你以IDL開始所有的編程工作,不要將IDL僅僅用于生成本地服務(wù)器的代理和占位模塊,。
正象Don Box曾經(jīng)說過的,,‘真正的COM程序員用IDL開始工作’”。

雖然少勇對大師非常尊重,,但還是認(rèn)為此言過于絕對化和偏激了,。因為Don Box所講的實際上是一種
理想化的軟件開發(fā)方式,,我們基本遇不到,。按照Don Box的理論,如果我們開發(fā)一個工程,,全部運用
COM組件,,那么在開始編程之前應(yīng)該設(shè)計好所有的接口,由于接口的不變性,,設(shè)計好之后就不應(yīng)該改
變了,,因此也就應(yīng)該從IDL開始所有的工作了?;氐浆F(xiàn)實中來,,我們的程序員在做一個產(chǎn)品的時候,
一般都先構(gòu)造一個程序框架,,組件只是完成一些基本功能,,不是工程的全部,于是大師的言論在此并
不適合我們,。

許多人認(rèn)為,,“在軟件上,美國的今天就是我們的明天”,于是紛紛把美國人的發(fā)明,、理論拿來當(dāng)作
圣經(jīng)來讀,。但少勇說:“借鑒的同時還要有選擇、有思考,,看它是不是切實符合中國的國情,。”

書的最后一章利用前面講述的內(nèi)容創(chuàng)建了一個真正的分布式應(yīng)用的例子,建議讀者仔細(xì)研讀一下(包
括本書中的其他程序),要勇于去吃螃蟹。否則就算少勇抹一抹嘴邊的油,,告訴您說螃蟹是何等的美
味,,可能信的人也不多。

強(qiáng)力推薦,!COM的“寶典專著”---《COM原理與應(yīng)用》
書名:《COM原理與應(yīng)用》
作者:潘愛民
清華大學(xué)出版社 1999年11月第1版
定價:39.00元


    樸素?zé)o華的外表,、平淡無奇的名字、幾乎白送的價格是少勇對這本書的第一感覺,。但翻開此書,,
   
    簡單地瀏覽之后,少勇頓時“心跳加速,、渾身來電”,,揉了揉眼睛,大有一種撿了金子的喜悅,。
于是一章一章細(xì)細(xì)品來,,越看越起勁,越讀越過癮,,不禁驚呼:“此書乃COM之寶典專著也”,!少勇
認(rèn)為,本書具有“系統(tǒng)性,、嚴(yán)密性,、深入性、實用性”四大特點,。“系統(tǒng)性”是說此書所論述的知
識涉及到了COM領(lǐng)域的各個方面,,不僅全面、而且系統(tǒng),??吹某雠藧勖裣壬墓Φ字詈駴Q非常人所
能及,他不僅對COM有著深入的研究,,而且對C++的理解也堪稱爐火純青(作者翻譯了《Visual C++
技術(shù)內(nèi)幕》[第四版]),,因此講起來條理清晰、錯落有致,、自成體系,,有如滔滔長江之水接海連天,
使人心曠神怡、流連忘返,。“嚴(yán)密性”是說書中的語句措辭頗為講究,,經(jīng)得起推敲。有些地方初看
似有不妥之嫌疑,,但仔細(xì)一品,,才發(fā)現(xiàn)其中的奧妙,只是自己以前沒有理解得如此深刻而已,。“深
入性”是說此書并不是一本泛泛而談的書,,許多章節(jié)的論述都堪稱精辟、給人以耳目一新的感覺,,
乃大師力作,。由于作者的功力深厚,因此理論與實踐的結(jié)合可謂“無縫”,,因此“實用性”也是本
書的一大特點,。

全書分為三個部分,第一部分包括前五章,,講述COM的原理,。少勇認(rèn)為,如果幾個秀才作同樣題目的
命題作文,,很容易就能看出水平的高低來,。關(guān)于如組件、接口,、DLL以及跨進(jìn)程調(diào)用等最基本的概念
可能所有講COM的書上都會講,,但深淺不一。在本書中,,作者不僅講述了基本理論,,還對其進(jìn)行了潤
色、加工,,許多地方還作了總結(jié),很有條理地向讀者說個“一,、二,、三”。與現(xiàn)在很多人把英文資料
拿來拼拼湊湊就可以“堆”出一本書相比,,作者的做法實在難能可貴,。

第四章講述了客戶程序創(chuàng)建COM對象的進(jìn)程透明性。大家知道,,不管是進(jìn)程內(nèi)組件還是進(jìn)程外組件,,
客戶程序可以用一致的方法創(chuàng)建COM對象。對于進(jìn)程內(nèi)組件,無論是創(chuàng)建過程,,還是對接口函數(shù)的調(diào)
用過程,,我們都可以按照一般的同一進(jìn)程內(nèi)部函數(shù)調(diào)用的過程來理解組件和客戶之間交互操作;但對
于進(jìn)程外組件,,實際的情形要復(fù)雜的多,,因為組件程序和客戶程序擁有不同的進(jìn)程空間,所以,,它們
之間所有的交互過程都涉及到進(jìn)程之間的通信過程,。

雖然客戶程序和對象在不同的進(jìn)程空間中,但所有對接口的調(diào)用都是間接進(jìn)行的,,客戶程序調(diào)用接口
成員函數(shù)就如調(diào)用本進(jìn)程內(nèi)的函數(shù)一樣,,這正是COM所達(dá)到的透明效果。

在這一節(jié)里,,作者不僅介紹了組件進(jìn)程和客戶進(jìn)程的內(nèi)存模型,,還對接口調(diào)用過程中的列集
(marshaling)處理過程作了詳細(xì)的論述,并且給出了實現(xiàn)自定義接口的標(biāo)準(zhǔn)列集程序的過程,,最后
還以例子說明了進(jìn)程外組件自定義接口的實現(xiàn)過程,。

少勇認(rèn)為,這一部分的論述不光深入,,而且極具條理性,。以類廠對象的列集過程為例,書中有如下論述:
   (1),、首先確定注冊對象(即類廠對象)提供的代理對象的CLSID,,如果注冊對象不能提供代理對
象的CLSID,則使用標(biāo)準(zhǔn)的列集代理對象,。然后CoRegisterClassObject函數(shù)要求注冊對象提供列集數(shù)
據(jù)包,,實際上是一個字節(jié)流,它包含了用于代理對象與組件對象的跨進(jìn)程連接所必需的信息,。如果注冊
對象不能提供這樣的數(shù)據(jù)包,,則使用COM提供的標(biāo)準(zhǔn)列集數(shù)據(jù)包。
   (2),、COM把代理對象的CLSID和列集數(shù)據(jù)包傳輸?shù)娇蛻暨M(jìn)程中,,CoGetClassObject函數(shù)正在等待
這些數(shù)據(jù)。
   (3),、在客戶進(jìn)程中,,COM根據(jù)傳輸過來的CLSID創(chuàng)建代理對象,并且把列集數(shù)據(jù)包傳給代理對象,。
因為,,列集數(shù)據(jù)包包含了代理對象與組件對象的連接信息,,所以代理對象利用數(shù)據(jù)包建立與組件的連接。

象這樣總結(jié)性的論述幾乎遍布了書的每一個章節(jié),。能作到這一點本以非常難得,,但作者并沒有就此收筆,
他還詳細(xì)介紹了IMarshal接口,,并給出了自定義列集的實現(xiàn),。象這樣的知識,您在其他書中恐怕找不到
吧,。

第五章,,“用Visual C++開發(fā)COM應(yīng)用”主要從兩個方面進(jìn)行了論述,一個是MFC,,一個是ATL,。由于作
者在Visual C++方面的造詣,因此這一部分中對于MFC的論述可以稱的上在同類書中首屈一指,。我這么
說是因為一般書籍在講到這里時,,對用MFC實現(xiàn)COM接口的機(jī)制往往都有所涉及,但大多論述不夠,,長久
以來,,少勇總有一種“走出餐館卻沒有吃飽”的感覺,不免遺憾,。但是這一點本書卻做到了,,通過對
DECLARE_INTERFACE_MAP()、BEGIN_INTERFACE_MAP,、END_INTERFACE_MAP,、INTERFACE_PART、
INIT_INTERFACE_PART等宏的深入剖析,,使讀者能對MFC如何實現(xiàn)COM接口,、如何定義接口映射表有一個
全面的認(rèn)識。如果您需要用MFC來編寫COM組件的話,,相信一定會從受益非淺,。接下來對于ATL的論述略
顯單薄,但所講內(nèi)容都是精華,,具有較高的參考價值,。少勇認(rèn)為,在ATL日益受到重視的今天,,市場上
尚缺少一本系統(tǒng)講述ATL的書籍,但不知哪位“大俠”有心情填補(bǔ)此缺,。

書的第二部分是六到十章,,講述了COM規(guī)范中擴(kuò)展的一些內(nèi)容,,包括可連接對象通信機(jī)制、結(jié)構(gòu)化存儲
技術(shù),、COM對象的名字對象技術(shù),、統(tǒng)一傳輸機(jī)制以及DCOM。如果讀者要全面理解COM,,這部分內(nèi)容為您
提供了這些技術(shù)的細(xì)節(jié),。以前,很少有書能夠如此系統(tǒng)地介紹這些技術(shù),,就算偶爾有書涉及一二,,也都
不很深入。而且這部分知識涉及到了COM應(yīng)用中的許多實際問題,,比如說OLE,,雖然已經(jīng)誕生很多年了,
但大多數(shù)人對它還是一知半解,、掌握得很不夠,。雖說從各種媒體上您可以找到許多資料,但把這些資料
整理出來系統(tǒng)地講述,,并不多見,。縱觀這幾章的論述,,可以看出作者一定認(rèn)真研究過COM體系結(jié)構(gòu)以及
OLE的許多內(nèi)部資料和源碼,,并通過自己的加工把這些原本支離破碎而且難懂的材料做成了一頓“美味
大餐”。“難得,,難得,,”少勇看完這幾章,不禁贊不絕口,,“集大成者也,!”(實際上,這里的每一
個話題少勇都有一大堆感想要與您分享,,只可惜篇幅所限,,只能把最精彩的部分拿出來介紹,欲知詳情,,
還是買一本回家慢慢看吧,。)

DCOM是不得不說的,它是COM從桌面環(huán)境走向分布式網(wǎng)絡(luò)環(huán)境的必然,。從COM逐漸過度到DCOM,,這部分
堪稱“深入淺出”的典范,不僅詳細(xì)介紹了DCOM的原理和特點,、用戶如何創(chuàng)建DCOM組件,,還對連接管
理,、并發(fā)管理作了詳細(xì)的論述。記得我在評《COM技術(shù)內(nèi)幕》時講過其最后幾章不太令人滿意嗎,?那么
看潘愛民先生的書會彌補(bǔ)您的缺憾,。

在第二部分,我的最后一個話題是關(guān)于安全性的,,因為對于一個分布式系統(tǒng)來說,,這太重要了?!禖OM
原理與應(yīng)用》在兩個地方對安全性進(jìn)行了論述,,第一次是在第四章,提到了激活安全性和調(diào)用安全性,。
這里從COM特性的角度講述了COM安全性,,側(cè)重于安全模型結(jié)構(gòu)。第二次是在第十章,,提到了訪問安全性
和激發(fā)安全性,,側(cè)重于DCOM在分布式環(huán)境下的安全模型的配置情況,強(qiáng)調(diào)實用性,。到此,,有些讀者可能
就會覺得這四個“安全性”混在一起,磕磕碰碰,、攪攪拌拌,、倒是一盤好菜,只可惜看不明白,。少勇認(rèn)
為,,這只是因為目前COM領(lǐng)域名詞太多、叫法又十分混亂,,Microsoft尚是如此,,何況他人?因此,,這
對于寫書的人來說,,確實很難辦。于是有些作者采取了回避的政策,,講激活安全性和調(diào)用安全性就不講
訪問安全性和激發(fā)安全性,,而如果要講訪問安全性和激發(fā)安全性則對激活安全性和調(diào)用安全性只字不提。
這樣雖然解了一時之困,,但不利于讀者建立一個完整的概念,。《COM原理與應(yīng)用》并沒有回避困難,,其
“深入性”又一次得到了體現(xiàn),??吹贸鰜?,在寫這部分的時候,,作者也下了一番工夫,他以不同的角度
對COM安全性作了有層次,、有重點的論述,,我認(rèn)為其可貴之處有二:其一,COM的資料本十分難找,,關(guān)于
安全性的材料就更少了,,能搜集到比較系統(tǒng)的資料實在不容易;其二,,關(guān)于這部分知識以前基本沒有權(quán)
威性論述,全憑寫書的人自己領(lǐng)悟,,這就要求作者具有很好的功底和悟性,當(dāng)然還得經(jīng)過艱苦的努力,。
說實話,,書的這部分少勇反反復(fù)復(fù)看了數(shù)遍,,確實學(xué)會了很多知識。我的建議是,,在閱讀這部分時,切
記要細(xì)致但不要鉆牛角尖,,否則可能一時半會兒真的就繞在里邊出不來。還有,,由于DCOM的安全性是建
立在NT安全性基礎(chǔ)之上的,,很多地方涉及到了分布式系統(tǒng)的安全策略,,因此您最好具有這方面的基礎(chǔ)知
識,,如果沒有,看不懂是很正常的事,。

通過對本書的前兩部分的學(xué)習(xí),,您已經(jīng)對COM的基本原理和擴(kuò)展部分有了一個比較全面的認(rèn)識,就象蓋
房子,,您已經(jīng)打好了堅實的地基并壘起了圍墻,實在可喜可賀,!但這還很不夠,,因為我們學(xué)一項技術(shù)的
目的就是如何來很好地用它。因此,,就必須進(jìn)行第三部分的學(xué)習(xí),,在這里您將學(xué)到既具有COM優(yōu)點又實
用的技術(shù),作者將教您如何給房子蓋上房頂,。

書的第十一章講述了自動化對象,。自動化的概念最早出現(xiàn)在OLE2中,當(dāng)時叫做OLE自動化,。后來這個概
念被COM所吸收,,稱為自動化?,F(xiàn)在各式各樣的Control中都引入了自動化的概念,,Word和Execl也支持
自動化。事情往往就是這樣,,一個概念應(yīng)用的越廣就越難給其下一個恰到好處的定義,。自動化便是這樣,
各種資料上形形色色的描述總是讓人抓不住重點,?!禝nside COM》中關(guān)于自動化的論述也很不能讓人滿
意,而《COM原理與應(yīng)用》算是彌補(bǔ)了這方面的缺憾,。

我們知道,,COM實質(zhì)上是定義了一種客戶與服務(wù)器的通信方式,而這種通信是通過接口來完成的,。當(dāng)我
們用C++來寫客戶程序的時候,,一切都是那么美好,通過CoCreateInstance和QueryInterface將得到
一個接口指針,,通過這個接口指針就可以調(diào)用相應(yīng)的函數(shù)了,。請注意,這一切都是通過指針來進(jìn)行的,。
可是當(dāng)我們用Visual Basic寫客戶程序時,,情況就不那么美好了,原因只有一個:Visual Basic是弱
類型編程語言,它對數(shù)據(jù)類型的描述能力非常有限,。因此,,我們必須提出一個讓解釋性語言也能夠訪問
組件的方案,這個方案就被稱之為自動化,。一個自動化服務(wù)器實際上就是一個實現(xiàn)了IDispatch接口的
COM組件,,而一個自動化控制器則是一個通過IDispatch接口同自動化服務(wù)器進(jìn)行通信的COM客戶。

在本章中,,作者對IDispatch接口和相關(guān)數(shù)據(jù)類型,、Invoke函數(shù)的實現(xiàn)、雙接口以及遲綁定和早綁定,、
自動化對象的編程都做了詳細(xì)的論述并提供了很好的例子,,是本書的又一閃光點。

第十二章講述ActiveX控制,,在本章中,,作者不但詳細(xì)論述了ActiveX控制的基本理論,,還對如何在
Internet環(huán)境下應(yīng)用ActiveX控制作了深入討論。因此,,本章對于具有一些這方面基礎(chǔ)知識的讀者來說,,
是加深理解、迅速提高的不可多得的資料,。由于作者為了節(jié)約篇幅,在這一部分作了一些刪節(jié),,有的地
方讀起來可能會產(chǎn)生一定的跳躍感,,不過無礙大局,,因為目前介紹ActiveX基礎(chǔ)的資料很多。由于作者
對MFC很熟悉,,這一章的例子仍然用MFC來編寫并進(jìn)行了深入的剖析,這對于C++的愛好者實為一個提高
的好機(jī)會,。

COM作為一種軟件模型,,不僅提供了程序與程序之間通信的標(biāo)準(zhǔn),而且改變了傳統(tǒng)的程序設(shè)計方法。因
此,,COM的主要貢獻(xiàn)在于對程序設(shè)計方法的變革。書的第十三章講述了基于COM的程序設(shè)計,,在這一章
里,作者對面向?qū)ο蟮某绦蛟O(shè)計方法作了一定分析并與組件化程序設(shè)計作了比較,,進(jìn)而討論了MTS,并
對多層應(yīng)用軟件結(jié)構(gòu)和基于COM的Web應(yīng)用作了一定介紹,,使讀者可以對組件化程序設(shè)計產(chǎn)生一個全面
的認(rèn)識,。

雖然MTS出臺已經(jīng)有一段時間了,但是真正用的人還不多,,許多探索僅僅停留在理論上,,種種原因使
MTS的優(yōu)越性沒有被廣大的Windows程序員所認(rèn)識,。不過隨著Windows2000的出臺和COM+的發(fā)布,這種
情況很快就會有所改變,。COM+是COM、DCOM,、MTS的集成,,它通過操作系統(tǒng)的各種支持,,把組件軟件提
升到應(yīng)用層,而所有的底層細(xì)節(jié)留給了操作系統(tǒng),。書的最后一章介紹了COM+,對于大家開拓眼界,、理
解Windows2000所提供的服務(wù)具有非常重大的現(xiàn)實意義,。

《COM原理與應(yīng)用》是潘愛民先生的力作,,我認(rèn)為其意義有二:其一,本書在前后的一致性和名詞的把
握上都很不錯,,讀者得到的是“地道”的COM中文書籍,,與翻譯作品有顯著的不同。其二,,國內(nèi)作家能
寫出如此深入(甚至超過了美國的作家)的作品,,對我們來說,,的確是一件令人歡欣鼓舞的事情,,但
愿在不久的將來,這樣的書籍會越來越多,。

當(dāng)然,,《COM原理與應(yīng)用》并不是十全十美的,,對于所涉及到的知識來說,有些部分的論述略顯單薄,,
尤其缺乏對于書中例子的剖析,,也許是作者考慮壓縮篇幅的原因吧。少勇認(rèn)為,,不是所有的人都能消
化“濃縮”后的知識,。

通過以上論述,相信各位對這幾本COM書籍已經(jīng)有了一定的認(rèn)識,,大家可以根據(jù)自己的實際情況選擇閱讀,。

新千年、新氣象,,少勇特書寫了一幅對聯(lián),,與大家共勉:
上聯(lián):新千年觀日月輝映天地
下聯(lián):數(shù)萬載論風(fēng)流指點離騷
橫批:志在今朝

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多