我们的 asp 经典应用程序中使用了 Com+ VB6 DLL。升级到 IIS 6.0 和 Windows Server 2003 后,它似乎给我们带来了问题。我们应该如何将其替换为 .NET (2.0) 功能?
- 网络服务?
- .NET 中的 Com DLL?
- 其他选择?
假设重写 asp 经典页面是不可能的。
编辑:如果将其重写为 com 可访问的程序集,这不会留下与 Com+ 相同的问题吗?
这在很大程度上取决于 COM 组件正在做什么,但最简单的选择可能是 .NET 中的 COM 库。
这可能需要对调用客户端(asp 经典应用程序)进行最少的更改。如果您设置 API 以匹配您的 VB 6 COM api,它应该是一个替代品。
在某些情况下,迁移到 Web 服务或其他选项可能会更干净,但需要对您的应用程序进行更多更改。如果没有更多信息,就不可能确定这是否值得。
这实际上取决于如何使用 com dll。我假设您需要保留经典的 asp 应用程序,否则您将重写整个内容。
如果 com dll 正在使用站点的会话或 http 上下文,则您不需要 Web 服务。我会将 com 代码移至 .NET 库程序集,将其注册到互操作(tlbimport/tlbexport),并使用经典 asp 应用程序中的互操作程序集与新的 .NET 库进行通信。
我假设您的 VB6 组件正在使用一些 COM+ 服务。如果是这样,那么我将在 .NET 中将 VB6 组件重写为 ServicedComponent,然后使用 Regsvcs.exe 将其注册到 COM+。
如果您的 VB6 组件正在访问数据库(或进行其他长时间的公寓调用),那么作为将 VB6 组件迁移到 .NET 的额外好处,当有许多并发时,您可能会看到性能问题的消除对您的组件的请求。有关如何以及为何进行详细说明,请参阅文章从 MTS 移植到 COM+ 时保持应用程序性能中的避免从单线程单元 (STA) 调用长时间运行的方法部分。