在delphi中编写Client-Server应用程序

时间:2011-03-08 11:29:05

标签: delphi client-server delphi-2010

在delphi下编写客户端 - 服务器应用程序的最佳方法是什么?我知道有一种DataSnap技术,但它不是专业版。您有任何可以分享的经验吗?

7 个答案:

答案 0 :(得分:6)

这是一个相当广泛的问题,因为它可能取决于您的数据库决策。

如果您正在寻找您拥有的客户端服务器,DataSnap确实允许使用N-Tier解决方案 专业版中您需要的大部分内容,具体取决于数据库选择。

对于中小企业服务器:

客户端服务器体系结构是客户端直接与服务器通信的时间。

有几个框架可用,它们都遵循相同的模式。

数据库连接 - >查询 - > (可选提供商 - > TClientDataset) - > TDataSource - >视觉控制

<强> DBX

  • TSqlConnection - 连接数据库
  • TSqlQuery - 针对DB生成单向数据集的查询
  • TSqlStoredProc - 针对DB执行商店程序

<强> ADO

  • TAdoConnection - 连接数据库
  • TAdoQuery - 查询DB生成双向数据集

通用组件

  • TClientDataSet - 内存数据集中的双向
  • TDatasetProvider - 获取其他数据集并将数据绑定到TClientDataset
  • TDataSource - 将数据集绑定到数据感知的可视化控件

根据数据库选择,还有其他几种选择。

但是,您似乎在询问N层(中层)类型解决方案

对于N-Tier

N-Tier架构是客户端与中间层通信,然后与服务器通信。它被称为N-Tier,因为您可以选择使用多个中间层或应用程序服务器。

商业选择(需要额外支付的额外费用)

我个人不知道任何免费或开源选项,虽然我怀疑存在一些。

答案 1 :(得分:3)

两个选项:

  • DIY(自己动手)。使用Indy和/或ICS互联网组件自己编写通信层和协议。很多艰苦的工作需要大量的测试才能正确。
  • 使用现成的框架,例如kbmMW:http://components4developers.com/或RemObjects:http://www.remobjects.com/两者都不是免费的,但是非常值得你支付的钱,即使只用你开发的开发时间/成本来衡量。

答案 2 :(得分:2)

你可以使用 WST是一个免费的开源工具包,用于Web服务的消费和创建,支持SOAP和XmlRPC以及JsonRPC(JsonRPC支持仅适用于FPC)。它与Delphi兼容。更好地从svn检查,因为0.5版本实际上是过时的。

答案 3 :(得分:1)

使用Delphi Professional,可以编写简单的(没有WS- *标准,没有Soap 1.2服务器)SOAP客户端和服务器应用程序。

在许多情况下,Soap在跨平台/跨语言集成,标准化,按合同设计和成熟的实施指南,最佳实践和模式方面提供了优势。

对于Soap,有很多(和免费的)工具,如SoapUI和IDE编辑器,用于Web服务描述语言(WSDL)文档,如NetBeans。

答案 4 :(得分:1)

查看我们的Open Source Client/Server ORM

它是多层兼容的,您可以在客户端和服务器级别使用ORM。 ORM随处可用,JSON是为客户端/服务器传输选择的格式。

您可以将应用程序作为本地应用程序启动,然后只需更改用于访问数据的类类型,它就会成为通过命名管道,HTTP / 1.1或GDI消息进行通信的客户端/服务器应用程序。

它被设计为在服务器端使用SQLite3作为一个小而有效的数据库引擎,但您可以在没有SQlite3的情况下使用ORM。如果您愿意,可以使用纯Delphi内存引擎。

此框架尝试实施N-Tier architecture from the bottom up。 即将推出的1.13版本将具有强大的filtering and validation mechanism,非常适合N-Tier架构。有一些用户界面单元,具有完整的报告(和pdf生成),能够使用数据的ORM布局从代码创建大部分用户界面。

它基于RESTful范例,通过JSON从客户端访问数据。如果RESTful方法不够,还有一种简单的implementing Client/Server Services方法,就像DataSnap一样。

它已准备好Unicode(在所有内部级别使用UTF-8),适用于IDE的每个版本,从Delphi 6到XE(甚至是Starter版本)。

答案 5 :(得分:1)

几个月前,我停止使用这种架构(n层,2层)实现基于Delphis和特定数据库技术的新项目。我相信这些架构不是未来的教授。我现在使用的建筑是一个双码头。服务器是普通的HTTP服务器。它作为app server *工作,并可选择提供Web客户端。在德尔福开发客户更难,但值得。由于特定工具不能作为数据库连接提供的工具,我使用indy从HTTP服务器发送和接收数据。我做了一个GET请求来获取数据,然后解析它以在GUI上显示它。然后POST请求更新或插入新数据。 HTTP服务器处理所有业务逻辑: - )

除了未来的教授之外,这种架构更便宜且与平台无关。如果您对其进行分析,这与大多数移动应用程序使用的架构相同。因此,如果您计划将来编写移动客户端,请考虑使用脚本语言(Python,PHP,Ruby等)开发应用服务器。

这是我的建议。不要忘记:伟大的事情需要很大的承诺!

  • App Server是一种服务,它为您的应用程序(瘦客户端)提供获取和发送数据的接口。它还控制着业务逻辑。您的应用程序不关心DB或控制记录关系和数据约束。这一切都是由应用服务器透明完成的。

答案 6 :(得分:0)

对于通用客户端 - 服务器通信,您可以使用我们的轻量级MsgConnect产品。这是一个跨平台的MOM(面向消息的中间件)。