我们正在重写以前用Delphi编写的企业遗留应用程序套件。该套件包括高级用户使用的一些FAT客户端,单个租户关系数据库,所有员工使用的Windows服务Web应用程序以及按需或按计划运行的一堆.EXE工具。该套件始终安装在prepreise(在客户站点),并且主要限于其LAN。
到2018年,我们必须将套件重写为Web界面应用程序。但不仅如此,我们还必须对其进行设计,以便在现场轻松安装,由我们托管或以多租户方式提供SaaS。每次安装我们都有自己的HW现场。
我们已经开始将Web应用程序分离到引擎,web api(.NET Web API 2)和前端SPA(Angular 2)。我们将使用MQTT和Azure Iot Hub与我们的onpremise HW进行通信。
我们正在努力避免为新的Web应用程序避免使用单个代码库,这个代码库现在将取代多个遗留组件,同时又不希望最终得到我们之前的所有内容:一系列应用程序&具有不同用途,兼容性,写入技术等的工具
具体来说,我们有几个设计疑点:
我们是否将应用程序分解为几个独立的Web应用程序(模块)并基于我们自己的SSO服务器来提供授权和身份验证?我们确实希望为用户提供无缝体验,尤其是能够访问几乎所有模块的高级用户。因此,一个单一的门户网站#34;是必须的。
我们是使用多租户数据库还是使用Azure弹性数据库池,并且在SaaS环境中每个租户拥有一个数据库?
分发:套件安装相当复杂,并且基于.NET框架(而不是.NET内核),MS许可根本不提供提供设备的好方法。安装人员是如此1990年。对于onpremise安装,Docker并不是一个真正的选择。
答案 0 :(得分:1)
永远不要从头开始重写大型应用程序。这样做几乎总是doomed to failure。有几种工具可以让你在Delphi之上编写像this这样的宁静服务。
我会选择最常用的模块,在这些服务之上编写Web前端,降低安装成本。然后,一旦你有一个临界质量的前端,努力重写后端,以减轻您的安装成本(并引入多租户)。
逐步实现此功能不仅可以为您提供现有应用程序基础架构的优势,还可以解决重大改写带来的最大问题,即“我们在启动之前需要多少”?这个问题通常会使软件组织瘫痪,因为管理层通常声称新应用程序必须完成旧应用程序所做的一切,以及一些其他功能。问题是,旧的应用程序写了10多年,由于某种原因,他们不愿意等待10年才能建立新的应用程序。
如果您要进行重大改写,请确保在开始编写代码之前花费大量时间来确定范围。