Delphi 和 TMS 控件在 ERP 软件开发领域的 20 年:访谈
![](/assets/blank.gif)
我们最近在我们的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 Korp?
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 的成长?什么是关键时刻?
AH:TMS Scripter(用于在运行时编辑和执行脚本的 TMS 软件产品)对我们来说是一个很大的不同。(...) ERP 必须是可定制的,这是典型的,因此TMS Scripter 允许这种灵活性,(它的东西)在 2001 年、2002 年,你没有看到很多这样的事情。(...) 客户自己可以创建表单,甚至可以在系统内创建完整的模块。那帮助我们成长。
使用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 应用程序、移动应用程序、集成、微服务。今天还有哪些其他技术也在帮助 Korp?
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对你有一点帮助,不是吗?
AH:当然,我们 Delphi 制造的软件的所有架构都是围绕 TMS 业务构建的。
我们用 Delphi 编写的软件的所有架构都是围绕TMS Business构建的。
亚历山大·亨岑
27:40 – 客户规模
WL:您提到 XData 服务正在处理大量请求,请告诉我们更多关于您的客户规模的信息。
AH:有最多样化的尺寸。公司范围从 20 到500 个用户同时访问系统。这些是拥有大量物流处理和发行财政票据(巴西合法发票)的公司,它们是复杂而繁重的系统。通过系统传输的信息量是巨大的。
28:50 – 关于最近的 Delphi 版本
WL:说到德尔福。您使用的是 Berlin (10.1),这种演变如何?
AH:我们使用 Delphi Berlin (10.1) 并尝试更新到新版本。(问题是)我们的应用程序是这样工作的:它不仅仅是一个可执行文件。有主要的可执行文件,系统中的每个模块都是一个运行时包,一个 BPL,(它们是模块)随着用户继续使用软件而动态加载。所以它是一个巨大的包结构,我们总是在几个方面受到它(运行时包)的影响:检测内存泄漏更复杂,由于包依赖关系重新编译包很麻烦,等等。
WL: Windows 更新甚至出现了一个与 Delphi 无关的问题,这对您来说是一个大问题,对吧?
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 版本要好得多?
AH:是的,稳定得多,甚至不接近。如果我们考虑这些年来我们使用的所有 Delphi 版本,颈椎枕自 Delphi XE2 以来,我见过的最稳定的版本就是 10.4.2。
WL:我记得你遇到的一个大问题是编译时间。运行测试的时间,例如,花了多长时间?
AH:花了58 分钟,差不多一个小时。只需升级到 10.4.2,它就下降到大约 28 分钟。然后我们对包设置进行了一些更改,它下降到12 到 14 分钟,具体取决于机器。运行时包功能现在也更加稳定,这是一个很大的不同。
编译时间为 58 分钟,下降到 12 分钟。
亚历山大·亨岑
38:10 – 关闭和联系
WL: Alexandre,非常感谢您接受本次采访。
AH:谢谢,任何想联系我的人都可以联系我,只需访问(我的个人资料)LinkedIn,搜索 Alexandre Henzen(此处链接),我们就可以交流想法,我总是喜欢讨论新技术。
Delphi 和 TMS 控件在 ERP 软件开发领域的 20 年:访谈相关推荐
- Delphi XE2 新控件 布局Panel TGridPanel TFlowPanel
Delphi XE2 新控件 Firemonkey 布局Panel Windows平台VCl TGridPanel TFlowPanel FMX 跨平台 TLayout TGridLayout TFl ...
- Delphi常用通讯控件的应用札记
Delphi常用通讯控件的应用札记 1.SPComm串口控件 2.TClientSocket
- java ocx,Eclipse使用ActiveX控件(OCX)开发Java程序
本范例以使用来电显示ActiveX控件JDComport.ocx为例,说明怎样在Java中集成ActiveX控件. 1.开发环境:Eclipse(Java主流开发工具) (1)需要用到SWT.Visu ...
- atitit. applet 浏览器插件 控件 的环境,开发,提示总结o9o
atitit. applet 浏览器插件 控件 的环境,开发,提示总结o9o 1. 建立applet:: 1 2. Applet 码 1 3. Applet (awt)跟japplet (swing) ...
- java jp2launcher.exe_atitit. applet 浏览器插件 控件 的环境,开发,提示总结o9o
atitit. applet 浏览器插件 控件 的环境,开发,提示总结o9o 1. 建立applet:: myclipse>>new>>applet,设置applet属性,设置 ...
- VisionPro控件的使用 C# 开发篇
VisionPro 常用控件的说明 工具设置窗体 CogPMAlignEditV2 [ 模版匹配设置窗体控件 ] CogPMAlignEditV2.Subject : 工具关联对象 如:CogPM ...
- 深圳ERP软件开发 轻松完成复杂数据管理
深圳ERP软件开发轻松完成复杂数据管理.ERP将Excel.Access.Foxpro.VB以及易表的优势融合在一起,无论是数据录入.查询.统计,还是报表生成,都前所未有的强大和易用,普通用户无需编写 ...
- 低代码平台在ERP软件开发中的作用
很多人认为低代码开发平台的出现颠覆了传统的软件开发模式,对软件开发行业造成冲击,其实低代码开发平台的出现只是提高了软件开发的效率,并不是要颠覆软件开发的模式.低代码平台在ERP软件开发中的作用还是比较 ...
- python是一个免费开源的软件吗_Python是开源的吗?使用Python的软件开发领域
Python是开源的吗?使用Python的软件开发领域.我们要清除的是Python开放源代码,因此Python是开放源代码,这意味着它是免费的,并且python开放源代码不是不同的编程语言,每个人都可 ...
最新文章
- java int byte数组_Java 中int与byte数组转换详解
- VTK:可视化之Lorenz
- 你必须掌握足够的知识来明确如何拥有自己的观点。同时,也要培养把自己的观点付诸现实的能力。...
- curl 请求日志_HTTP入门(一):在Bash中curl查看请求与响应
- struts中获取多选按钮html:checkbox的值
- 【解决方案】: hyper-v 导入虚拟机报这个错误 32784
- Spring配置redis(自定义方法)
- 【细节实现题】LeetCode 56. Merge Intervals
- 管理软raid磁盘队列
- 反编译工具Depends---dll和exe反编译工具
- 阴阳师服务器维护结界卡暂停吗,阴阳师3月17日更新维护公告 全部更新内容汇总...
- markdown语法的使用
- 趣味三大彩蛋命令安装shell脚本
- docker版mongodb数据同步到elasticsearch
- orb slam [RGBD-1] process has died解决
- 大二上,计组原理笔记(2)2.2 机器数的定浮点表示
- HTML+CSS网页制作——99银号
- CloseHandle()、TerminateThread()、ExitThread()的区别
- u8 系统服务器配置,用友u8服务器配置推荐
- git cherry-pick 将另一个分支的某个提交拉取到当前分支(也叫做遴选),在命令窗口和sourcetree中的使用
热门文章
- 数字图像处理与Python实现-图像降噪-指数型高通滤波
- 设计模式之模板方法模式详解
- 简单几步搞定Mac电脑快速返回桌面的操作!
- 《性能之巅—洞悉系统、企业与云计算》读书笔记---第二章
- linux shell编程从入门到精通pdf_SHELL脚本编程入门
- hp服务器重置bmc,服务器BMC(带外)
- 2022-07-12 读书笔记:《写给所有人的极简统计学》
- 微信小程序 | canvas为你的天气预报添加雨雪效果
- Temu拼多多跨境店铺如何快速上货?
- java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource解决方法