当前位置:  开发笔记 > 编程语言 > 正文

Delphi的数据库同步解决方案

如何解决《Delphi的数据库同步解决方案》经验,为你挑选了2个好方法。

我正在寻找一些起点,将Win32 Delphi应用程序的数据与Web应用程序的远程数据库集成在一起.

该项目打算解决的问题:

1)桌面在vpns上表现不佳.远程办公室的用户可以使用Web应用程序.

2)一些公司更喜欢网络应用程序到桌面应用程序

3)移动设备可以将Web应用程序作为前端.

我发现的问题:

Web应用程序将在基于Unix的系统上运行,可能是Linux,而桌面应用程序使用NexusDB,而Web应用程序可能是Postgres.不同的平台和数据库.

使用Delphi,似乎Microsoft Sync Framework不适用于此项目.

我的第一个想法是为Web应用程序提供标准REST API,让桌面应用程序点击API,就像它是一个客户端,每隔n分钟从本地数据库服务器.我已经看到了很多问题!



1> MDV2000..:

理查德,我之前一直沿着这条路走下去,我只能说它不做!我曾经在一家公司工作,这家公司在DBISAM上运行一个大型的Delphi桌面应用程序(超过250种表格)(非常类似于你所拥有的).客户需要一个"Web"界面,以便人们可以远程工作,然后让Web应用程序和桌面应用程序同步更改.好吧,几年后,应用程序非常糟糕 - 数据问题和用户工作流程非常糟糕,因为在两个不同的地方管理相同的数据是一场噩梦.

我建议将数据库移动到类似MySQL(Delphi和Web Client都能命中)的地方,并在两个接口之间使用一个数据库.Delphi客户端在VPN上工作不正常的原因是,NexusDB和DBISAM等桌面数据库在运行查询时会复制管道上的大量数据(撤回所有数据,然后过滤/下载等) - 这不是真的客户端/服务器,如SQL Server或MySQL,其中所有繁重的工作都在服务器上进行,只有结果返回.当然,将Delphi应用程序移动到像MySQL这样的数据库可以将速度问题全部提升到一起 - 但是你没有解决#2和#3问题.

另一个选择是将整个应用程序移动到Web,并且只有一个应用程序需要支持.当然,像Delphi这样的工具中的优秀UI开发人员总能为Web应用程序创建出色的用户界面 - 尤其是在数据输入繁重的应用程序中 - 因此可能不适合您.

我会非常厌倦"同步数据".

我的2美分价值.麦克风



2> Arnaud Bouch..:

如果您使用基于RESTful的ORM,您可以同时使用AJAX和Client Delphi应用程序调用相同的Delphi服务器,使用JSON作为传输格式,使用HTTP/1.1作为远程连接层,使用Delphi和Javascript对象来访问数据.

例如,如果您在浏览器中键入http:// localhost:8080/root/SampleRecord,您将收到如下内容:

[{"ID":1},{"ID":2},{"ID":3},{"ID":4}]

如果你要求http:// localhost:8080/root/SampleRecord/1,你会得到:

{"ID":1,"Time":"2010-02-08T11:07:09","Name":"AB","Question":"To be or not to be"}

如果您对JavaScript有所了解,任何AJAX应用程序都可以使用它.

并且任何客户端HTTP/1.1应用程序中都可以使用相同的HTTP/1.1 RESTful请求(GET/POST/PUT/DELETE/LOCK/UNLOCK ...).该框架使用非常快的内核模式http.sys(比Windows上的任何其他HTTP服务器更快)和客户端的快速HTTP API实现服务器.您甚至可以使用HTTPS来处理安全连接.

恕我直言,使用这样的ORM比仅使用数据库连接更好,因为:

它将更严格地遵循n-tier原则:业务规则在Delphi服务器中编写ONCE,并且您只使用业务对象的服务和RESTful操作;

它将使用HTTP/1.1进行连接,这种连接比任何直接数据库连接都更快,更标准,并且可以通过HTTPS强大保护;

基于HTTP的JSON和RESTful是AJAX应用程序的事实标准(即使Microsoft将它用于WCF);

数据将使用JSON传输,这是一个非常好的多个前端格式;

即使在非连接模式下,无状态方法也非常强大;

使用数据库的本地小型复制(我们鼓励SQLite)允许您以非连接模式(对于Delphi客户端或HTML 5客户端)进行客户端访问.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有