gpt4 book ai didi

.net - 逐渐将一个巨大的、单一的 VB6 winforms 应用程序重构到 .Net

转载 作者:行者123 更新时间:2023-12-01 06:51:31 24 4
gpt4 key购买 nike

简而言之,该应用程序从数据库中查找要执行某事的指令,执行该操作,并将有关该操作成功或失败的信息保存回数据库。它执行大约 40 种不同的操作,例如自动化 Office 应用程序、复制文件、运行搜索等。

该应用程序是一个单一的 EXE,所以一切都在主应用程序的进程空间中运行,这一直是不稳定的主要来源,因为它必须加载大量的 3rd 方 DLL 来完成这项工作,而且它们经常会做一些令人讨厌的事情,使程序崩溃整个应用程序。

计划:我想将执行危险繁重工作的代码从 VB6 exe 移到独立于主应用程序运行的外部进程中。原始应用程序只会处理数据库内容并启动其他进程来进行投标。

做这个的最好方式是什么?如果我还在使用 VB6,我想我会构建 ActiveX EXE 来执行此操作,但我不确定 .Net 等效项是什么。理想情况下,VB6 应用程序将声明一个实例化外部进程的对象,并使用对象设置参数的方法,执行进程,可能接收进度通知,并最终接收操作的结果。

解决这个问题的最佳方法是什么?

谢谢!!

最佳答案

嗯,不能说我以前尝试过这样的事情,但是

一种可能的解决方案

  • 编写一个应用程序\服务,a) 产生子进程,并且 b) 托管一个 WCF service促进进程之间的通信
  • 编写子进程来处理“操作”

  • 另一种可能的解决方案

    另一种可能是使用 Windows Workflow Foundation 4。它相对稳定且相对易于使用(我自己也涉足过这个)。不知道有没有提供 隔离你需要,但值得一看。

    您基本上可以授权您自己的自定义事件来执行您的操作,然后通过 WorkflowInvoker 动态执行它们。

    另一个可能的解决方案

    另一种可能有点笨手笨脚但在单进程托管方面更传统并提供您需要的隔离的替代方案是查看 Managed Add-in Framework [MAF](查看有关隔离级别的链接部分)。可能有点吓人,但我的 friend Kent Boogaart has done some nifty things with it ,如果你保持简单,它可能会扭转局面。

    关于.net - 逐渐将一个巨大的、单一的 VB6 winforms 应用程序重构到 .Net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3265315/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com