如果你是一名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