关于转向多层 Delphi 架构的建议

11

我们有一个相对较大的应用程序,与Firebird紧密结合(存储过程、视图等)。现在我们收到了很多支持其他数据库的请求,我们也希望将许多功能从客户端移动到服务器端。

现在似乎是转向3(4)层架构的好时机。我们已经查看了DataSnap 2009和RemObjects SDK/DataAbstract。它们似乎都能胜任工作,但有没有什么优缺点需要注意?您能推荐其他框架吗?

谢谢, 保罗


1
Delphi正在积极开发中。 - Harriv
3
约翰,为什么你没有回答问题而是发布了一些胡言乱语?Delphi正在积极开发中,几个月前刚刚发布了新版本,并有未来版本的路线图。为什么要发布不真实的FUD呢? - Ken White
3
约翰,我认为你对Delphi不是很了解 :-) - Mohammed Nasman
1
我们目前的应用程序是用Delphi编写的。将其转换为多层系统比将现有代码翻译成另一种语言要容易得多。此外,我们不想转移到另一种语言。Delphi非常活跃,并且完全能够满足我们的需求。 - norgepaul
5个回答

4

这是一段关于KBM中间件的不错视频 http://video.codegear.com/CodeRage2007Archives/Day3/KimMadsen.zip - Charles Faiga
那个视频的声音和画质非常糟糕。我喜欢他在讨论一层、二层和三层优缺点时的方式,只有三层没有缺点 :) - kjack

4
将您的应用程序改为多层架构并使用新框架(如RM、DS、kbmMW或其他),将会对我们的应用程序架构进行大量更改,我建议在未来采用此方法,但您可以通过其他产品实现对多个数据库的支持,例如:
- DevArt的UniDac(具有直接连接的最佳数据库组件)。 - RemObjects的AnyDac(来自同一公司)。 - SqlDirect(支持9个主要数据库和ODBC)。 - ZeosDB(开源)。
使用上述组件之一,将为您提供对大多数主要数据库的支持,而且不需要做很多更改,在某些情况下,您只需用新组件替换旧的数据库组件,并可能更改一些属性即可。
然而,改变为多层架构不仅使您支持更多数据库,还将业务逻辑与表示层分离,因此您可以为应用程序拥有更多的表示层,如Web界面或智能设备。
但在多层架构中最重要的是,您将拥有一个可扩展的系统,可以处理超出您正在使用的数据库所能处理的连接数量,除其他好处外,还可以使用其他语言编写客户端应用程序。

3
在迁移到多层应用程序的过程中,您可以考虑在层之间使用一种传输协议,它是语言/技术无关的(比如webservices,我认为remobjects支持这种协议)。
这样做可以使将来重新实现某个层更加简单(例如,如果您以后需要在浏览器/java/silverlight中制作另一个版本的客户端应用程序)。

1

对于多层架构,我建议您也可以考虑使用面向消息的中间件。

使用面向消息的中间件,可以使用点对点或发布/订阅通信模型实现跨语言和跨平台的应用程序集成。消息系统松散耦合、异步和可靠。例如,它们是Java(tm)应用程序服务器(如JBoss)的核心组件。

对于Firebird,我最近撰写了一篇关于替换Firebird数据库事件、它们的限制以及用基于消息代理的解决方案(这些解决方案可作为开源软件使用)替换它们的博客文章:

(免责声明:我是Delphi和Free Pascal客户端库的开发人员,用于开源消息代理)。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接