3

I'm making some archeology, dealing with COM+

I managed to enlist a simple COM dll as a COM+ component, so far so good.

So I've got this 'foobar' com+ component, with it's interface, and the method I'd like to call.

My question is then rally simple: how am I supposed to make a call to this component?

Any .NET or VB6 answer is accepted (I have to check the component is OK, don't care about the client)

Thanks

Edit (06/03/09): Well, I'm confused. so as to work properly, my COM+ component needs it's dll to be registered. Why not? But then, how to be sure I'm making a COM+ call, and not a COM one?

4

4 回答 4

2

可能的最简单的 VB.NET 代码片段:

Dim myCom As Object
myCom = CreateObject("MyCom.ProgId")
myCom.Method(parms)

您需要将“MyCom.ProgId”替换为组件的实际 ProgId - 您可以从组件服务管理工具中组件属性的“常规”选项卡中获取此信息(听起来您已经掌握了这一点)

myCom.Method(参数)

只是您要调用的任何方法的占位符,带有该方法所采用的参数。

下面是一些 VB.NET 语法示例的链接:

http://msdn.microsoft.com/library/de...eateObject.asp

http://www.samspublishing.com/article...le.asp?p=25857

http://msdn.microsoft.com/library/en...asp?frame=true

于 2009-06-02T16:34:56.137 回答
1

Adam 在 VB6 中的代码类似:

Dim myCom As Object
Set myCom = CreateObject("MyCom.ProgId")
myCom.Method(parms

这个例子是后期绑定的,并带有一些性能损失。您可以以早期绑定的方式调用您的方法,从而避免惩罚。在 VB6 或 VB.NET 中,只需将 COM+ dll 添加到您的引用中,您就可以通过以下方式调用对象:

VB6

dim myCom as MyCom.ProgId
set myCom = new MyCom.ProgId
myCom.Method

VB.NET

dim myCom as new MyCom.ProgId
myCom.Method(...)
于 2009-06-02T19:22:40.097 回答
1

如果您只想检查组件在调用时的响应,请使用快速的 VBScript,而不是在 VB6/VB.NET 中构建一些东西。

 Dim o : Set o = CreateObject("Lib.Class")
 o.YourMethod "someParam"

在组件服务中观察您的 COM+ 应用程序,以查看请求的类是否启动。

于 2009-06-03T06:15:50.470 回答
1

当你想为 RMI 使用 COM+ 时,请使用这个

Dim o As Object
Set o = CreateObject("Lib.Class", "MYSERVER")

其中 MYSERVER 是创建 COM+ 应用程序和注册 DLL 的机器名称。随后

o.YourMethod "someParam"

将被远程调用。如果您只使用自动化兼容接口,COM+ 将成功地为 RMI 创建代理。否则,您需要在客户端机器上提供 typelib。这可以是单独的 TLB 或 DLL 本身。

于 2009-06-03T10:37:01.997 回答