第三十一章 C++ Builder COM程式的开发(精品)

上传人:沈*** 文档编号:246790698 上传时间:2024-10-16 格式:PPT 页数:41 大小:536KB
返回 下载 相关 举报
第三十一章 C++ Builder COM程式的开发(精品)_第1页
第1页 / 共41页
第三十一章 C++ Builder COM程式的开发(精品)_第2页
第2页 / 共41页
第三十一章 C++ Builder COM程式的开发(精品)_第3页
第3页 / 共41页
点击查看更多>>
资源描述
按一下以編輯母片標題樣式,按一下以編輯母片文字樣式,第二層,第三層,第四層,第五層,*,*,*,第三十一章,COM,程式的開發,COM,到底是什麼東西?,DCOM,、,COM+,、,dll,、,ActiveX,與,COM,的關係又是什麼?微軟所推出的這麼多東西真的這麼複雜嗎?我們將在這一章讓各位讀者了解這些名詞的意義,並使用幾個,COM,的範例實作,讓各位讀者除了在理論上了解外,對於,COM,的實作也是相當的清楚。,1,大綱,31-,1.COM,簡介,31-2.COM,程式開發,31-3.COM Object,的應用,本章習題,2,31-,1.COM,簡介,現今在世界上我們常看到的分散式物件模型大概有,OMG,組織的,CORBA,、,微軟的,COM,(,DCOM,),、,SUN,的,Java RMI,、以及,OFS,的,OODCE,等等。,在這麼多種分散式物件模型中,目前最常被使用到的就是,Microsoft,所提出來的,COM,了,所以在這一章節中,我們將慢慢的從簡介到開發到應用,一一的將,COM,呈現在各位讀者的面前。,COM,有時被稱為,Common Object Model,,而微軟官方則稱他為,Component Object Model,。,要談論,COM,的歷史,就必須追溯到,1994,年,Microsoft Windows 3.1,的時代上,因為在,Windows 3.1,的環境中出現了,OLE,(,Object Linking and Embedding,)這樣的介面,當時的,OLE,所提供的功能只是在不同的應用程式中提供,Copy&Paste,的功能,只可惜當時的電腦設備不是很好,在使用,OLE,可以說是痛苦萬分。,3,31-,1.COM,簡介,隨著硬體設備的提升以及微軟的持續開發,沒有多久的時間,,OLE2,就出現在這個世界上了。,OLE2,的發展基礎就是我們這一章的重點,COM,。,OLE2,提供了各個應用程式間的通訊介面以及通訊方法,我們可以透過,OLE2,很簡單的在不同的應用程式間交互使用各自的功能,例如我們可以很簡單的將一個,Excel,的試算表,插入到,Word,中。,提供這些,Component,的開發原理就是,COM,,也就是,COM,提供了一種規範,讓每個程式設計師根據這樣的規範來開發,Application,或是,Component,,而依據,COM,的規範所開發出來的程式或是元件,就可以利用,OLE,的運作方式在各個應用程式間交互使用其功能。,例如現在你想要自己寫一個瀏覽器,第一步我們就是去查詢,MSDN,,看看,Microsoft Explorer,提供了哪些,COM Component,可以讓我們使用,接下來我們就可以很輕易的在自己的程式中利用,OLE,的方式將,Explorer,的,COM,元件,Link,進來我們的程式中,讓我們可以再自己的程式中任意的使用,Explorer,所提供的所有,Function,。,4,31-,1.COM,簡介,除了,COM,,我們也很常聽到,DCOM,這個名詞。,COM,本身的應用只能在單一電腦上運作,而,DCOM,則提供了分散式的,COM,元件,所以,DCOM,的,D,就是,Distribution,。,DCOM,讓我們的,COM,元件也可以透過網路來使用。,在,1995,年底和,1996,年的時候,微軟也順著時代的潮流進入了,Internet,的世界,在這時候,微軟將,COM,、,DCOM,、,OLE,、,OCX,等等的技術都統稱為,ActiveX,,而且在之後的命名規則上似乎都有著,X,的身影,例如,X-BOX,、,DirectX,等等。,目前微軟已經將他們所開發的軟體全面,DCOM,化,不管是一般的,Application,或是,Server,,甚至只是一些,Component,,都已經是,DCOM,的元件,所以我們可以很輕易的透過,MSND,去查詢這些,DCOM,所提供的,Function,,如此我們就可以將這些,Function,應用在我們自己要開發的應用程式上了。,5,31-,1.COM,簡介,以上都是我們對於,COM,比較文字敘述上的解釋,接下來我們要告訴各位的是,COM,的,技術,,也就是從技術面來介紹,COM,這樣的一個東西。首先我們先來看看,COM,最簡單的使用架構圖。,6,31-,1.COM,簡介,在上面這張示意圖中很清楚的可以看出來,,Application,是與,COM Object,中的一個,Interface,溝通,而這個,Interface,的定義就是利用,IDL,這樣的語言定義出來的。,COM,物件具有相當複雜的介面,但是這麼複雜的架構中有兩個很重要的東西用來定義這些複雜的介面,這兩個就是我們常聽到的,CLSID,以及,GUID,。,在,COM,的每一個類別中一定有一個獨自擁有而且唯一的,Class Identifier,,也就是所謂的,CLSID,;而對於,COM,的,Interface,來說,則必須要有一個,GUID,來當作一個唯一識別字,以避免名字的衝突。,COM,的,Interface,是,Microsoft IDL,來定義的,,IDL,全名是,Interface Definition Language,,在這邊我們要強調是,Microsoft IDL,,因為世界上的,IDL,太多的,就算一樣都是分散式架構下的技術,如,CORBA,,他的,IDL,就是由,OMG,所提供。,7,31-,1.COM,簡介,在這邊所謂的,Interface,就是提供讓,COM Object,和,Client,端連接的一個溝通管道,而,Application,和,COM Object,之間的(,Client/Server,)連接方式總共有三種。,In-Process Server,Out-of-process Server,(,Local Server,),Remote Server,8,31-,1.COM,簡介,In-Process Server,Client,端和,Server,端都存在同一個行程(,Process,)中,所以也表示都在同一台電腦上執行。在這個模式下,Server,的執行方式是以,DLL,(,Dynamic Link Library,),的形式運作,執行時才會將該,DLL,載入到記憶體中,對於容錯的能力較差,也因為執行在同一個,Process,內,所以沒有所謂的安全機制。一般來說,這樣的方式常見於單純的只是想要提供一些功能,所以採用,Component,的方式撰寫程式。例如撰寫一個符合,COM Object,規範的,dll,來提供某些功能。,9,31-,1.COM,簡介,Out-of-Process Server,(,Local Server,),Client,端和,Server,端都在同一台電腦上執行,和,In-Process,不同的是,Client,端和,Server,端是分開在不同的,Process,中運作的。,在這個模式下一般都是以,EXE,的檔案格式運作。因為,Client,和,Server,分開在不同的,Process,運作,所以兩者不會互相影響,穩定性較高,之間的通訊利用,IPC,當作通訊的環境;不過也因為分開在不同的,Process,中運作,所以之間的溝通管道比較複雜,必須在,Client,和,Server,這兩端都包上相對應的,Proxy/stub,,所以執行效率比,In-Process,的模式還要慢。,10,31-,1.COM,簡介,Remote Server,在,Remote Server,的模式下,,Client,端和,Server,端分屬於不同電腦,是分散式的架構,就是,DCOM,的運作模式。,Client,和,Server,使用,RPC,通訊,所以,RPC Service,一定不可以關閉。,在遠端,Server,上,COM Object,的格式可以是一個,DLL,檔案,也可以是一個,EXE,檔案,並沒有受到限制。不過若是,dll,檔案的話,則需要一個代理程序來處理,一般都是,dllhost.exe,這支程式在負責這部分的工作。在,Remote Server,這種模式下的實作技巧上,也要將相對應的,proxy/stub,都包進來。,11,31-2.COM,程式開發,經過上面的說明後,相信各位讀者對於,COM,已經有一些基本的觀念。接下來我們要做的就是利用,BCB,寫出我們的第一個,COM Object,,並且利用一個小小的範例程式使用這個,COM Object,。,我們將會利用範例,31-1,一步一步的帶領各位讀者開發一個,COM Object,,也會利用範例,31-2,實際的在,Application,中使用這個,COM Object,。,12,31-2.COM,程式開發,範例,31-1,:,COM Object,程式開發,範例說明,這個範例我們將實作一個可以傳入字串至,COM Object,中,再傳回一串利用,URL Encode/Decode,編碼過後的資料,我們將利用,FastNet,元件內的,TNMURL,幫我們作,URL Encode,和,Decode,的工作。,在這個範例中,將會依照,Out-of-process Server,這種模式運作,所以我們一開始所建議的專案會是一個一般的,Application,,如果現在你想要開發的是,In-Process,的模式,則是開一個,DLL Library,專案的,Project,。接下來我們就一步一步的告訴各位讀者該如何在,BCB6,中完整的開發一個,COM Object,。,13,31-2.COM,程式開發,範例,31-1,:,COM Object,程式開發,Step 1:,開新專案,並且在該專案中開啟,COM Object,的開發對話窗,首先我們先開啟一個最基本的,Application Project,,如果讀者不希望有視窗畫面,可以開啟一個,Console,程式的,Project,。,接著再次按下,New,的按鈕,選擇新增,ActiveX,這個頁次的,COM Object,。,14,31-2.COM,程式開發,範例,31-1,:,COM Object,程式開發,Step 2:,設定,COM Object,的一些相關屬性,當我們新增一個,COM Object,之後,會馬上跳出一個對話窗要我們輸入一些該,COM Object,的基本資料,我們將,CoClassName,設定成,URLCoder,,這時候,Implemented Interface,會自動幫我們設定成,IURLCoder,,,Threading Model,我們使用原本的預設值,描述則根據事實填入一小段文字。,15,31-2.COM,程式開發,範例,31-1,:,COM Object,程式開發,Step 2:,設定,COM Object,的一些相關屬性,(2),CoClass,Name,:,Client,端看到的,COM Object,名稱,一般來說習慣在,ClassName,的最前面加上,T,,在,BCB,內預設會加上,T,這個字母。,ClassName,最好不要亂填,避免到最後看到該,ClassName,卻不知道這個,Class,的作用!在這個範例中我們將,CoClass,Name,設定成,URLCoder,。,Threading Model,:設定,COM Object,的執行緒模式。執行緒的模式總共有五種,分別是,Single,、,Apartment,(,Single-threaded apartment,)、,Free,(,Multi-threaded apartment,)、,Both,以及,Neutral,。,對,COM Object,的深入設定有興趣的讀者可以參考,BCB,的,Help,,利用,COM Object,當作關鍵字就可以找到相關的說明文件了,該說明文件的標題為,Choosing a threading model,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!