2010-11-30 122 views
0

假设我是introduced a COM interface and don't want any third party to use it。我完全控制了COM组件和保存接口定义的IDL文件的来源。我的COM组件将需要从那个接口编组东西,所以I'll need to either implement IMarshal or provide a typelib or provide a proxy/stub代理/存根是否暴露接口?

显然,如果我提供一个typelib,任何人都可以检查它并找到我的界面是什么以及如何使用它。这不是我想要的。

如果我使用代理/存根?它会暴露界面,并让任何人检查它或将保持界面细节隐藏?

回答

1

不幸的是,这是不可能的。 COM的想法是客户可以发现组件和接口。

在之前的工作中,我从事过数字版权应用程序的开发工作,并且在那里我们故意不使用COM来让人们更难以使用我们的应用程序。我们不得不建立我们自己的组件基础设施(除了其他安全措施外)。

+0

我不能同意你的看法。如果没有编组,只通过使用早期绑定来实现内部工作是微不足道的 - 那么客户端就不需要在运行时知道接口。我们这样做,它的工作。 – sharptooth 2010-11-30 09:16:24