如果你是一名Active Server Page (asp) 開發者,相信你可能經常使用COM對象來創建ASP頁面。甚至在你使用中都忽略了他就是COM對象。比如:ADO。只個調用率最高的組件已讓你的頁面擴展了無限的功能。然而ASP本身是解釋型腳本,在功能上不足COM強大。作為擁有快速開發,易用性強,支持COM的VB自然的作為了ASP中開發COM的首要工具。下面的示范和描述中,通過Visual Basic 語言在告訴大家如何寫COM及COM對象模型的使用,相信會讓你有所收獲。
屬性和方法之間有什麼不同?
介紹一個屬性的要點?
什麼是一個只讀屬性的含義?
什麼是集合對象?
什麼是集合對象中的標准屬性?
........
COM是一個面向對象的標准,在定義COM對象中只有方法和屬性。他們沒有其他的接口,方法能擁有參數,屬性不能,屬性又擁有讀/寫兩種屬性,方法可以返回一個值。
屬性
屬性不接收任何參數並通常使用描述對象狀態或設置一個對象而被使用。所有屬性返回一個值,然而一些屬性是只讀,一些是讀/寫。在這裡介紹一個用Visual Basic 語法的例子幫助解讀屬性:
例1
讀
value = object.PRoperty
寫
object.property = value
注意:這裡並沒有熟悉的圓括號,只是像變量一樣的賦值。這裡就是與方法(function/sub)不同之處。以上是用Visual Basic 語法設置一個屬性。
方法
方法能返回值或賦值,通常是被使用一個對象初始化事件,或一個函數過程的調用。方法能被賦值,但只有存在與參數列表,如果一個方法沒有參數,那麼語法如下:
例2
value = object.method()
注意在 例2中這個方法被設置空(),方法能有一個返回值必須有帶().以例所述,這個連接對象有一個執行方法並返回一個Recordset對象。這裡是例子:
例3
Set Rs = Conn.Execute ("select * from table")
方法不返回一個值,在參數中沒有().例如連接對象中的關閉方法。
例4
Conn.Close
重點:
方法能獲取一個或多個參數或不獲取參數。然而,參數也同樣是可選的。參數一但存在,就必須全部賦值。如果有一個參數是可選,所有在該參數後的其他參數也同樣可選。例:打開數據庫連接的方法是一個關於可選參數方法的好的例子。這個打開方法有八個可選參數。第一,第二是建立數據庫和登錄信息。如例5
例5
Conn.Open "DSN","sa",""
顯示一個DSN的數據源,一個 sa 的登錄帳號和一個空的密碼。或是你能知道關於例6中打開的方法:
例6
Conn.Open "driver=SQL Server;server=yourServerName;uid=someUID;" &_
"pwd=somePWD;database=someDatabase;"
注意在例6中我們只使用了一個參數和例5中我們使用的三個可選參數結果是一樣的。 可選參數是一個在被呼叫的方法中的參數允許為空或已被插入了默認值。在例6中被使用的可選參數是默認值,在例7中使用的可選參數是空。
例7
Conn.Open "DSN","sa","", , , ,
在例8中參數為空值的這幾個可選參數是不同與例5的。,
集合
集合對象可以存儲許多元素而且在創建以後也可以改變他們的數據。一個集合有Item方法,一個Count屬性和一個遍歷方法。一個集合的集合類型也同樣需要擁有創建對象的能力。換句話說。如果一個特別的對象需要在一個集合對象中創建一個對象群。如例,一個驅動器集合對象需要提供顯示驅動器在電腦中的詳細信息。
用Count屬性返回在這個集合中有多少對象。遍歷方法允許程序員在一個集合對象中從頭到尾地循環。例8中說明了遍歷方法:
例8
For Each Object in Collection
Next Object
注意在這個遍歷方法中沒有應用如例中的語法。這是因為一個遍歷方法是特例在Visual Basic允許在開始使用並用For Next聲明。
默認方法或屬性
方法或屬性是COM索引從0被獲取的默認屬性。Visual Basic 允許程序員在不知道如何使用方法和屬性語法時自動呼叫默認值。相關說明看例9。
例9
Set Object = Collection.Item(2)
這裡是獲取在集合中獲取第二列並分配給Object對象。因為Item方法是一個默認方法。你因此可以使用像例10中的Item方法。
例10
Set Object = Collection(2)
對象初試化
在ASP中創建一個對象實例。你可以使用一個像例11中的聲明
例11
Set Object = Server.CreateObject("SMUM.XCheck.1")
這裡服務端的CreateObject方法中的參數是一個ProgId(Program ID).這個ProgId是一個唯一分配的COM對象.你必須知道這個COM對象的ProgId才能創建這個COM對象.
這裡介紹另一種方法來創建COM對象.你能使用其他的COM對象來創建返回一個新的對象.這裡介紹一個集合工作.你在一個集合方法返回一個COM對象所在集合對象中的索引號,另一個對象隨時會返回一個COM對象.在例12中你必須用類似set來聲明。
例12
Set Object = Collection.Item(2)
服務端是一個COM對象。例11和例16許多地方都很相似。他們是從一個COM對象中訪問另外一個COM對象。他們不同之處就在於一個是在服務端使用CreateObject的方法來創建一個服務端對象從而返回一個COM對象。另一個是用在一個集合內通過Item方法返回一個COM對象。因此如果你需要在一個COM對象中創建另一個COM對象。服務端對象來自與哪?答案就如是先有雞還是先有蛋的問題他們是聲名一個ASP中的內置COM對象。
內置COM對象
在ASP環境中有六個內置的COM對象。
Server
Request
Response
application
session
ObjectContext
關於ASP內置對象在這裡不多說。