Modernize Studio
语言:简体中文
发邮件给我们

把 Visual Basic 6 应用迁移到网页

最后一个版本发布已过去二十五年多,许多企业仍在用 Visual Basic 6 程序处理订单、生产、预约和账务。我们把它们迁移为用 C# 编写的网页应用,保留数据和业务规则,有无原始源代码均可。

为什么是现在

微软已于2008年4月8日停止支持 Visual Basic 6 开发环境。运行库仍随 Windows 提供,并在包含它的 Windows 版本(包括 Windows 11)的生命周期内受支持,但仅作为 32 位组件,且只处理严重回归和关键安全问题。不属于 Windows 的控件,如 MSCOMCTL.OCX、MSFLXGRD.OCX 以及几乎所有第三方 OCX,都必须随应用一起安装,不在微软支持范围内。

实际的难点在人和工具。微软不支持在 64 位 Windows 上使用 VB6 开发环境,懂 VB6 的开发人员逐年减少,每更换一台电脑,就要重新安装一遍并手动注册组件。

  1. Visual Basic 6 开发环境微软停止支持
  2. Windows 10微软停止支持

迁移内容

整个程序,包括它在自身代码之外依赖的一切。

  • 窗体和控件

    带文本框、组合框、表格、选项卡和控件数组的窗口,包括 MSFlexGrid、ListView 和 TreeView。它们会变成保留用户熟悉布局的网页。

  • 模块和类中的逻辑

    分散在 .bas、.cls 文件和窗体事件中的计算、校验和过程。我们把它们移到有测试覆盖的服务器端服务中。

  • 数据访问

    操作 Access、SQL Server、Oracle 或其他数据库的 DAO、RDO 和 ADO 代码,包括用字符串拼接出的 SQL。数据迁到 SQL Server 或 MySQL;如果其他系统依赖它,也可以留在原处。

  • 报表和打印

    Crystal Reports、DataReport,以及用 Printer 对象逐行绘制的打印输出。每一份都会变成内容相同的 PDF 文档。

  • COM 组件和 DLL

    自行开发的 ActiveX DLL、第三方组件,以及通过 Declare 调用的 Windows API。我们逐一识别,决定是替换、重写,还是已不再需要。

  • 文件、设置和设备

    INI 文件或注册表中的配置、从文本文件导入,以及通过 MSComm 连接的电子秤、标签打印机或串口设备。我们会确认其中哪些仍需在本地安装组件。

网页版的样子

示例说明,数据为虚构

前台电脑上 VB6 预约程序可能的样子,以及同一周在浏览器中的样子。

拖动滑块,或使用键盘方向键。

各部分迁移后的去向

在 VB6 中:窗体(.frm)及其事件
在网页应用中:网页,逻辑放在服务器上
在 VB6 中:模块(.bas)和类(.cls)
在网页应用中:有自动化测试覆盖的 C# 服务
在 VB6 中:在每台电脑上注册的 OCX 控件
在网页应用中:标准网页组件,无需安装
在 VB6 中:ADO 或 DAO 记录集
在网页应用中:针对 SQL Server 或 MySQL 的参数化查询
在 VB6 中:Crystal Reports 或 DataReport
在网页应用中:由服务器生成的 PDF 文档
在 VB6 中:每个工位一个安装包
在网页应用中:一个网址,在浏览器中打开

迁移流程

  1. 48 小时内完成评估

    请发给我们已安装的程序及其数据库,如有源代码(.vbp、.frm、.bas、.cls)也请一并提供。我们会在 48 小时内回复一份书面报告:程序目前的功能、风险所在、网页版的结构设想、试点模块的固定价格以及其余部分的估价。评估免费,不附带任何义务。

  2. 试点模块

    我们先在您真实数据的副本上构建应用的一部分,通常是使用最多的部分。在决定其余部分之前,员工可以在日常工作中实际使用。

  3. 同样的数据,同样的结果

    我们记录 VB6 程序在一组真实案例中的输出,例如价格、合计和生成的单据,再用这些结果核对新应用。我们发现的每条业务规则还会写成自动化测试,此后每次发布新版本前都会重新运行。您会收到列明每项核对结果的报告。

  4. 30 天并行运行

    完整应用就绪后,VB6 程序会与之并行使用 30 天。任何差异都会在旧程序仍在时暴露出来,我们在约定价格内修正。

常见陷阱及应对方法

  1. OCX 和 ActiveX 依赖

    许多 VB6 程序依赖 Windows 不自带的控件,有些厂商早已不存在,微软也明确把 GRID32.OCX、THREED32.OCX 等文件列为不受支持。评估报告会列出每项依赖、它在程序中的作用以及替代方案。

  2. Variant、默认属性和隐式转换

    VB6 会在字符串、数字和日期之间悄悄转换,Text1 = rs!Total 这样的语句依赖默认属性。逐字翻译成 C# 或 VB.NET,在边界情况下的行为会不同,例如字段为空或日期采用另一种区域格式时。我们会有针对性地改写这些地方,并用测试覆盖。

  3. On Error Resume Next

    这在 VB6 代码中很常见,它会掩盖故障,让程序带着写了一半的数据继续运行。遇到这种写法,我们会弄清原作者想规避什么,并明确处理那种情况。否则,新应用要么报错中止,要么重复同样的隐性错误。

  4. 16 位 Integer 和舍入

    VB6 的 Integer 最大只到 32,767,表一变大,许多溢出错误就由此而来。Currency 保留四位小数,Round 采用银行家舍入法。我们会按业务期望的方式重现舍入,并注明旧程序算错的地方。

  5. 用字符串拼接出的 SQL

    用 & 把用户输入拼成的查询容易遭受 SQL 注入,遇到带撇号的名字还会出错。新应用中所有查询都使用参数。

  6. 缺失或过时的源代码

    有时源代码已经丢失,或者存档的版本与实际使用的程序不一致。编译后的 VB6 程序无法还原为可靠的源代码,因此我们从运行中的程序、数据库和界面入手,评估报告会注明哪些部分不确定性较大。

价格和付款

评估

免费

书面报告,48 小时内

试点模块

€1,000–1,500

通常;开工时付 50%,验收时付 50%

付款条件

启动时支付 50%,验收时支付 50%。尾款须在上线和交付源代码之前付清。较大的项目按约定阶段分期付款。

评估免费。如果决定不继续,报告归您所有,无需支付任何费用。

价格固定,并在开工前以书面形式确定。如果工作内容发生变化,我们会发送新的书面报价,经您确认后才进行额外工作。

对于完整迁移,我们的目标是比一般软件公司的报价低 40% 到 60%。我们能做到,是因为我们是一家小型工作室,没有写字楼租金,也没有销售团队。

价格不含增值税。

估算价格

一次真实的迁移,由测试验证

Northwind 是微软随 Access 附带的示例数据库,并不是我们的客户。我们把一份公开副本迁移到 SQLite 和 PostgreSQL,通过自动化测试将每张表、每个查询与原始数据逐一比较,并在此基础上构建了一个可运行的网页应用。案例研究给出了具体数字,等效性报告列出了每一项核对。

Northwind 是一个 Access 数据库,但对于 Visual Basic 6,我们采用同样的方法:迁移,用同样的数据将结果与原始程序比较,并让新旧程序并行运行。

等效性报告(英文) · 可点击预览和示例评估(演示)

常见问题

我们没有源代码,还能迁移吗?

很多时候可以。我们从正在使用的程序、数据库以及操作截图或录屏入手。评估报告会说明哪些部分我们有把握重现,哪些需要您补充信息。

为什么不把代码自动转换成 VB.NET 或 C#?

转换工具产出的代码能编译,但保留了桌面程序的结构,常依赖兼容库,也把旧问题一并带了过去。做网页应用时,我们重建界面、迁移逻辑,把 VB6 代码当作描述程序功能的规格说明。

我们的 VB6 程序在 Windows 11 上会不能用吗?

程序本身不会:微软在 Windows 11 上支持 VB6 运行库。容易出问题的是周边的一切,比如未注册的 OCX 文件、丢失的安装包、老旧的数据库驱动,以及微软在 64 位 Windows 上不支持的开发环境。

我们的程序要连接电子秤或标签打印机,网页应用能做到吗?

通常可以,但这可能是唯一需要在连接设备的电脑上安装一个小程序的部分。我们会在评估时确认,并计入报价。

能一次迁移一部分吗?

能。试点模块就是第一部分,其余可以分阶段跟进。条件允许时,过渡期间 VB6 程序和网页应用共用同一个数据库。

新应用用什么语言编写?

通常是 C# 和 ASP.NET Core,任何 .NET 开发人员都能维护。如果您的 IT 服务商用的是 PHP 和 MySQL,也可以选择。

联系我们

请选择您方便的联系方式。我们会在一个工作日内用中文通过电子邮件回复您。

通过邮件

riccardo@modernizestudio.com
写邮件

请把程序及其数据库(如有顾虑可用测试数据)或一段功能说明发给我们。我们会在一个工作日内回复。

把文件发给我们

如果程序是用 Access、Excel、VB6、Delphi 或早期 .NET 开发的,您在发送文件后 48 小时内即可收到一份免费的书面评估。

  1. 复制一份文件,如您愿意,可使用测试数据。
  2. 把它附在表单或邮件中,最好放进有密码保护的压缩包,并另行发送密码。如有需要,我们会先签署保密协议。
  3. 48 小时内:收到评估报告和试点模块的固定价格。

我们在意大利办公。

给我们留言

可选。数据库、Excel 工作簿、截图或需求说明,最大 10 MB。更大的文件请在留言中附上下载链接。

发邮件给我们

点击按钮会打开您的邮件程序并填好内容。只有在邮件程序中点击“发送”后才会真正发出。

发邮件给我们