如何用.NET替换VB6 Com + DLL

时间:2009-05-07 17:40:40

标签: .net-2.0 iis-6 com+

我们的asp经典应用程序中使用了Com + VB6 DLL。升级到IIS 6.0和Windows Server 2003后,它似乎导致了我们的问题。我们应该如何用.NET(2.0)功能替换它?

  • Webservice?
  • .NET中的Com DLL?
  • 其他一些选择?

假设重写asp经典页面是不可能的。

编辑:如果将其重写为com可访问的程序集,这不会给Com +留下同样的问题吗?

3 个答案:

答案 0 :(得分:1)

这很大程度上取决于COM组件正在做什么,但最简单的选项可能是.NET中的COM库。

这可能需要对调用客户端(asp经典应用程序)进行最少量的更改。如果您设置API以匹配您的VB 6 COM API,那么它应该是替代品。

在某些情况下,迁移到Web服务或其他选项可能更干净,但需要对应用程序进行更多更改。没有更多信息,就无法确定这是否值得。

答案 1 :(得分:1)

这实际上取决于如何使用com dll。我假设您需要保留经典的asp应用程序,否则您将重写整个事情。

如果com dll正在使用站点的会话或http上下文,则不需要Web服务。我将com代码移到.NET库程序集中,使用interop(tlbimport / tlbexport)注册它,并使用经典asp应用程序中的interop程序集与新的.NET库进行通信。

答案 2 :(得分:1)

我假设你的VB6组件正在使用一些COM +服务。如果是这样,那么我会将.NET中的VB6组件重写为ServicedComponent,然后使用Regsvcs.exe将其注册到COM +。

如果您的VB6组件正在访问数据库(或使其他长时间没有公寓呼叫),那么,作为将VB6组件迁移到.NET的额外好处,您可能会看到在那里消除性能问题是您的组件的许多并发请求。有关如何以及为何从文章Preserving Application Performance When Porting from MTS to COM+中查看单线程单元(STA)部分中避免长时间运行方法调用的详细说明。