问题标签 [datasnap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1139 浏览

delphi - Midas/DataSnap 项目中的 DUnit 测试

如何在 Delphi 2006 的 Midas/DataSnap 项目中设置 DUnit 测试

编辑

如何将 Dunit 测试设置到 TRemoteDataModule Delphi 2006 中的项目向导不适用于 TRemoteDataModule

0 投票
5 回答
3678 浏览

delphi - 最好的 Delphi n 层低带宽技术是什么?

我需要在需要集中数据和文件存储系统(用于文档成像)但有多个分支机构且相互连接性相对较差的环境中部署 Delphi 应用程序。我相信 3 层数据库应用程序是最好的选择,这样我可以提供丰富的桌面体验和相对轻量级的数据传输需求。到目前为止,我已经简要介绍了 Delphi Datasnap、kbmMW 和 Remobjects SDK。似乎 kbmmW 和 Remobjects SDK 使用的带宽最少。有没有人有在具有大量用户(我需要支持 700+)的具有挑战性的环境中部署任何这些技术的经验?谢谢!

0 投票
2 回答
2653 浏览

delphi - Datasnap:有没有办法在全球范围内检测连接丢失?

我正在寻找检测本地连接丢失。有没有办法做到这一点,就像 Corelabs 组件上的事件一样?

谢谢

编辑:抱歉,我将尝试更具体一点:我目前正在使用 datasnap 2009 设计原型。所以我有一个瘦客户端、一个无状态服务器应用程序和一个数据库服务器。

我能做的是检测和处理客户端和服务器应用程序之间的连接丢失(互联网连接)以适当地处理它,即:向用户显示一条信息性错误消息或检测服务器关闭以静默重定向另一个应用服务器。

在我使用 ODAC 组件管理的 2 层中,TOraSession 有一些事件来处理这个问题。

0 投票
6 回答
3916 浏览

delphi - 如何在客户端仍然连接时更新 DataSnap 服务器?

我们将有状态的 DataSnap 服务器用于一些业务逻辑任务,并提供客户端数据集数据。

如果我们必须更新服务器来修改业务规则,我们将新版本复制到一个新的空文件夹并注册它(取决于 Delphi 版本,只需启动或运行 TRegSvr 实用程序)。

即使旧服务器实例正在运行,我们也可以这样做。但是,注册新版本后,所有新的客户端连接仍将使用当前正在运行的(旧)服务器实例。所有客户端都必须先断开连接,然后新服务器将用于下一个客户端。

有没有办法在注册后立即将所有新客户端连接定向到新服务器

(我知道新的或更改的方法签名也需要更改并重新启动客户端,但这个问题是关于不影响界面的内部修改)

我们使用的是 Socket 连接,所有客户端共享同一个服务器应用程序(只打开一个应用程序窗口)。在早期,我们使用了远程数据模块的不同配置,这导致每个客户端有一个应用程序窗口。也许这可能是一个解决方案?(因为每个新客户端都会启动当前注册的可执行文件)

更新:Delphi XE 是否为“热部署”(更新的服务器)提供一些支持?我们目前使用 Delphi 2009,但如果它提供更轻松的“热部署”实施,我们将升级到 XE。

0 投票
2 回答
5771 浏览

delphi - 如何使用 DataSnap 2010 使用进程服务器方法

我定义了一个服务器方法:

EchoString 方法返回一个等效的 Value 字符串。

然后我将 TDSTCPServerTransport 与 TDSServer 和 TDSServerClass 一起使用来包装服务器方法。

在客户端,我创建一个 DataSnap TSQLConnection 并生成一个 TServerMethodProxy 客户端类:

我能够通过客户端应用程序中的 TCP 连接使用 EchoString 方法:

上述场景是使用 TCP/IP 作为通信协议。

但是,我希望将我的 ServerMethod 与我的客户端一起部署为“进程中”模型。如何在不更改客户端和服务器方法代码的情况下实现这一目标?

为了建立进程连接,我应该将什么参数传递给 TServerMethodClient.Create 构造函数?

在旧的 DataSnap 时代,我们可以使用 TLocalConnection 来享受 In Process 访问,而无需更改客户端和服务器代码。

0 投票
1 回答
3200 浏览

delphi - 我们可以使用 TDSProviderConnection 来替换进程内 DataSnap 应用程序的 TLocalConnection 吗?

我能够通过进程内 DataSnap 应用程序访问服务器方法。点击这里了解详情。

但是,进程内数据快照应用程序还有另一个方面。它是 IAppServer 或 TDataSetProvider。

在 Delphi 2009 之前,我使用 TConnectionBroker 和 TLocalConnection 进行进程内数据快照访问。新的 Delphi 2009/2010 DataSnap 允许我们使用 TDSProviderConnection 作为 RemoteServer。但是,我只能使它适用于 TCP/HTTP 连接。我不能将 TDSProviderConnection 用于进程内数据快照应用程序。会提示“无效指针操作”。

这就是我的代码的样子:

TEmployeeServer 是 TDSServerModule 类的后代,由连接在一起的 TDataSetProvider、TSQLDataSet 和 TSQLConnection 组成。

跟踪源码后发现TSQLDataSet确实打开并遍历了数据集。问题的原因应该和下面2个使用TDBXNoOpRow的方法有关

TDBXNoOpRow 实例将被

由于 TDBXNoOpRow 什么都不做,所以数据包没有通过上述方法得到传输。我怀疑这是使用进程内机制出现问题的原因。

我不确定我们是否能够丢弃 TLocalConnection 并用 TDSProviderConnection 代替进程内 DataSnap 应用程序?我已经跟踪 DBX 源代码好几天了,甚至找不到关于这个问题的线索。

0 投票
4 回答
1495 浏览

delphi - 如何手动调用 DSProxyGEN.EXE 生成 Delphi DataSnap 代理客户端?

我正在使用 Delphi 2010 的 DataSnap。有一个 DSProxyGen.EXE 实用程序可以让我们生成代理客户端单元。有人如何在不使用 TSQLConnection 的上下文菜单的情况下在命令行中使用此实用程序来生成代理客户端?

0 投票
2 回答
1190 浏览

delphi - 是否可以在受限用户帐户中运行 IIS 的 w3wp.exe?

我正在使用 Windows 7 和 IIS 7。我正在编写 Delphi DataSnap ISAPI。我希望跟踪我的 ISAPI dll 中出现的错误。

我了解到使用“w3wp.exe -debug”可能有助于在 Delphi IDE 中调试 ISAPI dll。但是,我希望在受限用户帐户而不是管理员组中调试我的 ISAPI。

在运行 w3wp.exe 之前,我已经设置了对文件夹“C:\Windows\System32\inetsrv\config”的访问权限。但是,我仍然遇到启动 w3wp.exe 的问题。这是事件日志:

在运行 w3wp 之前,我已经停止了我的 IIS 服务。

有任何想法吗?

0 投票
3 回答
2481 浏览

linux - 如何编写远程数据模块以在 linux 服务器上运行?

我想知道是否有任何解决方案可以做到这一点。有没有人?

大局:我想使用我的 delphi 瘦客户端通过 Web 访问数据。但我想保持我的服务器/服务用帕斯卡写。

“不那么”大图:我正在尝试编写一个 php 来模拟一个 SOAP Midas 数据包到 delphi 中的 ClientDataSets,但我的大脑中没有必要的肌肉来做到这一点。所以我可以尝试将 dbexpress 转换为 FPC,但我不知道这是否合法。

好的伙计们,我知道 PHP、java、c#/asp、python、ORM 和类似的东西可以帮助我解决这个问题,但我是 GUI 人!每个曾经用 cobol 编写过 10000 行报告的人都知道我在说什么。我只想将我的肥皂连接指向网络中的某个服务器(我不拥有服务提供商)并让我的客户满意。简单如...

0 投票
1 回答
3268 浏览

delphi - 使用 DataSnap 的大流

我正在尝试在 DataSnap 服务器/客户端之间传输一些大流(~1Mb),但无济于事。我试图理解 Jim Tierney 的代码(http://blogs.embarcadero.com/jimtierney/2009/04/06/31461)但没有运气,由于缺少库,我什至无法编译代码,反正 ...

我能够接收的最大流大小为 64k,因此您可以为像我这样的周末程序员提供的任何提示/想法/代码示例都将受到欢迎。谢谢!

我的服务器代码:

我的客户调用代码: