分享
 
 
 

使用 COM+ 参数化对象结构编程技术

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

使用 COM+ 参数化对象结构编程技术

关键词:Delphi控件杂项

使用 COM+ 参数化对象结构编程技术

一、引言

COM+ 服務技術的一個核心理念就是系統本身提供完成許多面向企業應用開發者的通用基本模組(如線程

、物件資源池管理、事務服務管理、事件服務管理等),讓系統設計人員把精力集中在企業應用本身的業務

邏輯上。

COM+提供了許多新的服務和一致的管理運行環境,它還支援申明性編程模型(declarative programming

model),也就是說,開發人員可以按盡可能通用的方式開發元件程式,把一些細節留到配置時刻再確定。例

如,在開發一個COM+元件,它支援事務處理特性,但是我們在開發元件的時候,並不確定它是否使用事務處

理特性,而把是否支援事務處理特性留待配置時刻再作決定。有的應用可能會需要事務處理特性,而有的應

用可能並不需要,我們可以通過COM+管理程式配置元件的屬性來決定元件是否支援事務處理特性。MTS安全模

型實際上是一個典型的申明性編程技術,它把元件的安全角色資訊留到配置時刻再給出確切的定義,而非編

程時刻。COM+繼承了MTS的安全模型。

利用COM+的服務和管理工具,開發一個COM+元件要比開發一個COM元件容易得多,因爲COM+元件實際上是

建立在COM+系統服務基礎上的應用程式,我們可以避免底層繁瑣的細節處理,如多線程的並發處理。通過

COM+系統服務,在獲得可靠性的同時,也使的元件和應用程式更趨於標準化,在更廣泛的範圍內體現元件或

者應用的多態性。

COM+ 的推出终于有机的统一了 COM/DCOM/MTS 的编程模式,使得我们不需要区分我们编写的是什么类型

的COM 对象,所编写的对象既是 COM 对象也是 COM+对象;在 COM+ 中物件環境和截取(intercept) 技術都

被合併到標準的 COM代理/存根中,所以可以通過標準得 CoCreateInstance 方法來創建物件,並且通過

CreateInstance方法創建的MTS 元件同樣可以在COM+ 正常運行和完全相容。

二、参数化 COM+ 对象结构

在COM+ 中引入了许多新的服务何功能,参数化对象结构就是其中一项功能。本功能是用来实现为COM+对

象创建提供一个字串参数,组件对象通过IObjectConstruct接口来查询管理员配置的字串参数。参数化对象

结构的一个典型用途就是可以应用到程序中作为 ADO 的连接字串参数。

IObjectConstruct 让的方法或对象通过参数来控制相关对象处理功能,我们必须使用接口对象来实现此

接口,当管理员将组件对象的对象结构配置参数设置有效后,COM+ 将调用 IObjectConstruct.Construct 通

过IObjectConstructString来获取参数化 COM+ 对象结构中的字串参数。

IObjectConstructString 接口用来存取建立者字符串。本对象是一个Automation COM 对象,但无须通

过接口对象来实现他,COM+ 支持在调用 IObjectConstruct.Construct 时暴露此对象。

如何为元件输入对象结构字串。

1、在组件管理器中选取相应的组件,右键弹出快捷菜单,然后点击属性

2、在组件属性对话框,点击激活属性页。

3、使能对象结构,输入建立者字符串(例如一个 ADO 连接字串)。

三、程序实现

实现COMPlusServer

1、Import Type library->COM+ Services Type Library->Create Unit

2、建立一个新的 ActiveX Library Project

3、创建一个新的 MTS Data Module

4、到 Type Library 中选取 Project->Uses->点击右键选择 Show All Type Library->选择COM+

Services Type Library

5、选择 COM 的接口对象->Implements->点击右键选择 Insert Interface ->IObjectConstruct

6、在接口中定义一个新的的方法-> GetConString

7、到组件对象实现单元中实现以下代码:

private

{ Private declarations }

objSonStr: IObjectConstructString;

StrDemo: WideString;

function TXXXServer.Construct(const pCtorObj: IDispatch): HResult;

begin

pCtorObj.QueryInterface(IID_IObjectConstructString, objSonStr);

StrDemo := objSonStr.Get_ConstructString;

end;

procedure TXXXServer.GetConString;

begin

if trim(StrDemo) = '' then

ShowMessage('没有字串')

else

ShowMessage(StrDemo);

end;

客户端程序

客户端程序是最一般化的 Delphi 代码:

procedure TForm1.Button1Click(Sender: TObject);

begin

DCOMConnection1.AppServer.GetConString;

end;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有