将 Delphi/Oracle 应用程序从 2 层更改为 3 层

Posted

技术标签:

【中文标题】将 Delphi/Oracle 应用程序从 2 层更改为 3 层【英文标题】:Changing a Delphi/Oracle application from 2-tier to 3-tier 【发布时间】:2011-03-29 18:55:28 【问题描述】:

在我的公司,他们终于(大约是时候......)考虑将我们最畅销的应用程序之一从 2 层架构转换为 3 层架构,无论是在逻辑层(表示层、业务层和数据层)还是物理层面。可能我们会选择 Delphi-Delphi-Oracle 或 Delphi-Java-Oracle 方法来进行更改。

这是一个相对较旧的大型应用程序,在我开始在那里工作之前已经创建和修改了很长时间。除非必须更改某些内容,否则通常不会考虑重构。此外,业务逻辑存在于两个实际层中......叹息。

物理变化并没有给我带来太多困扰,但逻辑变化将是一种穿越地狱的通道。为了尽可能地平滑它,我想调查一下哪些 Delphi 组件更适合 3 层模型。

¿您会考虑使用哪些替代方案?

【问题讨论】:

这个计划的驱动因素是什么?例如,是否支持其他数据库或其他前端(移动、Web、.net)或云部署?这将给出一个更清晰的画面,例如在 Delphi 和/或 Java 之间的中间层中进行选择。 我问的基本一样:***.com/questions/3431149/… @mjustin,我们的客户有两个主要原因:如果需要,他们希望能够部署到其他数据库,并且他们还希望能够快速扩展,因为他们每年增长 2 位数.谢谢你的评论:-) 【参考方案1】:

您是否考虑过 DataSnap XE?

【讨论】:

【参考方案2】:

我们最近使用 RemObjects DataAbstract 将我们的 2 层 Delphi 应用程序转换为 3 层。虽然最初的学习曲线相当陡峭,但我们对结果非常满意。

DataAbstract 让您忘记数据库和网络连接的基本细节,专注于业务逻辑。它允许您创建一个抽象服务层,为您的服务器客户端提供一个很好的 API。使用这个 API,我们使用 Delphi 和 Delphi Prism ASP.NET 客户端连接到服务器。

【讨论】:

在学习如何使用 RemObjects DataAbstract 时,您发现的最困难的问题/问题是什么? 我认为最难的部分是了解 DA 框架的运行方式。我会说文档不够出色,但它们确实快速且信息丰富地回答了大多数问题。 DA 允许您创建一个几乎无需编码的 3 层系统。只需创建一个模式,就是这样。不幸的是,我们做事的方式阻止了我们这样做,但我们仍然发现架构足够灵活,可以让我们快速且相当容易地完成我们需要的事情。回到 2 层系统的想法现在让我充满恐惧......祝你好运:)【参考方案3】:

另一个不错的 n 层框架库是来自 components4developers 的 kbmMW:http://components4developers.com/

【讨论】:

【参考方案4】:

我发现 RemObjects 非常有用。他们还在其上构建了 DataAbstract,但我没有使用它。

【讨论】:

以上是关于将 Delphi/Oracle 应用程序从 2 层更改为 3 层的主要内容,如果未能解决你的问题,请参考以下文章

Oracle如何创建存储过程和如何调用存储过程

如何将错误从服务层传递到 vanilla Java Servlet? [复制]

从数据访问层拉出业务逻辑

将用户凭据从HttpRequestContext注入服务层

Delphi使用TADOQuery的RowsAffected属性时需要注意的一个点

如何将对象类型从业务层传递到数据层