N-Tiers开发方式(ASP/ASP.NET、VB6/VB.NET呼叫使用COM+组件)

續接:N-Tiers開發方式(COM+元件的註冊、修改)

在元件安裝完成後,接下來的工作就是要如何呼叫使用我們寫好的元件了。我們假設我們寫好的元件的名稱如下:


Package:KDMO1000
Project:PDMOMenu
Class:
CDMOMenu1(無Transaction)
CDMOMenu2(有Transaction)
假設CDMOMenu1中有一個Function是GetNodeName,傳入參數NodeId(整數),傳回NodeName(字串)
GetNodeName(Byval NodeId as Integer) As String
 

Late Binding

我这边所提的使用方式,是使用Late Binding的呼叫方式。也就是说,不会预先将组件注册到您的ASP.NET的专案中,或者是您的VB.NET的项目中,当系统运作的时候,在动态的从Server把该对象Bind上来使用。这样做的缺点是,您无法透过obj.就弹出组件内的属性方法让您选择,使用属性方法的时候都必须自己Keyin进去。但是优点则是,当您的组件有做了变更,您不必去一个一个的项目里重新的Reference您的组件;另外就是不论您写的是ASPASP.NETVBVB.NET,您呼叫组件的方式是一致的。

呼叫组件:

呼叫组件的方式如下:

ASP:
Set  obj  =   CreateObject ( " PDMOMenu.CDMOMenu1 "
NodeId 
=   2  
NodeName 
=  obj.GetNodeName(NodeId)
VB:
Dim  obj  as   Object  
Set  obj  =   CreateObject ( " PDMOMenu.CDMOMenu1 "
Dim  NodeId  as   Integer  
NodeId 
=   2  
Dim  NodeName  as   String  
NodeName 
=  obj.GetNodeName(NodeId)

ASP.NET/VB.NET
Dim  NodeId  As   Integer   =   2  
Dim  obj  As   Object   =   CreateObject ( " PDMOMenu.CDMOMenu1 "
Try  
    
Dim  NodeName  As   String   =  obj.GetNodeName(NodeId) 
Catch  ex  As  Exception 
    
Me .lblErrMsg.Text = ex.Message.toString() 
Finally  
    
' 資源回收 
    obj.Dispose() 
    obj 
=   Nothing  
End   Try

 

NET呼叫组件需自行释放组件:

从以上的这些程序代码,可以发现,呼叫组件的过程几乎相同,使用.NET撰写时,呼叫的方式更可以简洁。

当组件被呼叫执行后,可以在【组件服务】中找到该Package中的组件被呼叫而转起来。如果是用ASP,VB6呼叫组件,可以发现当组件呼叫完成后,组件的转动会停下来,呼叫中的组件数字也会归零。但次使用.NET呼叫组件,如果没有撰写【Try..Catch..Finally..End Try】并且把【obj.Dispose()】、【obj = Nothing】放在Finally里,那么【组件服务】中的组件将会转不停。这是因为ASP,VB6再程序执行完毕时,会自动的做【资源回收】的动作;但是在.NET中【资源回收】必须经由程序设计者手动的执行,否则需当系统资源不足时启动GC才能够真正的回收。

转载于:https://www.cnblogs.com/topcat/archive/2008/06/08/1215931.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值