将 PowerBuilder 桌面应用程序自动迁移到 Web
最近,越来越多的企业将其业务应用程序从桌面迁移到 Web。
这一决定通常是由于纯桌面应用程序无法支持新的创新功能和桌面应用程序支持的高成本。您的企业将从可访问性、功能性、性能和 Web 开发最佳实践中获益。客户越来越热衷于创新和创造性的应用程序使用。
但是成功的桌面应用程序迁移需要一个谨慎且包罗万象的方案。这就是需要智能解决方案的地方。
在这个阶段,我们想分享我们在将 PowerBuilder 应用程序迁移到 Web 方面的经验。我们将向您展示最适合此任务的解决方案(以及代码)。
我们尝试了许多潜在的目标 ASP.NET 和Java Web 技术,例如 ASP.NET WebForms、ASP.NET MVC、ASP.NET Web API / Java Spring Boot REST API + AngularJS / ReactJS、JSP、 Java Spring 等。
在制定正确的解决方案时,我们负责应用程序的可用性、规模和基础设施管理。仔细的研究和分析导致了最充分的方法开发。它满足了我们的架构和性能要求。
PowerBuilder 到 ReactJS 的自动化迁移解决方案
您可以在下面看到 PowerBuilder 标准演示应用程序在其原始桌面和迁移的 Web SPA 版本中的外观:
基本上,该解决方案实现了 2 个主要技术部分:
用户界面 (UI) 和业务逻辑位于客户端 (JavaScript ReactJS)。
具有对数据库(ADO.NET、Entity Framework 或Java Hibernate、JDBC)的调用的无状态 REST API 服务器(可以是 C# 或Java Spring Boot)。
采用 SPA 架构的好处
了解单页应用程序 (SPA) 的优势始于使用和实现它们的简单性。但还有更多:
- 类似于桌面的架构允许实现高转换自动化水平。
- 速度快,因为大多数资源(HTML+CSS+脚本)在应用程序的整个生命周期中只加载一次。只有数据来回传输。
- 迁移和进一步开发被简化和精简。无需编写代码即可在服务器上呈现页面。
- 使用 Google Chrome 网络浏览器易于调试,因为您可以监控网络操作、调查页面元素和与之相关的数据。
- 可以有效地缓存任何本地存储。应用程序只发送一个请求,存储所有数据,然后它可以使用这些数据,在某些情况下甚至可以离线工作。
解决方案的基本特征
- 客户端使用最新的 JS 框架——ReactJS、Redux、Redux Saga、Material UI。
- 具有单向数据流的通量架构。
注意。 Flux 是 Facebook 用于构建客户端 Web 应用程序的应用程序架构。
- 仅使用流行/维护良好的库包。
- 没有自定义“框架”,额外的自定义组件/功能数量很少。
- 开箱即用的目标技术堆栈涵盖了大部分 PFC 功能。
- 继承到组合转换。
注意。继承和组合是开发人员用来建立类和对象之间关系的两种编程技术。继承从另一个类派生出一个类,而组合将一个类定义为其部分的总和。
- 变量从带有匈牙利符号的下划线重命名为骆驼大小写。
- 易于理解和维护文件结构。
- 对长列表使用虚拟化。
- 精简数据访问层(REST API + DB)。
- 服务器部分可以使用 .NET 或Java完成。
- 具有基本自适应(可调整大小)布局的现代 Web 界面。
- 报告样式可以下载并保持与 PowerBuilder 中的相同。
- 实现了高百分比的转换自动化水平。然而,最受关注的是转换准确性和编码最佳实践,而不是 100% 的自动化水平。
需要考虑的前 4 个重要问题:
- 更多的 JavaScript,更少的 C# 或Java代码。
- 资源的初始加载可能不会那么快,但可以通过使用代码拆分/块进一步优化。
- PowerBuilder 的一些 Describe()/Modify() 案例仍然没有很好地自动化。
- 应用编码最佳实践的额外手动工作:
- 向 SQL 查询添加 ID、分页、排序/过滤器(将在服务器或数据库端实现,而不是自动化)。
- 入口点、主页面框架、数据库连接、授权/身份验证、用户角色、高级布局。
- 应审查所有交易案例并使其适应当前架构。
解决的技术挑战:
- 复杂的继承和大部分转换已经在转换工具中自动化。
- 实现了 PowerBuilder 控件的类似物以及 Material UI 的使用、控件的设置和样式聚集在一个地方。
- 自适应布局、控件、现代 Web UI。
- 在 DataWindow 中单独编辑特定记录以获得更好的用户体验和性能。
- 对要加载的许多数据和记录进行性能优化:虚拟化、分页、向数据库添加自定义存储过程。 DDDW、搜索、过滤等
- 报告迁移及其导出到 HTML 和 Excel、PDF、CSV 等。
- 解析和加载自定义格式。使用 MS Word 功能(书签)。
- 通过 JWT(JSON Web 令牌)进行身份验证。
- 使用自定义 SOAP 服务。
- Windows 的特殊调度程序。
结论:如果您正在考虑迁移旧版 PowerBuilder 应用程序(无论是否更改数据库),我们强烈建议您关注这个久经考验的 PowerBuilder 到 ReactJS 自动迁移解决方案。
上述方法已成功应用于以下 2 个商业迁移项目。