【问题标题】:Using COM in ASP.NET, or use a standard DLL instead?在 ASP.NET 中使用 COM,还是使用标准 DLL?
【发布时间】:2011-10-08 18:06:56
【问题描述】:

我们正在将一个带有 VB6 COM 对象的经典 ASP 应用程序迁移到 .NET 世界,我们对如何以尽可能简单的方式迁移我们的 COM 对象感到困惑。我找到了很多“操作方法”文章,但没有多少“为什么”文章的方式。我们最好将 COM 对象重建为查询数据库的标准 DLL(这是一个 DB 密集型应用程序),还是应该在 C# 中将它们重建为新的 COM 对象?每种方法的优点和缺点是什么?我们还应该考虑另一种方法吗?我们在 .NET 中还不是一家非常强大的商店,因此欢迎提出任何建议。

提前致谢,迈克

【问题讨论】:

  • 你打算保留旧的asp代码吗?
  • 这听起来很像我以前的工作。你在布莱克本吗?
  • @alexanderb - 我们的计划是将整个应用程序迁移到 C#。
  • @Mike,如果您打算进行竞争性迁移 - 尽快摆脱任何 COM 组件;

标签: asp.net dll com vb6-migration


【解决方案1】:

这是一个很难的问题,因为有很多变数。让我们假设,对于这个线程,您有相当多的关注点分离和一组性能不错的 COM DLL。

假设上述情况并考虑到您的帖子(COM 组件中的大量代码),我通常会查看的路径是首先在 .NET 中重写 UI,然后使用 .NET 包装器来调用 COM 组件。这很容易通过引用 COM 组件来完成。如果您在封装后遇到性能问题,迁移到某些本地 DLL 方法可能会有所帮助,但设置代码以调用本地方法是一个更复杂的方向,所以我不会先走这条路。

然后你有两个可能的方向。专注于用户故事(可用性)或专注于迁移单个库(COM DLL >> 一次组装一个)。我更喜欢故事的方向,尽管你最终可能会得到死代码。我不会考虑迁移,而是一次重写一个故事,因此您专注于在 .NET 中正确执行此操作。迁移的结果是大量用 .NET 编写的 COM 代码,这很讨厌。

我会考虑至少找一位 .NET 专家,无论是作为雇员还是顾问,这样你就不会让旧习惯泄露到糟糕的代码中。聘请该专家主要是为了让您走在正确的道路上,而不是作为另一组编码人员。不是说这个人不会编码,而是确保你不要过度利用这个人作为一个温暖的身体,因为他的主要工作,在开发过程中,是防止你在脚上开枪。如果您能尽早找到此人,请考虑聘请具有一定架构经验的人来帮助设计 .NET 应用程序。前期试验比后期重构成本更高。

不要尝试迁移计划。他们不工作。您不仅在进行开发平台的转变,而且还在进行彻底的范式转变。如果您尝试使用任何自动化工具来迁移代码,您最终会得到一个劣质的应用程序。

另一件事。如果您是 VB 商店,请考虑迁移到 C#。这听起来适得其反,因为存在学习曲线,但坚持使用 VB 意味着您将尝试在 VB.NET 中编写 VB6。最终结果是糟糕的代码库难以重构。

【讨论】:

  • 感谢 Gregory 的周到和深思熟虑的答复。您为我们提供了对我们面前项目的清晰洞察,并以合理和明智的建议做出了回应。感谢您抽出时间真正回答问题。
  • 我已经完成了从 COM 世界的迁移,并且非常了解其中的陷阱。如果我可以帮助其他人避开地雷,我非常愿意花几分钟时间。 :-)
【解决方案2】:

我的经验建议您应该将 COM 对象重新写入 DLL,因为在转换过程中发生故障的风险很低,而且所花费的时间比在 C# 中重新编写要短很多。

迁移到 .NET 只能手动完成,但是一旦在 COM DLL 中,您可以逐个部分地完成此操作。

【讨论】:

    猜你喜欢
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 2014-10-05
    • 2014-09-13
    • 1970-01-01
    • 2011-05-31
    • 2017-02-15
    相关资源
    最近更新 更多