我们最近在我们的Youtube 频道(订阅!)发表了对Viasoft Korp技术总监Alexandre Henzen的采访。采访(葡萄牙语)可通过此链接获得,也可在下面的这篇文章中获得。
在这次采访中,Alexandre 谈到了Viasoft Korp集团公司,该公司如何从一个人和一个使用 C++Builder 6 构建的桌面软件开始,并成为巴西大型工业的 ERP 软件供应商,成为拥有 500多家公司的企业集团的一部分员工。
在参与这一旅程的人中,有我、Wagner Landgraf、TMS Software和Embarcadero,以及公司使用了近 20 年的开发工具Delphi。这次采访就是关于这样的旅程。
对于那些不懂葡萄牙语,或者只是不喜欢视频的人,我们在下面用英语转录了采访的最佳时刻。
1:46 – 关于 Viasoft Korp
Wagner Landgraf:什么是 Viasoft Korpem>
Alexandre Henzen: Viasoft Korp 是Viasoft集团的一个业务部门。Viasoft 是一家为多种不同类型的企业提供 ERP 软件的公司:农业综合企业、超市、建筑材料等。Viasoft Korp为行业提供ERP 软件。Korp 于 2000 年正式开始。(……)当时软件是用C++ Builder开发的。
Viasoft Korp 为行业提供 ERP 软件。
亚历山大·亨岑
3:00 – 从 C++ Builder 迁移到 Delphi
WL:我认为它是我见过的少数用 C++ 构建的 ERP 软件之一。
AH:确实如此。在 2004 年、2005 年左右的某个时候,编译需要6 个小时。然后我们开发了一个C++ 到 Pascal 的转译器——顺便说一下,在你的帮助下,我不确定你是否记得——所以我们可以将完整的源代码迁移到 Delphi。
我们开发了一个 C++ 到 Pascal 的转译器来从 C++ Builder 迁移到 Delphi。
亚历山大·亨岑
6:47 – 帮助公司的关键时刻
WL:是什么帮助了 Korp 的成长是关键时刻em>
使用TMS Scripter 的运行时软件定制帮助我们成长。
亚历山大·亨岑
9:17 – 使用工作流工具
AH:(另一个重要的决定):在 BPM 还不是很流行的时候,(在 2007 年使用TMS Workflow)也是一个很大的优势。事实上,您可以绘制流程图并说:“乔批准发票,如果发票价值高于 X,则将其发送给杰克,等等。” (…)这使我们的系统更加灵活。
17:20 – TMS Aurelius 的起源
WL:嗯,这些年来我们一直是朋友和技术合作伙伴,我们(在 TMS)帮了你很多,你帮了我们很多。正如您所说,我们为您提供了帮助:Korp 有技术需求,我们开发和改进了解决方案以赋予 ERP 灵活性,我相信您已经减少了很多支持。但是有件事我从来没有在公开场合说过,我还是第一次在这里说:如果你(正在关注我们的人)使用TMS Aurelius(来自 TMS Software 的 Delphi ORM 框架),请感谢与我交谈的这个人: 他不仅是 TMS Aurelius 的第一个客户,更是推动 TMS Aurelius 发展的原动力。我们在 2021 年,还有很多人仍然不知道为什么或如何在他们的软件中使用 ORM。Alexandre 在 2010 年已经有了这样的愿景,即 ORM 将帮助他和他的公司。他联系了我们,我们合作开发了 TMS Aurelius,因为 Delphi 的现有 ORM 库不能完全为他服务。
Alexandre 是开发 TMS Aurelius 的驱动力。
瓦格纳领地
20:43 – 可扩展性和技术
AH:我们寻求的所有这些发展,一直在考虑可扩展性。总是想要扩展、改进代码,ERP 总是变得非常非常复杂。因此,所有这些技术都使系统变得灵活和可扩展。该系统是巨大的。今天,我们不仅仅使用 Delphi。
WL:是的,让我们谈谈 Viasoft Korp 使用的其他技术。该软件作为客户端/服务器 Windows 桌面应用程序启动。当然,今天您拥有许多其他服务、Web 应用程序、移动应用程序、集成、微服务。今天还有哪些其他技术也在帮助 Korpem>
AH:以web开发为例,我们选择后端使用C#,前端使用Angular。我们还在一些微服务中使用了 Golang。每种语言都有其目的。
WL:而且你也已经考虑到了公司目前的需求。例如,有人可能会问:“你为什么不使用TMS Web Core(TMS 软件产品,用 Delphi 创建 Web 应用程序)仅仅是因为当时还没有 TMS Web Core!当它首次发布时,Korp 已经将他的所有 Web 应用程序完全用 Angular 开发。
啊:没错。我们还想在 Linux、Docker 上运行,需要考虑很多事情。
WL:是的,所有这些工具也是如此。当我去那里时,我从 Korp 那里学到了很多东西。不仅是关于编程,还有 DevOps。他们总是在与 Kubernetes、Docker、Consul、Traefik 打交道……
AH:关于测试,我们开发了一个名为 Flow 的内部框架,这对我们来说是一个很大的变化。使用这样的工具,我们编写BDD代码并执行所有操作。目前,我们在三个不同的服务器中拥有大约十二个虚拟机,24/7 全天候运行测试。
我们还使用 C#、Angular、Golang。每种编程语言都有其目的。
亚历山大·亨岑
23:44 – 测试和软件质量
WL:您提到了 TMS Software 如何为 ORM(TMS Aurelius)、多层 REST(TMS XData)等做出贡献。但谈到测试:我记得多年前,您(以及我当时认识的每个人)遭受测试并保持软件质量。你让人们做手动测试、UI 测试等。我相信随着时间的推移,这些技术改进在这方面有很大帮助。
AH:是的,ERP 是一个非常复杂的软件。如果没有这些新的开发范式,这是不可能的。今天,我们的服务器使用持续集成,每天 24 小时运行测试。我们使用 Jenkins,它从 Bitbucket(用于源代码版本控制的 Git 存储库)中检索更改,立即运行所有测试场景,全部 100% 自动化。
WL:那我相信TMS对你有一点帮助,不是吗em>
AH:当然,我们 Delphi 制造的软件的所有架构都是围绕 TMS 业务构建的。
我们用 Delphi 编写的软件的所有架构都是围绕TMS Business构建的。
亚历山大·亨岑
27:40 – 客户规模
WL:您提到 XData 服务正在处理大量请求,请告诉我们更多关于您的客户规模的信息。
AH:有最多样化的尺寸。公司范围从 20 到500 个用户同时访问系统。这些是拥有大量物流处理和发行财政票据(巴西合法发票)的公司,它们是复杂而繁重的系统。通过系统传输的信息量是巨大的。
28:50 – 关于最近的 Delphi 版本
WL:说到德尔福。您使用的是 Berlin (10.1),这种演变如何em>
AH:我们使用 Delphi Berlin (10.1) 并尝试更新到新版本。(问题是)我们的应用程序是这样工作的:它不仅仅是一个可执行文件。有主要的可执行文件,系统中的每个模块都是一个运行时包,一个 BPL,(它们是模块)随着用户继续使用软件而动态加载。所以它是一个巨大的包结构,我们总是在几个方面受到它(运行时包)的影响:检测内存泄漏更复杂,由于包依赖关系重新编译包很麻烦,等等。
WL: Windows 更新甚至出现了一个与 Delphi 无关的问题,这对您来说是一个大问题,对吧em>
AH:是的,有一个 Windows 更新只是把一切都搞砸了(亚历山大指的是 Marco Cantu 的博客中 告的这个问题)。刚刚启动应用程序花了将近五分钟。我们甚至恢复到以前的 Windows 版本并阻止公司所有机器上的 Windows 更新。(…) 然后,我们迁移到了 Delphi 10.4 Sydney,第一个版本 (10.4.0)。一开始我们的工具还是有问题,LSP(Language Server Protocol,Delphi 新的代码补全系统)本身也有一些问题。现在有了(更新到)10.4.2,我们最近升级了它,我们感受到了不同 –它更加稳定,IDE 编译速度更快,我从开发人员那里收到的反馈非常积极.
自 XE2 以来,我见过的最稳定的版本是悉尼 10.4.2。
亚历山大·亨岑
31:39 – 升级到 Delphi 10.4.2 悉尼
WL:那么,与 10.4 相比,这个 10.4.2 版本要好得多em>
AH:是的,稳定得多,甚至不接近。如果我们考虑这些年来我们使用的所有 Delphi 版本,颈椎枕自 Delphi XE2 以来,我见过的最稳定的版本就是 10.4.2。
WL:我记得你遇到的一个大问题是编译时间。运行测试的时间,例如,花了多长时间em>
AH:花了58 分钟,差不多一个小时。只需升级到 10.4.2,它就下降到大约 28 分钟。然后我们对包设置进行了一些更改,它下降到12 到 14 分钟,具体取决于机器。运行时包功能现在也更加稳定,这是一个很大的不同。
编译时间为 58 分钟,下降到 12 分钟。
亚历山大·亨岑
38:10 – 关闭和联系
WL: Alexandre,非常感谢您接受本次采访。
AH:谢谢,任何想联系我的人都可以联系我,只需访问(我的个人资料)LinkedIn,搜索 Alexandre Henzen(此处链接),我们就可以交流想法,我总是喜欢讨论新技术。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!