在ASP.NET中使用COM,还是使用标准DLL?

时间:2011-07-19 17:39:00

标签: asp.net dll com vb6-migration

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

提前谢谢,迈克

2 个答案:

答案 0 :(得分:3)

这是一个很难回答的问题,因为有很多变数。让我们假设,对于这个线程,你有一个相当大的关注点分离和一组具有良好性能的COM DLL。

假设上述内容并考虑到您的帖子(COM组件中的大量代码),我通常会看到的路径是首先在.NET中重写UI并使用.NET包装器来调用COM组件。这可以通过引用COM组件轻松完成。如果一旦包装出现性能问题,转移到某些本机DLL方法可能会有所帮助,但设置代码以调用本机方法是一个更复杂的方向,所以我不会首先处理该路由。

然后你有两个可能的方向。专注于用户故事(可用性)或专注于迁移单个库(COM DLL>>一次组装一个)。我更喜欢故事方向,尽管你可能最终会得到死代码。我不是考虑迁移,而是一次重写一个故事,所以你专注于在.NET中做到这一点。迁移最终导致很多用.NET编写的COM代码,这很讨厌。

我会考虑找到至少一位.NET专家,无论是雇用员工还是顾问,所以你不要让旧习惯在糟糕的代码中泄漏。应聘请这位专家,主要是为了让您走上正确的道路,而不是另一套编码手。不是说这个人不能编码,而是确保你不要过度利用这个人作为一个温暖的身体,因为他在开发过程中的主要工作就是让你不要在脚下射击。如果你能早点找到这个人,可以考虑聘请具有一定架构经验的人来帮助设计.NET应用程序。预先试验比以后重构更昂贵。

请勿尝试迁移程序。他们不工作。您不仅要进行开发平台转换,还要进行完整的范例转换。如果您尝试使用任何自动化工具来迁移代码,最终会得到一个劣质的应用程序。

另一件事。如果您是VB商店,请考虑转移到C#。这听起来有成效,因为有一个学习曲线,但坚持使用VB意味着你将尝试在VB.NET中编写VB6。最终结果是一个难以重构的错误代码库。

答案 1 :(得分:0)

我的经验建议你应该将COM对象重新编写到DLL中,因为转换过程中某些东西会破坏的风险很小,而且这个时间比用C#重写要短很多。

迁移到.NET只能手动完成,但一旦进入COM DLL,就可以逐个部分地完成。