问题标签 [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.
database - 如何使用 dbExpress 和 Delphi(也可能是 DataSnap)来抽象我的业务模型?
如果我的问题不清楚,请通过评论帮助我改进。
我是 Delphi 和 dbExpress 的新手,我刚刚熟悉 TSQLDataset、TDataSetProvider、TClientDataSet 和 TDataSource 类。
我正在从事的项目以一种让我感觉很奇怪的方式使用这些组件。有一个巨大的数据模块单元,其中包含大量前面描述的四重奏类。我猜有更好(和更模块化)的方法来做到这一点。DataSnap 仅用于将此数据模块放置在服务器应用程序中,以便客户端通过它访问数据。
所以,让我试着解释一下我的一些疑问:
- 每个类的作用是什么?我阅读了文档,但我无法对这个主题(特别是关于 TDataSetProvider)有实际的了解。
- 哪些类应该在数据模块中,哪些应该在我的表单中?
- 是否可以创建一个中间层来从我的数据库设置中抽象出我的业务模型(也许创建返回不可变数据集的函数?)?
- 如果是这样,使用 DataSnap 这样做是否明智?
如果我不够清楚,我很抱歉。提前致谢。
sql-server - 使用 Datasnap 构建真正的数据库应用程序
我使用 ADO 和 devexpress 在 D2010 中构建了一个广泛的 2 层应用程序。我想将其升级为主要使用 Datasnap 来提供 HTTPS 通信,而不仅仅是向易受攻击的 SQL 服务器提供 TCP/IP。我已经按照我能找到的所有 Datasnap 教程进行操作。我有 Cary Jensen 的 Delphi In Depth:ClientDatasets。一切都很好,但是这些示例毫无用处,因为在真正的数据库应用程序中,网格是通过将多个表连接在一起来填充的,而几乎从不来自单个表。这立即消除了客户端数据集的“自动解析”功能。即使是建议的 beforeupdateevent 处理程序也无法在 datasnap 应用程序中工作,因为 DB 只能由 datasnap 服务器访问。所以在我看来,我必须在 datasnap 服务器上为我需要的每个插入/更新创建一个方法,然后将这些方法公开给客户端并根据需要从客户端调用它们以请求 datasnap 服务器执行所需更新/插入。这似乎是很多工作!
有没有更简单的方法将 https 通信实现到 SQL Server?
哦,如果您想知道,应用程序已经是伪 3 层,因为网格连接到 TdxMemData,而从不直接连接到 TADOQueries。我自己处理所有插入/更新的方式与使用 TClientdatasets 时需要的方式相同。
delphi - 有某种 DataSnap XE TServerMethods 设置吗?
我正在尝试一些 TServerMethods 并且所有这些都与我的 Firebird DB 交互。
我不想在我将创建的每个方法中都获取 SQLConnection.DBXConnection,但我想从一个超类继承该行为,该超类将在每次调用我的 ServerMethod 时、在继承的 Create 或类似的东西中设置一个受保护的 DBXConnection那。
除了每次调用我的程序 SetupDBXConnection 之外,我还能找到任何方法。有什么办法可以做到吗?
谢谢。
windows - Windows Web Server 2008 R2 上的 Datasnap/DCOM
相同的设置适用于 Windows 7 / 64 位和 Windows Server 2008 / 64 位:
- Datasnap 服务器应用程序位于已安装的网络驱动器上
- 在tregsvr 注册
<drive>:\path\to\server.exe
(作为管理员) - GUID 显示在 dcomcnfg 中
- Socketserver 和 DCOM 服务正在运行
客户端失败并显示错误消息“类未注册”
如果我将服务器应用程序移动到本地目录,并重复进行 tregsvr 注册,客户端可以毫无问题地连接。
我还能检查什么?
delphi - 在线程中使用datasnap ServerMethod返回的DataSet?
我正在使用 Omnithreadlibrary 从线程中调用服务器方法,数据成功返回,但我在使用返回的数据时遇到了麻烦,我尝试过的所有内容都与 AccessViolation 甚至应用程序崩溃有关,还尝试将数据集设置在链接到 ClientDataSet 的 DataSetProvider,但在这里它也不起作用,最后我将服务器方法设置为返回 OleVariant 并将其直接设置为 ClientDataSet 的 Data 属性,但我也有错误。
我的目的是让请求在线程中完成,并将数据返回到主线程中的函数以填充网格。
有什么建议么?
delphi - REST Datasnap 覆盖 URI 映射
我在 delphi XE2 中使用 REST datasnap 编写了一个小型 REST 服务器。HTTP 方法(POST、PUT 等)和 delphi 中定义的函数之间存在默认映射,这是由 delphi 组件完成的。
这个 wiki 条目描述了 URI 映射,但也注意到程序员可以覆盖默认映射。
映射模式可以被覆盖。用户可以根据类名和方法名参数覆盖每种类型的映射。
但我没有找到任何解释如何覆盖映射。
如何更改默认映射?
delphi - 使用 DataSnap 和 Advantage 数据库服务器
我曾尝试在 Advantage Database 上使用 DataSnap,但无法更新我的数据。我在 datasnap 服务器上使用 TAdsQuery 并将查询返回给客户端并将其与 TDataSetProvider 链接。我追踪并看到 Delphi 使用 TSQLConnection 应用更新,而不是我在服务器端的 TAdsConnection。任何的想法?
sql-server - 使用公文包模型的本地 TClientDataSet 上的主键
当 DataSnap 客户端应用程序连接到 DataSnap 服务器的远程数据模块并使用TDataSetProvider
+TClientDataSet
时,它会缓存客户端应用程序本地的数据库表(或视图)。用户可以在本地对 TClientDataSet 中的数据进行更改,ApplyUpdates(0)
并将更改与服务器同步。这一切都说得通。
使用 SQL Server 2008 db,主键可以是identity
一个字段或GUID
字段。假设用户在向本地添加新记录时会离线,那么当用户创建新TClientDataSet
记录时,本地TDataSetProvider
和处理主键字段的分配如何?由于本地创建的记录可能是主/从关系的一部分,因此需要在本地创建新的主键似乎是合乎逻辑的。当用户执行“ApplyUpdates(0)”时,如何解决?TClientDataSet
当几个用户在离线模式下创建记录时,当他们每个人都做一个时如何解决主键冲突ApplyUpdates(0)
?
领域比identity
领域更好GUID
,反之亦然?为什么?
delphi - DataSnap 是否是将现有 Windows 应用程序的数据和业务逻辑带到移动/Web 客户端的合适解决方案?
我需要一个巨大的 Delphi XE 应用程序(由专有的 SQL 服务器 NexusDB 支持)并开始为我的客户提供以新方式访问系统的能力:
- 用于慢速/VPN 连接的瘦 Windows 客户端
- 手机/平板电脑
- 网络
DataSnap 适合于此,还是以错误的方式引入中间层来提供远程/移动访问?欢迎其他解决方案/想法。
(我有 XE2 Enterprise,但在 XE Enterprise 上停留了一段时间。)
delphi - ISS 7 64 位 WS dll
我有一个服务器应用程序 DCOM/datasnap(delphi 7)、一个客户端应用程序(通过 httpsrvr.dll 调用服务器)和一个 Web 服务 DLL(delphi 7)。这个 dll 在 asp.net web 应用程序上调用。在 IIS6 网络服务器上一切正常但是当我想在 IIS 7 环境 64(Windows Server 2008 RC2 或七个 64 位)上安装时出现问题: 1。http 调用不起作用(httpsrvr.dll 在 ISS7 网站上定义) 2。asp.net (2.0) 上的 WS 调用不起作用
我已经测试了一个 Apache 2.2 解决方案,链接客户端(exe delphi)服务器可以工作(cgi bin apache 目录上的 httpsrvr.dll),但有 oleVariant 大小的限制(超时),但我无法设置我的 dll Web 服务。URL 类似于 'http://127.0.0.1/cgi-bin/WABridge.dll/soap/IWABridge (此 url 是 asp.net 应用程序上的 URL 代理)。此网址不适用于 IE(或 FF)-> 内部错误。如果我在 FF 上设置 'http://127.0.0.1/cgi-bin/WABridge.dll/IWABridge,我会看到 wsdl 定义页面,但在 asp.net 网页上找不到错误 404 文件...