我正在寻找一些起点,将Win32 Delphi应用程序的数据与Web应用程序的远程数据库集成。
该项目打算解决的问题:
1)桌面在vpns上表现不佳。远程办公室的用户可以使用网络应用程序。
2)有些公司更喜欢将网络应用添加到桌面应用
3)移动设备可能会将Web应用程序作为前端。
我发现的问题:
Web应用程序将在基于Unix的系统上运行,可能是Linux,而桌面应用程序使用NexusDB,而Web应用程序可能是Postgres。不同的平台和数据库。
使用Delphi,似乎Microsoft Sync Framework不适用于此项目。
我的第一个想法是为Web应用程序提供标准REST API,并让桌面应用程序点击API,就好像它是一个客户端,每隔n分钟从本地数据库服务器。我已经看到了很多问题!
答案 0 :(得分:6)
我建议将数据库移动到像MySQL这样的东西(Delphi和Web Client都可以),并在两个接口之间使用一个数据库。 Delphi客户端在VPN上工作不正常的原因是,NexusDB和DBISAM等桌面数据库在运行查询时会复制管道上的大量数据(撤回所有数据,然后过滤/下载等) - 这不是真的客户端/服务器,如SQL Server或MySQL,其中所有繁重的工作都在服务器上进行,只有结果返回。当然,将Delphi应用程序移动到像MySQL一样的数据库可以将速度问题全部提升到一起 - 但是你没有用它来解决#2和#3。
另一个选择是将整个应用程序移动到Web,并且只有一个应用程序需要支持。当然,像Delphi这样的工具中的优秀UI开发人员总能为Web应用程序创建出色的用户界面 - 尤其是在数据输入繁重的应用程序中 - 因此可能不适合您。
我会非常厌倦“同步数据”。
我的价值2美分。 麦克
答案 1 :(得分:5)
如果您使用RESTful based 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 ...)。该框架使用very fast kernel-mode http.sys
(比Windows上任何其他HTTP服务器更快)和快速HTTP API for the client实现服务器。您甚至可以使用HTTPS来处理安全连接。
恕我直言,使用这样的ORM比仅使用数据库连接更好,因为:
答案 2 :(得分:2)
我建议您有一个数据库和两个前端(为后端工作调用SOAP方法的Web UI,Delphi中基于SOAP方法调用的富客户端,以及实现SOAP可访问方法的SOAP服务器层,其中包含你的业务逻辑。)
根据您所描述的内容,您认为复制只会加速您的速度,但它会做什么反而会减慢您的速度并使您产生复制,连贯性和关系完整性问题,必须手工整理(由你)。
答案 3 :(得分:1)
查看this
CopyCat是一个数据库复制 引擎,写为组件集 Embarcadero Delphi。 CopyCat一直都是 自2004年以来一直在生产中使用 非常稳定。这是每天依赖的 由一些从小到大 应用范围的企业 从站点间同步, 巡回工作,数据库备份和 更多。我们相信它可以 满足您的需求。请继续阅读...