摘要:N-Tiers開發方式(ASP/ASP.NET、VB6/VB.NET呼叫使用COM+元件)
在元件安裝完成後,接下來的工作就是要如何呼叫使用我們寫好的元件了。我們假設我們寫好的元件的名稱如下:
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您的元件;另外就是不論您寫的是ASP、ASP.NET、VB、VB.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
Using 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 End Using
.NET呼叫元件需自行釋放元件:
從以上的這些程式碼,可以發現,呼叫元件的過程幾乎相同,使用.NET撰寫時,呼叫的方式更可以簡潔。
當元件被呼叫執行後,可以在【元件服務】中找到該Package中的元件被呼叫而轉起來。如果是用ASP,VB6呼叫元件,可以發現當元件呼叫完成後,元件的轉動會停下來,呼叫中的元件數字也會歸零。但次使用.NET呼叫元件,如果沒有撰寫【Try..Catch..Finally..End Try】並且把【obj.Dispose()】、【obj = Nothing】放在Finally裡,那麼【元件服務】中的元件將會轉不停。這是因為ASP,VB6再程式執行完畢時,會自動的做【資源回收】的動作;但是在.NET中【資源回收】必須經由程式設計者手動的執行,否則需當系統資源不足時啟動GC才能夠真正的回收。
以下是簽名:
- 歡迎轉貼本站的文章,不過請在貼文主旨上加上【轉貼】,並在文章中附上本篇的超連結與站名【topcat姍舞之間的極度凝聚】,感恩大家的配合。
- 小喵大部分的文章會以小喵熟悉的語言VB.NET撰寫,如果您需要C#的Code,也許您可以試著用線上的工具進行轉換,這裡提供幾個參考
Microsoft MVP Visual Studio and Development Technologies (2005~2019/6) | topcat Blog:http://www.dotblogs.com.tw/topcat |