1銆?span lang=EN-US>DCOM
COM鐨勮繘紼嬮忔槑鐗規(guī)ц〃鐜板湪緇勪歡瀵硅薄鍜屽鎴風(fēng)▼搴忓嵆鍙互鎷ユ湁鍚勮嚜鐨勮繘紼嬬┖闂達(dá)紝涔熷彲浠ュ叡浜悓涓涓繘紼嬬┖闂達(dá)紝COM璐熻矗鎶婂鎴風(fēng)殑璋冪敤姝g‘浼犲埌緇勪歡瀵硅薄涓紝騫朵繚璇佸弬鏁頒紶閫掔殑姝g‘鎬с傜粍浠跺璞″拰瀹㈡埛浠g爜涓嶅繀鑰冭檻璋冪敤浼犻掔殑緇嗚妭錛屽彧瑕佹寜鐓т竴鑸殑鍑芥暟璋冪敤鐨勬柟寮忓疄鐜板嵆鍙傚鏋滆繘涓姝ユ嫇灞曡繘紼嬮忔槑鐗規(guī)э紝鑰冭檻緇勪歡瀵硅薄涓庡鎴風(fēng)▼搴忚繍琛屽湪涓嶅悓璁$畻鏈轟笂鐨勬儏褰紝鎶婅繘紼嬮忔槑鎬ф嫇灞曚負(fù)浣嶇疆閫忔槑鎬э紝褰㈡垚鍒嗗竷寮忕粍浠跺璞℃ā鍨嬶紝綆縐頒負(fù)DCOM銆?span lang=EN-US>
DCOM鏄?span lang=EN-US>COM鐨勬墿灞曪紝瀹冨彲浠ユ敮鎸佷笉鍚岃綆楁満涓婄粍浠跺璞′笌瀹㈡埛紼嬪簭涔嬮棿鎴栬呯粍浠跺璞′箣闂寸殑鐩鎬簰閫氫俊錛岃繖浜涜綆楁満鍙互鍦ㄥ眬鍩熺綉鍐呫佸箍鍩熺綉涓娿?span lang=EN-US> Internet涓娿傚浜庡鎴風(fēng)▼搴忚岃█錛岀粍浠剁▼搴忔墍澶勭殑浣嶇疆鏄忔槑鐨勶紝鎴戜滑涓嶅繀緙栧啓浠諱綍澶勭悊榪滅▼璋冪敤鐨勪唬鐮侊紝鍥犳錛?span lang=EN-US>DCOM涔熸槸COM鐨勬棤緙濇墿灞曘?span lang=EN-US> DCOM澶勭悊浜嗗簳灞傜綉緇滃崗璁殑鎵鏈夌粏鑺傘?span lang=EN-US>
2銆佷粠COM杞悜DCOM
榪涚▼鍐呯粍浠朵笌瀹㈡埛紼嬪簭涔嬮棿鐨勯氫俊榪囩▼姣旇緝綆鍗曘傛湰鍦拌繘紼嬪緇勪歡涓庡鎴風(fēng)▼搴忎箣闂寸殑閫氫俊騫朵笉鏄洿鎺ヨ繘琛岀殑錛岃屾槸鐢ㄥ埌浜嗘搷浣滅郴緇熸敮鎸佺殑涓浜涜法榪涚▼閫氫俊鏂規(guī)硶銆?span lang=EN-US>
DCOM鍙槸綆鍗曞湴鎶婃湰鍦拌法榪涚▼閫氫俊鐢ㄤ竴涓綉緇滃崗璁紶杈撹繃紼嬫潵浠f浛錛屽彧鏄腑闂存暟鎹紶閫掔殑璺嚎鏇撮暱涓浜涖傚綋鐒訛紝緗戠粶閫氫俊姣斿崟鏈虹郴緇熺幆澧冧笅鐨勮法榪涚▼閫氫俊瑕佽剢寮卞緱澶氾紝鎵浠ヤ負(fù)浜嗕繚璇佸崗浣滆繃紼嬬殑鍙潬鎬т互鍙?qiáng)绋嬪簭瀵瑰紓甯镐簨錃g鐨勫簲鍙樿兘鍔涳紝瀹㈡埛紼嬪簭鍜岀粍浠剁▼搴忛渶瑕佽冭檻鏇村鐨勭粏鑺傘?span lang=EN-US>
3銆?span lang=EN-US>DCOM瀵硅薄鐨勫畾浣?span lang=EN-US>
瀹㈡埛紼嬪簭璋冪敤COM搴撶殑鍩虹鍒涘緩鍑芥暟錛堟瘮濡?span lang=EN-US>CoGetClassObject錛夊垱寤鴻繙紼嬬粍浠跺璞¢渶瑕佺煡閬撹繙紼嬫満鍣ㄥ悕鍜屽璞?span lang=EN-US>CLSID銆?span lang=EN-US>
鏈変袱縐嶆柟娉曞彲浠ュ緱鍒拌繙紼嬪璞$殑鏈哄櫒鍚嶄俊鎭細(xì)涓鏄湪鍒涘緩鍑芥暟鐨勫弬鏁頒腑鎸囧畾COSERVERINFO緇撴瀯錛屼簩鏄嬌鐢?span lang=EN-US>DCOM閰嶇疆宸ュ叿鎸囧畾榪滅▼鏈哄櫒鍚嶃?span lang=EN-US>
COM搴撶殑鍒涘緩鍑芥暟寰楀埌浜嗚繙紼嬪璞$殑浣嶇疆淇℃伅鍚庯紝鍐嶆妸瀵硅薄鍒涘緩鐨勪換鍔′氦緇?span lang=EN-US>SCM錛岀敱SCM閫氳繃RPC涓庤繙紼嬫満鍣ㄨ繘琛岄氫俊銆?span lang=EN-US>SCM錛堢▼搴忓悕涓?span lang=EN-US> Rpcss.exe錛変篃鏄?span lang=EN-US>COM搴撶殑涓閮ㄥ垎錛屼絾瀹冩槸涓涓崟鐙殑榪涚▼銆?span lang=EN-US>SCM璐熻矗鍒涘緩鏂扮殑COM瀵硅薄錛屼篃璐熻矗寤虹珛緇勪歡瀵硅薄涓庡鎴風(fēng)▼搴忎箣闂寸殑榪炴帴銆傚鏋滆鍒涘緩榪滅▼瀵硅薄錛屽畠浼?xì)閫氳繃RPC璋冪敤榪滅▼鏈哄櫒涓婄殑SCM錛岀敱榪滅▼鏈哄櫒涓婄殑SCM鍚姩緇勪歡榪涚▼錛屽茍鍒涘緩緇勪歡瀵硅薄錛岀劧鍚庤繑鍥炲埌瀹㈡埛鏈哄櫒銆?span lang=EN-US>
褰撶劧錛岃繙紼嬬粍浠跺璞¤鍒涘緩涔嬪悗錛屽畠鍦ㄨ繑鍥炲埌瀹㈡埛鏈哄櫒鐨勯斾腑錛岃繕瑕佺粡榪囧垪闆嗗拰鏁i泦鐨勫鐞嗭紝鍖呮嫭鍒涘緩浠g悊瀵硅薄鍜岃杞藉瓨鏍逛唬鐮佺瓑錛岃繖浜涘鐞嗕笌鏈湴榪涚▼澶栫粍浠跺璞$殑澶勭悊瀹屽叏涓鑷淬備竴鏃︾粍浠跺璞¤鍒涘緩瀹屾垚涔嬪悗錛屽鎴蜂笌緇勪歡涔嬮棿鐨勯氫俊涓嶅啀緇忚繃SCM錛岃屾槸鐩存帴閫氳繃浠g悊瀵硅薄鍜屽瓨鏍瑰璞′互鍙?span lang=EN-US>COM搴撴彁渚涚殑搴曞眰浼犺緭鏈哄埗鏉ュ畬鎴愩?span lang=EN-US>
4銆佸垪闆嗕笌鏁i泦
鍒楅泦涓庢暎闆嗘槸瀹炵幇COM緇勪歡瀵硅薄璺ㄨ繘紼嬬壒鎬х殑鍏抽敭鎶鏈紝瀹冨寘鎷爣鍑嗗垪闆嗘硶鍜岃嚜瀹氫箟鍒楅泦娉曘傚悓鏍風(fēng)殑鎶鏈篃閫傜敤浜?span lang=EN-US>DCOM緇勪歡瀵硅薄涓庡鎴風(fēng)▼搴忎箣闂寸殑閫氫俊錛屼袱鑰呯殑鍖哄埆鍦ㄤ簬鍒楅泦鏁版嵁鍖呯殑浼犻掓柟寮忔湁鎵涓嶅悓錛屽浜庢湰鍦扮粍浠跺璞′嬌鐢?span lang=EN-US>LPC浼犻掞紝鑰屽浜?span lang=EN-US>DCOM緇勪歡瀵硅薄浣跨敤RPC浼犻掋?span lang=EN-US>
DCOM鎻愪緵浜嗕竴濂楀鏉傜殑鍒楅泦鍜屾暎闆嗘満鍒訛紝瀹冨緩绔嬪湪RPC鐨勫熀紜涓娿傜敱浜?span lang=EN-US>RPC琚畾涔変負(fù)DCE錛堝垎甯冨紡璁$畻緋葷粺錛夋爣鍑嗙殑涓閮ㄥ垎錛岃?span lang=EN-US>DCE RPC瀹氫箟浜嗘墍鏈夊父鐢ㄦ暟鎹被鍨嬬殑鏁版嵁琛ㄨ揪鏂瑰紡錛屽嵆緗戠粶鏁版嵁琛ㄧず娉曪紙NDR錛?span lang=EN-US>network data representation錛夈備負(fù)浜嗕嬌瀛樻牴浠g爜鍜屼唬鐞嗗璞¤兘澶熸紜湴瀵瑰弬鏁板拰榪斿洖緇撴灉榪涜鍒楅泦鍜屾暎闆嗭紝瀹冧滑搴旇浣跨敤涓鑷寸殑鏁版嵁琛ㄧず娉?span lang=EN-US>NDR錛屼互渚垮湪涓嶅悓鐨勬搷浣滅郴緇熺幆澧冧笅涔熻兘澶熻繙紼嬭皟鐢ㄣ?span lang=EN-US>
5銆佸璞?span lang=EN-US>RPC
DCOM鍗忚涔熻縐頒負(fù)瀵硅薄RPC錛?span lang=EN-US>ORPC錛?span lang=EN-US>object remote procedure call錛夛紝瀹冨緩绔嬪湪DCE RPC鍗忚鐨勫熀紜涓婏紝鍙敤浜庡悇縐嶅熀浜庣粍浠剁殑鍒嗗竷寮忕郴緇熴?span lang=EN-US>ORPC寤虹珛浜嗕竴濂楅潰鍚戝璞$殑榪滅▼璋冪敤瑙勮寖錛屾寚瀹氫簡濡備綍鍦ㄧ綉緇滀笂榪涜璋冪敤銆佸瀵硅薄鐨勫紩鐢ㄥ浣曡〃紺哄拰濡備綍緇存姢銆?span lang=EN-US>ORPC鍗忚宸茬粡琚綔涓?span lang=EN-US>Internet鑽夋閫掍氦鍒?span lang=EN-US>IETF錛?span lang=EN-US>Internet Engineering Task Force 錛?span lang=EN-US> Internet 宸ョ▼閮級銆?span lang=EN-US>
鍦?span lang=EN-US>Internet鎴?span lang=EN-US>Intranet緗戠粶鐜涓嬶紝ORPC浠嶄嬌鐢ㄦ爣鍑嗙殑RPC鏁版嵁鍖咃紝闄勫姞涓婁笓鐢ㄤ簬DCOM鐨勪竴浜涗俊鎭曗曟帴鍙f寚閽堟爣璇嗙錛?span lang=EN-US>IPID錛?span lang=EN-US>interface point identifier錛夈佺増鏈俊鎭拰鎵╁睍淇℃伅鈥曗曚綔涓鴻皟鐢ㄥ拰榪斿洖鐨勯檮鍔犲弬鏁拌繘琛屼紶閫侊紝鍏朵腑IPID琛ㄧず璋冪敤琚鐞嗙殑榪滅▼鏈哄櫒涓婄壒瀹氬璞$殑鐗瑰畾鎺ュ彛銆?span lang=EN-US> DCOM瀹㈡埛紼嬪簭蹇呴』鍛ㄦ湡鎬у湴“pinging”榪滅▼鏈哄櫒涓婄殑瀵硅薄錛屼互渚夸繚璇佸鎴蜂笌瀵硅薄涓鐩村浜庤繛鎺ョ姸鎬併?span lang=EN-US>
6銆?span lang=EN-US>DCOM鐗規(guī)?span lang=EN-US>
DCOM鍙互浣滀負(fù)鍒嗗竷寮忓簲鐢ㄧ郴緇熺殑鍩烘湰鏋舵瀯錛屽鎴風(fēng)▼搴忎笌DCOM緇勪歡瀵硅薄涔嬮棿褰㈡垚浜嗗鎴鳳紡鏈嶅姟鍣ㄥ叧緋伙紝榪涗竴姝ュ彲鏋勬垚澶氬眰杞歡妯″瀷銆?span lang=EN-US>DCOM緇勪歡鍏鋒湁COM 緇勪歡鐨勪竴浜涘熀鏈壒鎬э紝鍖呮嫭閲嶇敤鎬с佽璦鏃犲叧鎬х瓑銆傝屼綅緗忔槑鎬?鏄?span lang=EN-US>DCOM鐨勪竴涓熀鏈壒鎬с?span lang=EN-US>DCOM鐨勫叾浠栫壒鎬у涓嬶細(xì)
錛?span lang=EN-US>1錛夊彲浼哥緝鎬с備竴鏂歸潰錛?span lang=EN-US>DCOM鍒╃敤鎿嶄綔緋葷粺鏈韓鐨勫彲浼哥緝鎬э紱鍙︿竴鏂歸潰錛?span lang=EN-US>DCOM鎻愪緵浜嗙伒媧葷殑閰嶇疆鏂規(guī)錛屽厑璁鎬笉鍚岀殑緇勪歡瀵硅薄鍏佽鍦ㄤ笉鍚岀殑鏈嶅姟鍣ㄤ笂錛?span lang=EN-US>DCOM鐨勪綅緗忔槑鎬т繚璇佷簡榪欑鍙樺寲鍙互涓嶅繀淇敼緇勪歡婧愮▼搴忋?span lang=EN-US>
錛?span lang=EN-US>2錛夊彲閰嶇疆鎬с傚畨瑁呭拰綆$悊鏄垎甯冨紡杞歡緋葷粺鐨勪袱涓噸瑕佺幆鑺傘?span lang=EN-US>DCOM鎻愪緵浜嗕竴涓浘褰㈢晫闈㈢殑閰嶇疆宸ュ叿紼嬪簭錛?span lang=EN-US>DCOMCNFG.EXE錛夛紝鍙嬌瀹㈡埛紼嬪簭鍜岀粍浠剁▼搴忓湪涓嶆敼鍙樹唬鐮佺殑鎯呭喌涓嬮傚簲涓嶅悓鐨勭綉緇滅幆澧冦?span lang=EN-US>
錛?span lang=EN-US>3錛夊畨鍏ㄦс?span lang=EN-US>DCOM浣跨敤浜?span lang=EN-US>Windows NT鎻愪緵鐨勫彲鎵╁睍瀹夊叏鎬ф鏋訛紝鍦ㄩ潪NT騫沖彴涓婂疄鐜扮殑DCOM涔熷寘鎷簡涓涓笌NT鍏煎鐨勫畨鍏ㄦ彁渚涘櫒銆?span lang=EN-US>DCOM瀹炵幇鐨勫畨鍏ㄦу垎涓鴻闂畨鍏ㄦу拰嬋媧誨畨鍏ㄦэ紝璁塊棶瀹夊叏鎬ф寚瀹氶偅浜涚敤鎴峰彲浠ヨ皟鐢ㄧ粍浠跺璞★紝嬋鍙戝畨鍏ㄦф寚瀹氬摢浜涚敤鎴峰彲浠ュ湪涓涓柊榪涚▼涓垱寤烘柊鐨勫璞°?span lang=EN-US>
錛?span lang=EN-US>4錛夊崗璁棤鍏蟲с?span lang=EN-US>
錛?span lang=EN-US>5錛夊鉤鍙扮嫭绔嬫?span lang=EN-US>
7銆佸璞℃縺媧?span lang=EN-US>
嬋媧伙紙activation錛変竴涓粍浠跺璞″寘鎷袱縐嶆儏褰細(xì)涓鏄垱寤烘柊鐨勭粍浠跺璞★紝浜屾槸寤虹珛宸叉湁緇勪歡瀵硅薄涓庡鎴蜂箣闂寸殑榪炴帴銆?span lang=EN-US>
COM鎵╁睍鍒?span lang=EN-US>DCOM涔嬪悗錛岃繙紼嬪璞$殑鍒涘緩榪囩▼鏈夋墍涓嶅悓銆備負(fù)浜嗘爣璇嗕竴涓繙紼嬪璞★紝浠呬粎鎻愪緵涓涓?span lang=EN-US>128浣嶇殑GUID榪樹笉澶燂紝榪樺繀欏繪彁渚涜繙紼嬪璞℃墍鍦ㄧ殑鏈哄櫒鍚嶏紝涔熺О涓鴻繙紼嬫湇鍔″櫒鍚?#8220;RemoteServerName”銆?span lang=EN-US>
錛?span lang=EN-US>1錛夊垱寤?span lang=EN-US>DCOM緇勪歡鏂規(guī)硶涓
閫氳繃DCOM閰嶇疆宸ュ叿鎸囧畾榪滅▼鏈嶅姟鍣ㄥ悕錛岃繖縐嶆柟寮忎嬌寰?span lang=EN-US>DCOM緇勪歡鍏鋒湁浣嶇疆閫忔槑鎬с傚湪Windows緋葷粺騫沖彴涓婏紝榪滅▼鏈嶅姟鍣ㄥ悕瀛?span lang=EN-US>RemoteServerName鍊艱淇濆瓨鍦ㄧ郴緇熸敞鍐岃〃HKEY_CLASSES_ROOT\APPID閿笅銆?span lang=EN-US>
浠?span lang=EN-US>CLSID鍜?span lang=EN-US>AppID閿殑緇撴瀯鍙互鐪嬪嚭錛屾瘡涓?span lang=EN-US>AppID鍙敤浜庡涓粍浠跺璞★紝閫氬父瀹冧唬琛ㄤ簡鐢卞涓?span lang=EN-US>CLSID鍏變韓鐨勮繘紼嬶紝璇ヨ繘紼嬩腑鐨勬墍鏈夊璞″叡浜悓鏍風(fēng)殑閰嶇疆淇℃伅錛屽寘鎷繙紼嬫湇鍔″櫒鍚嶄互鍙?qiáng)瀹夊叏淇℃伅銆傚湪DCOM涓紩鍏?span lang=EN-US>AppID姒傚康鍙互閬垮厤澶鐨勬敞鍐岃〃鍏抽敭瀛椼?span lang=EN-US>
錛?span lang=EN-US>2錛夊垱寤?span lang=EN-US>DCOM緇勪歡鏂規(guī)硶浜?span lang=EN-US>
鐢ㄧ涓縐嶆柟娉曞茍涓嶆槸鎬昏兘婊¤凍搴旂敤鐨勮姹傦紝鏈変簺搴旂敤瑕佹眰鍦ㄧ▼搴忚繍琛岃繃紼嬩腑鎺у埗瑕佽繛鎺ョ殑鏈嶅姟鍣紝姣斿澶氫漢娓告垙紼嬪簭銆佺綉緇滆繙紼嬬鐞嗗伐鍏風(fēng)瓑銆傚浜庤繖鏍風(fēng)殑搴旂敤錛?span lang=EN-US>DCOM鍏佽鍦ㄥ垱寤哄嚱鏁頒腑鎸囧畾榪滅▼鏈嶅姟鍣ㄥ悕瀛椼傚彲浠ユ寚瀹氳繙紼嬫湇鍔″櫒鍚嶅瓧鐨勫垱寤哄嚱鏁幫細(xì)CoCreateInstanceEx銆?span lang=EN-US> CoGetClassObject銆?span lang=EN-US>CoGetInstanceFromFile銆?span lang=EN-US>CoGetInstanceFromeIStorage銆?span lang=EN-US>
鍦ㄧ▼搴忎腑鎸囧畾鏈嶅姟鍣ㄥ悕瀛楃殑鍙﹀涓涓姛鑳芥槸瀹炵幇鍒嗗竷寮忓簲鐢ㄧ郴緇熺殑鍔ㄦ佽礋杞藉鉤琛°傜洰鍓?span lang=EN-US>DCOM榪樺緢闅句互瀹炵幇鑷姩璐熻澆騫寵 鐗規(guī)э紝浣嗘垜浠彲浠ュ緩绔嬩竴涓垎媧炬湇鍔$粍浠跺璞★紝鎵鏈夌殑瀹㈡埛閮藉垱寤烘寚瀹氭満鍣ㄤ笂鐨勫垎媧炬湇鍔$粍浠跺璞★紝鐢卞畠鍒涘緩鍙︿竴涓湡姝e疄鐜板簲鐢ㄥ姛鑳界殑榪滅▼瀵硅薄錛屽湪鎶婃榪滅▼瀵硅薄榪斿洖緇欏鎴風(fēng)▼搴忥紝浠ュ悗瀹㈡埛紼嬪簭涓嶅啀浣跨敤鍒嗘淳鏈嶅姟緇勪歡瀵硅薄錛岃岀洿鎺ヨ皟鐢ㄨ繙紼嬪璞°傝屽垎媧炬湇鍔$粍浠跺璞″彲浠ユ牴鎹綋鍓嶇殑璐熻澆鐘舵侊紝浠庝竴緇勬湇鍔″櫒涓夋嫨璐熻澆鏈杞葷殑鏈嶅姟鍣ㄤ綔涓虹洰鏍囷紝鍒涘緩榪滅▼瀵硅薄銆?span lang=EN-US>
8銆佽繙紼嬪垱寤鴻繘紼嬪唴緇勪歡錛氫唬鐞嗚繘紼嬶紙surrogate錛?span lang=EN-US>
涓轟簡榪滅▼榪愯榪涚▼鍐呯粍浠跺嵆DLL緇勪歡錛岃姹傚湪榪滅▼鏈哄櫒涓婃湁浠g悊榪涚▼錛?span lang=EN-US>surrogate process錛夈傞櫎浜嗗彲浠ヨ繙紼嬪惎鍔ㄨ繘紼嬪唴緇勪歡涔嬪錛屼唬鐞嗚繘紼嬭繕鎻愪緵浜嗕笅闈㈢殑鐗規(guī)э細(xì)
l 榪涚▼鍐呯粍浠剁▼搴忎腑鐨勪弗閲嶉敊璇彧褰卞搷浠g悊榪涚▼錛屼笉浼?xì)鋴慑鎴窐q涚▼宕╂簝錛?span lang=EN-US>
l 涓涓唬鐞嗚繘紼嬪彲浠ュ悓鏃朵負(fù)澶氫釜瀹㈡埛鎻愪緵鏈嶅姟錛?span lang=EN-US>
l 瀹㈡埛鍙互淇濇姢鑷繁閬垮厤闈犱笉浣忕殑緇勪歡紼嬪簭浠g爜錛屽彧璁塊棶緇勪歡紼嬪簭鎻愪緵鐨勬湇鍔★紱
l 鍦ㄤ唬鐞嗚繘紼嬩腑榪愯榪涚▼鍐呮湇鍔″彲浣?span lang=EN-US>DLL浜湁浠g悊榪涚▼鐨勫畨鍏ㄦс?span lang=EN-US>
Windows寮曡繘浜嗙己鐪佺殑浠g悊榪涚▼錛屼互鍙?qiáng)缂栧啓鑷畾涔変唬鐞啒q涚▼鐨勫崗璁鑼冦傜己鐪佸疄鐜扮殑浠g悊榪涚▼鏄竴涓販鍚堢嚎紼嬫ā鍨嬨佷吉COM鏈嶅姟紼嬪簭銆傚綋澶氫釜DLL緇勪歡琚鍏ュ埌鍗曚釜浠g悊榪涚▼鏃訛紝璇ヨ繘紼嬫寜鐓ф敞鍐岃〃涓寚瀹氱殑綰跨▼妯″瀷瀵規(guī)瘡涓?span lang=EN-US>DLL緇勪歡瀵硅薄榪涜瀹炰緥鍖栥傚鏋滀竴涓?span lang=EN-US>DLL緇勪歡瀵硅薄鏀寔涓ょ綰跨▼妯″瀷錛屽垯COM閫夋嫨鑷敱綰跨▼妯″瀷銆?span lang=EN-US>COM鍗沖彲浠ユ帶鍒?span lang=EN-US>DLL緇勪歡紼嬪簭鐨勫嵏杞斤紝涔熷彲浠ョ粓姝唬鐞嗚繘紼嬨?span lang=EN-US>
濡傛灉涓涓繘紼嬪唴緇勪歡婊¤凍涓嬪垪鏉′歡錛屽垯瀹冨皢琚鍏ヤ唬鐞嗚繘紼嬶細(xì)
l 緋葷粺娉ㄥ唽琛ㄤ腑錛屽湪緇勪歡瀵硅薄鐨?span lang=EN-US>CLSID鍏抽敭瀛椾笅蹇呴』瑕佹寚瀹?span lang=EN-US>AppID鍊鹼紝浠ュ強(qiáng)瀵瑰簲鐨?span lang=EN-US>AppID鍏抽敭瀛楋紱
l 瀹㈡埛紼嬪簭鍦ㄥ垱寤哄璞″疄渚嬫椂錛屽繀欏昏緗?span lang=EN-US>CLSTX_LOCAL_SERVER鏍囧織錛?span lang=EN-US>
l 緇勪歡瀵硅薄鐨?span lang=EN-US>CLSID鍏抽敭瀛椾笅涓嶆寚瀹?span lang=EN-US>LocalServer32銆?span lang=EN-US>LocalServer銆?span lang=EN-US>LocalService鍊鹼紱
l 緇勪歡瀵硅薄鐨?span lang=EN-US>CLSID鍏抽敭瀛楀寘鍚?span lang=EN-US>InProvServer32瀛愰敭錛?span lang=EN-US>
l 鍦?span lang=EN-US>InProcServer32瀛愰敭涓寚瀹氱殑DLL鏂囦歡蹇呴』瀛樺湪錛?span lang=EN-US>
l 緇勪歡瀵硅薄瀵瑰簲鐨?span lang=EN-US>AppID閿笅鎸囧畾DllSurrogate鍊箋?span lang=EN-US>
濡傛灉緇勪歡瀵硅薄鐨?span lang=EN-US>CLSID閿笅鐨?span lang=EN-US>LocalServer銆?span lang=EN-US>LocalServer32鎴?span lang=EN-US>LocalService鍊兼寚紺轟簡EXE鐨勫瓨鍦紝鍒?span lang=EN-US>EXE紼嬪簭灝嗚浼樺厛鎵ц錛?span lang=EN-US>COM涓嶅啀鍚姩浠g悊紼嬪簭銆?span lang=EN-US>
9銆佸埄鐢ㄥ悕瀛楀璞★紙moniker錛夎繛鎺ュ埌榪滅▼瀵硅薄瀹炰緥
閫氬父COM瀵硅薄瀹炰緥鏄笉鍙浉浜掓浛浠e埌錛屾垨鑰呰涓嶅彲鐩鎬簰浜ゆ崲鐨勩傚畠閫氳繃鑷繁鐗規(guī)湁鐨勭姸鎬佸尯鍒簬鍚屼竴綾葷殑鍏朵粬瀵硅薄瀹炰緥銆?span lang=EN-US>
鍦ㄧ8绔犱腑浠嬬粛鐨?span lang=EN-US>COM鍛藉悕鍜岀粦瀹氭満鍒跺浜庤繙紼嬪璞″悓鏍烽傜敤銆?span lang=EN-US>
10銆佽繛鎺ョ鐞嗏斺旇繙紼嬪璞$敓瀛樻湡鐨勬帶鍒?span lang=EN-US>
COM鎺у埗瀵硅薄鐨勭敓瀛樻湡鏈鍩烘湰鐨勬満鍒舵槸寮曠敤璁℃暟錛屽埄鐢?span lang=EN-US>IUnknown鐨?span lang=EN-US>AddRef鍜?span lang=EN-US>Release鎴愬憳鍑芥暟鎺у埗瀵硅薄鐨勭敓瀛樻湡銆?span lang=EN-US>DCOM浼樺寲浜嗚繙紼嬪璞$殑AddRef鍜?span lang=EN-US>Release鐨勮皟鐢ㄣ備紭鍖栬繃紼嬩嬌鐢ㄤ簡OXID錛?span lang=EN-US>object exporter identifier 錛屽璞$鐞嗘爣璇嗙錛夊璞°?span lang=EN-US>OXID鏄竴涓?span lang=EN-US>64浣嶅鹼紝閫氳繃OXID鍙互鎶?span lang=EN-US>RPC涓茬粦瀹氳皟鐢ㄥ埌瀹冧滑鐨勭洰鏍?span lang=EN-US>IPID銆備絾鏄紝鍦ㄦ墽琛岃皟鐢ㄤ箣鍓嶏紝璋冪敤榪涚▼蹇呴』鎶?span lang=EN-US> OXID杞瘧鎴愪負(fù)搴曞眰RPC鍙互瑙i噴鐨勪竴緇勭粦瀹氥?span lang=EN-US>
鍦ㄦ瘡鍙版敮鎸?span lang=EN-US>DCOM鐨勬満鍣ㄤ笂錛岄兘鏈変竴涓縐頒負(fù)OXID瑙f瀽鍣紙OXID Resolver錛夌殑鏈嶅姟錛屽畠璐熻矗鍚戝鎴鋒彁渚涚敤浜庤繛鎺ュ埌OXID鐨?span lang=EN-US>RPC涓茬粦瀹氫俊鎭紝涔熻礋璐f帴鏀惰繙紼嬪彂鏉ョ殑“pinging”淇℃伅銆?span lang=EN-US>OXID瑙f瀽鍣ㄤ箣闂撮氳繃RPC榪涜閫氫俊錛屽畠瀹炵幇浜?span lang=EN-US>RPC鎺ュ彛IOXIDResolver錛堜笉鏄?span lang=EN-US>COM鎺ュ彛錛夈?span lang=EN-US>
11銆佽繛鎺ョ鐞嗏斺?span lang=EN-US>pinging鏈哄埗
濡傛灉涓嶈冭檻瀹㈡埛榪涚▼鍙兘浼?xì)闈炴甯妇l堟錛屽垯鍒╃敤榪滅▼寮曠敤璁℃暟鎺у埗瀵硅薄鐢熷瓨鏈熷凡緇忚凍澶熶簡銆備負(fù)浜嗘嫻嬪鎴風(fēng)▼搴忔槸鍚﹂潪姝e父緇堟錛?span lang=EN-US>DCOM鎻愪緵浜嗕竴縐嶇畝鍗曠殑鏂規(guī)硶 “pinging”銆傚湪鐜板湪瀹炵幇鐨?span lang=EN-US>DCOM鐗堟湰涓紝pingPeriod=2錛堝垎錛変笖numPingsToTimeOut=3錛岃繖浜涘間笉鑳借鏀瑰彉銆?span lang=EN-US>
12銆佽繛鎺ョ鐞嗏斺旇繛鎺ョ偣綆$悊
璁稿瀹為檯鐨勫垎甯冨紡搴旂敤閮介渶瑕佸湪涓や釜瀵硅薄涔嬮棿榪涜鍙屽悜閫氫俊銆傜敱浜?span lang=EN-US>DCOM鏄COM鐨勬棤緙濇墿灞曪紝鍦ㄧ6绔犱腑浠嬬粛鐨?span lang=EN-US>COM鎻愪緵鐨勮繛鎺ョ偣鏈哄埗鍚屾牱閫傜敤浜庤繙紼嬪璞$殑鎯呭艦銆?span lang=EN-US>
13銆佽繛鎺ョ鐞嗏斺旇繛鎺ヤ紶閫?span lang=EN-US>
鐢ㄥ垎媧炬湇鍔$粍浠跺璞℃潵瀹炵幇鍒嗗竷寮忓簲鐢ㄧ殑璐熻澆騫寵 鐗規(guī)у疄闄呬笂鐢ㄥ埌浜嗚繛鎺ヤ紶閫掔壒鎬с?span lang=EN-US>
榪炴帴浼犻掍笉絳変簬榪滅▼瀵硅薄鍒涘緩鐨勪紶閫掞紝DCOM涓嶆敮鎸佷綅緗忔槑鏂瑰紡涓嬪璞″垱寤虹殑浼犻掕繃紼嬶紝浣嗗彲浠ュ埄鐢ㄨ繛鎺ヤ紶閫掔壒鎬э紝閫氳繃紼嬪簭鎺у埗鏈嶅姟鍣ㄥ悕瀛楃殑鏂瑰紡瀹炵幇榪滅▼瀵硅薄鍒涘緩鐨勪紶閫掋?span lang=EN-US>
14銆佸茍鍙戠鐞嗏斺旂嚎紼嬫ā鍨?span lang=EN-US>
COM鏈韓騫舵病鏈夌嚎紼嬫ā鍨嬶紝鍙互璁や負(fù)COM鍊熺敤浜?span lang=EN-US>Windows鎿嶄綔緋葷粺鎻愪緵鐨勭嚎紼嬫ā鍨嬶紝Win32紼嬪簭璁捐妯″瀷鎶婄嚎紼嬪垎鎴?span lang=EN-US>UI綰跨▼鍜岃緟鍔╃嚎紼嬶紝鐩稿搴斿湴錛?span lang=EN-US>COM鎶婄嚎紼嬪垎鎴愬闂寸嚎紼嬪拰鑷敱綰跨▼銆傚闂寸嚎紼嬩嬌鐢?span lang=EN-US>CoInitialize API鍑芥暟鎵цCOM搴撶殑鍒濆鍖栵紝COM鍦ㄥ闂寸嚎紼嬪唴閮ㄥ垱寤轟簡涓涓殣钘忕殑紿楀彛錛屾紿楀彛鐨勭獥鍙h繃紼嬪嚱鏁拌礋璐f妸瀹㈡埛瀵瑰闂翠腑鐨勭粍浠跺璞$殑璋冪敤鍙戦佸埌姝g‘鐨勬垚鍛樺嚱鏁頒腑銆?span lang=EN-US>
15銆佸茍鍙戠鐞嗏斺旀秷鎭繃婊ゅ櫒
COM鍜?span lang=EN-US>DCOM鐨勭嚎紼嬫ā鍨嬩嬌鎴戜滑浜嗚В鍒頒簡瀹㈡埛紼嬪簭涓庣粍浠跺璞¤皟鐢ㄨ繃紼嬩腑鐨勭嚎紼嬪垏鎹紝浣嗚皟鐢ㄥ彲鑳戒細(xì)闃誨紼嬪簭錛岀敋鑷充嬌寰楀鎴風(fēng)▼搴忔棤娉曟甯歌繘琛屻備負(fù)姝わ紝COM鎻愪緵浜嗘秷鎭繃婊ゆ満鍒訛紝瀹冩棦鍙敤浜庡鎴風(fēng)▼搴忥紝涔熷彲鐢ㄤ簬緇勪歡紼嬪簭錛屽厑璁稿畠浠浜庡叆璋冪敤鍜屽嚭璋冪敤鏈夋墍閫夋嫨銆?span lang=EN-US>
COM鎶婅皟鐢ㄥ垎涓轟笁綾伙細(xì)絎竴縐嶆槸鍚屾璋冪敤錛岃繖鏄渶甯歌鐨勮皟鐢ㄧ被鍨嬶紝瀹㈡埛璋冪敤緇勪歡瀵硅薄錛屼竴鐩寸瓑鍒板璞℃墽琛屽畬鎵鏈夊姛鑳藉悗鍐嶈繑鍥烇紱絎簩縐嶆槸寮傛璋冪敤錛屽鎴瘋皟鐢ㄧ粍浠跺璞★紝浣嗕笉絳夊埌瀵硅薄鎵ц瀹屽姛鑳藉氨椹笂榪斿洖錛屼互鍚庡璞¢氳繃鍑烘帴鍙i氱煡瀹㈡埛紼嬪簭錛岃繖涔熷氨鏄垜浠湪絎?span lang=EN-US>6绔犱粙緇嶇殑鍙繛鎺ュ璞℃満鍒訛紱絎笁縐嶄負(fù)杈撳叆鍚屾璋冪敤錛岃璋冪敤瀵硅薄蹇呴』鍦ㄦ斁寮冩帶鍒朵箣鍓嶈繑鍥烇紝浠ヤ究淇濊瘉鐢ㄦ埛鐣岄潰涓嶅彈褰卞搷錛屼篃灝辨槸璇達(dá)紝鍦ㄨ皟鐢ㄦ墽琛岃繃紼嬩腑錛屽璞′笉鑳借皟鐢ㄤ換浣曞彲鑳戒細(xì)榪涘叆娑堟伅寰幆鐨勫嚱鏁般?span lang=EN-US>
16銆?span lang=EN-US>DCOM瀹夊叏妯″瀷
DCOM瀹夊叏鎬у緩绔嬪湪搴曞眰瀹夊叏鎻愪緵鍣ㄥ熀紜涓婏紝鏈変簺鎿嶄綔緋葷粺鍙互鏀寔澶氫釜瀹夊叏鎻愪緵鍣紝DCOM鍜?span lang=EN-US>RPC涔熷彲浠ュ悓鏃舵敮鎸佸涓畨鍏ㄦ彁渚涘櫒銆傛墍鏈夌殑瀹夊叏鎻愪緵鍣ㄦ湁涓涓叡鍚岀偣錛屽畠浠彁渚涗簡涓縐嶈〃紺哄畨鍏ㄨ鑹詫紙涓鑸負(fù)鐢ㄦ埛璐﹀彿錛夌殑鏂規(guī)硶銆佷竴縐嶉壌瀹氬畨鍏ㄨ鑹詫紙涓鑸氳繃鍙d護(hù)鎴栫鏈夐挜鍖欙級鐨勬柟娉曪紝浠ュ強(qiáng)綆$悊瀹夊叏瑙掕壊鍜屽叾閴村畾鏁版嵁鐨勪竴濂楁満鍒躲?span lang=EN-US>
17銆?span lang=EN-US>DCOM瀹夊叏妯″瀷鈥斺斿畨鍏ㄦх瓥鐣?span lang=EN-US>
錛?span lang=EN-US>1錛夎闂畨鍏ㄦу拰嬋鍙戝畨鍏ㄦс?span lang=EN-US>
錛?span lang=EN-US>2錛夊璞$殑瀹夊叏韜喚銆?span lang=EN-US>
錛?span lang=EN-US>3錛変繚鎶ゆ暟鎹?span lang=EN-US>
錛?span lang=EN-US>4錛夐壌瀹氱駭鍒?span lang=EN-US>
錛?span lang=EN-US>5錛夋ā浠跨駭鍒?span lang=EN-US>
18銆?span lang=EN-US>DCOM瀹夊叏妯″瀷鈥斺斿畨鍏ㄦч厤緗?span lang=EN-US>
DCOM鎻愪緵浜嗗縐嶄繚鎶ゅ簲鐢ㄧ▼搴忕殑鏂規(guī)硶錛屼竴鏂歸潰錛?span lang=EN-US>DCOM鍙互寮哄埗浣跨敤瀹夊叏鎬ц屼笉鐢ㄤ換浣曞璞℃垨瀵硅薄鐨勫鎴風(fēng)▼搴忓仛浠諱綍宸ヤ綔錛屽璞$殑瀹夊叏鎬ц緗彲浠ュ湪澶栭儴閰嶇疆騫朵笖DCOM浼?xì)鑷姩寮哄埗鋴社敤銆傚彟涓鏂歸潰錛?span lang=EN-US>DCOM鎶婂畠瀹屾暣鐨勫畨鍏ㄦх粨鏋勬毚闇茬粰寮鍙戣咃紝鍥犺屽鎴峰拰瀵硅薄閮藉彲浠ラ氳繃紼嬪簭鎺у埗鍏跺畨鍏ㄧ瓥鐣ャ?span lang=EN-US>

]]>