Friday, April 03, 1998 at 2:07:46 PM Pacific

Bierman Question on COM Client

Since we got so much good useful help in designing the server side of Frontier's COM interface, bierman@scripting.com asks:

How should we implement the client side of the COM interface for Frontier?

Our current take is to keep it simple and to use the OLE Automation Controller interface (i.e. IDispatch). Frontier would not support an object browser or type library browser. Frontier will use the same type conversion rules it uses on the server side for the client side and would not type check a call even if a type library was present.

The Frontier Interface could be the following:

obj = com.createObject (object id)

where object id is either a Program ID such as "UserLand.Frontier.Server" or a CLSID. Returned is the pointer to that object used in the other com script calls. Note that this pointer is only valid for the current invocation of Frontier.

com.destroyObject (obj)

where obj is the value returned from a call to createObject.

Note: For the following three scripts, the obj parameter can be the value returned from a call to com.createObject OR a Program ID OR a CLSID. In the event that a Program ID or CLSID is used the object will be created, called, and destroyed all within the single script call.

result = com.call (obj, methodName, parameters,...)

where methodName is the name of the method to call through Invoke, and parameters are zero or more parameters for the method.

result = com.get (obj, propertyName) where propertyName is the name of the property (variable) you want the value of.

com.set (obj, propertyName, value)

where propertyName is the name of the property (variable) you want to set, and value is the value you want the property to have.

Any comments or suggestions are completely welcome.

Robert Bierman

This page was last built on 4/3/98; 2:11:34 PM by David Winer. dave@scripting.com