我们最近开始支持PowerBuilder 10.5应用程序,但问题还是出现了我们是否应该考虑替代方案或使该应用程序在PB 10.5中运行。这是一个经典的PB应用程序;一个管理软件,建立在Oracle DB之上。
目前,该应用程序运行良好,但是我们重新考虑的原因有两个:
我对PB不太熟悉,但是Appeon现在支持它(仅最新版本)。最新版本现在是2017 R3,即将推出2019版本。
我想知道专业人士要尝试将当前的10.5版本更新为最新版本是什么。 是否值得进行更新?还是坚持使用10.5版本的专业人士的利弊是什么?
还是我们应该考虑采用更新的技术,因为如今很少有Powerbuilder出现?如果是这样,您会建议采用什么技术?
我正在寻找动机,而不是仅仅differences between the older and newer个PB版本,来升级/迁移/什么都不做。
谢谢。
答案 0 :(得分:0)
因此,没有明确的答案,但是我们可以根据需要在非技术要点上提出一些想法。
保持10.5 :对于“如果它没有损坏,请不要修复它”有很多话要说。如果它起作用并且您对它的功能感到满意,请不要移动它。
但是,由于您已经说过计划将其向前发展,因此您可能要考虑10.5不支持当前的操作系统(一年之内,MS当前支持的Windows系统将仅是Win8,而Win10),那只是10.5推出时的想象力。您的10.5应用程序现在可能可以在Win10上运行,但这仅是由于MS在应用程序向后兼容性方面的工作,并且您还没有利用PB的某个区域(后来的Windows版本中存在问题)。如果您需要添加功能,则使用至少表明它可以在您的操作系统上运行的版本可能会有所帮助。
数据库的并行参数,唯一的例外是,如果您的应用程序使用SQL Anywhere,则该数据库以前在多个PB软件包中免费提供。现在,您必须单独购买。
关于尝试使用旧版本的任何东西要记住的一件事是支持。如果您陷入困境,供应商基本上将不会与您交谈,并且同行社区一直在萎缩,因此您与其他开发人员进行对话的机会较小。
升级:通常是一项较小的工作。我看到的最常见的例外情况是:不推荐使用的功能以及依赖于版本之间不一致的行为的编码(某些行为应保持一致,但不是全部)。与您的PB专家一起进行带有试用版的迁移测试,以解决该问题。
升级时要记住的一件事是许可模式已更改。 PB曾经有一个永久的模型(购买一次,永远使用),但是现在它是一种订阅模型。这是否对您有所改善,完全取决于您自己。
升级是否值得,在我看来通常可以归结为
“迁移” :我将“迁移”用引号引起来,因为我不相信有一种技术可以让您从代码转换的意义上“迁移”。 (我会让您读一本书的old tirades中有关要从PB“迁移”的信息。)在这里我要谈论的是采用新技术的重写。将业务规则从旧的PB系统中删除,以及重新设计/重写另一种技术都是一项巨大的努力。
最近最受支持的论点是获取并保留PowerBuilder的才能。要让拥有PB的人束手无策,即使要在面试桌旁陪伴PB的人,判断合法人才也是一项挑战。 (如果您想与PB一起向前发展,请利用退休的家伙。)培训PB的人也不是一件容易的事。有人曾经问过我,而不是教育家,是否可以在一周内提出课程并培训他的团队。我笑了。由当时的卖方Powersoft的专业教育人员设计并提供了为期两周的课程后,我回到家,编写了令人难以置信的令人尴尬的代码。我还需要大量的时间练习,并获得同龄人的反馈。如果您可以找人或培训某人,如果他们每年只做PB工作几周,那么这些PB的“肌肉”就会萎缩。不管PB与其他技术争论如何,如果您无法让PB人才来维护它,PB就是死胡同。
恐怕我不是一个建议替代技术的人。过去,就富客户端应用程序而言,选择Microsoft不会出错,但是从那时起,MS便向开发社区派遣了一些疯狂的追赶者,但最终以不推荐使用的技术告终。我不想成为展望未来的家伙。
祝你好运。
答案 1 :(得分:0)
Terry的回答相当不错,但是关于PowerBuilder 2019的新功能,迁移问题未得到解决。
PowerBuilder 2019的一个主要功能是C#DataStore(与.NET Core兼容)和DataWindow对象迁移实用程序。 C#DataStore具有与PowerScript DataStore相同的API和事务处理机制。它在Appeon网站上有详细记录:https://doc.appeon.com/snapobjects/api_references/Appeon.Data.PowerBuilder/DataStore/IDataStore/IDataStore.html
如果您决定采用C#,PowerBuilder 2019的此功能使迁移工作成为PowerScript非可视代码的“端口”,而不是重写(出于上述原因)。
这是示例PowerScript代码:
public function datastore of_retrieve (date ad_start, date ad_end, decimal adec_amt);
Datastore lds
lds = Create Datastore
lds.dataobject = "d_order_customer"
lds.SetTransObject(SQLCA)
lds.Retrieve(ad_start, ad_end, adec_amt)
Return lds
end function
以下是使用C#数据存储库的C#示例:
public IDataStore GetOrderCustomerInfo(DateTime startDate, DateTime endDate, decimal amount)
{
IDataStore dataStore = new DataStore("d_order_customer", _context);
dataStore.Retrieve(startDate, endDate, amount);
return dataStore;
}
答案 2 :(得分:0)
我建议迁移。 您会发现几家提供迁移到领先平台java和.net的公司。 就我的用户界面而言,当前唯一的选择是网络。使用其他技术没有多大意义。 如果您的公司使用大量的MS堆栈,例如MS OS,SQL Server。 Exchange,Sharepoint等,我建议迁移到C#,否则迁移到Java更有意义