(本文所讨论的开发环境,为 Delphi XE5)当我们开始创建第一个 DataSnap 商业软件前,有些技术上的问题必须明确。DataSnap 是三层架构,客户端暂且不谈,我们先讨论一下服务器端的架设。在服务器端,其实要实现两层架构:业务逻辑部分、数据访问部分。在 DataSnap 中,我们使用 TDSServerModule 类,以服务的方式将业务逻辑展示给客户端。也就是说,只有这个类中的 Public 方法才能被客户端访问。那么,问题来了:如果有多个业务对象,是为每一类业务接口分别创建一个TDSServerModule?还是服务器端统一只用一个TDSServerModule?服务器端统一使用一个TDSServerModule 的好处是不言而喻的,没有任何的歧义;但当项目很大、业务逻辑接口很多时,该单元将会很庞大,查找、阅读、修改都将带来不便;同时,也不能充分利用服务的生命周期。因此,我的倾向是:分别为每一类业务逻辑接口创建各自的 TDSServerModule ,并为服务接口分别设置合适的生命周期。这需要在 TServerContainer 中指派更多的 TDSServerClass,以与 TDSServerModule 单元一一对应。第二个问题:服务器端通过 TSqlConnection、TADOConnection、TUniConnection 等控件与数据库连接,这类数据库连接控件将在哪儿创建?是在 TServerContainer 中,还是在 TDSServerModule 中?在 TServerContainer 中创建,意味着服务器端只生成一次对象实例,当用户连接数量多时,系统会很快挂掉。所以,我们应该在 TDSServerModule 中创建,这样,每个连接上来的用户都将生成一个数据库连接,并且,业务逻辑中的事务处理将不受影响。当服务器端使用 Invotation 模式的生命周期,且大量的客户端连接时,我们可以采用对象池的设计,为 TDSServerModule 建立对象池,以避免大量的创建、销毁 TDSServerModule 影响服务器的性能。
相关推荐
Delphi 使用 Datasnap 进行三层应用开发
转载记录: Delphi 使用 Datasnap 进行三层应用开发,积累了几种技术,总结如下: 1、(推荐!)在 Datasnap 服务端 使用 TDatasetProvider,客户端 使用 TDSProviderConnection 1)采用Datasnap Server ,可以使用TCP/IP、Http 通信。TDatasetProvider能够提供“元数据与业务数据”。 推荐:采用(FireDac技术) TFDConnection 连接数据库,通...
Delphi DataSnap 流程分析(一)
好像和HTTP都没什么关系,和TDSServerTransport有关系,TCP的有个组件TDSTCPServerTransport,也看看它的继承关系。现在的方式2添加了HTTP支持,但是其实现方式不是直接通过WebModule来实现,而是转了个弯,通过桥接Indy的Http来实现。开始引入了Dispatch,到这里基本就明白了,后面的处理方式和一般的HTTP类似,只是简化了(DataSnap专用)。我们先来简要分析下方式2的流程,然后主要分析方式1的流程,方式3的流程类似方式1,就不做分析了。
DELPHI DataSnap Restful 连接方式1--使用DSRestConnection
1、安置一个DSRestConnection控件 2.设置DSRestConnection1控件属性 host loginprompt port 3、右键点击DSRestConnection1,出现菜单 4、选择“Test Connecttion” 这就表示成功连接到了datasnap Restful服务器 5、右键点击DSRestConnection1...
delphi rest server 很好用,但不好设置
选择 TDSServerModule (如果选择 TComponent,第一次点 Open Browser 看内容时候,会报错。虽然没啥影响,但总是不舒服。比如:http://localhost:8080/api/v1/EchoString?感觉在 OnParsingRequest 里还可以做一些修改。应该就是在这里做判断,并修改成“真”的内容。勾上 Simplified Dispatcher。DSRESTWebDispatcher1 改一下。于是 RESTDebugger 就可以支持。
Delphi2010中DataSnap高级技术(7)—TDSServerClass中Lifecycle生命周期三种属性说明
Lifecycle 三种属性: Session、Invocation、Server这三种属性都用在什么情况,有什么要注意的事项,Delphi2010中罕有说明。如果乱用这三种属性,你的服务程序有可能崩溃,数据混乱,内存占用大,效率低等问题!下面我对这三种属性的使用环境逐一介绍: 1. Session说明:这是delphi2010中默认属性,也是delphi推荐设置。Sess
基于DataSnap回调机制的Delphi聊天服务器实战项目
假设你在等一份快递。有两种方式:轮询(Polling):每隔5分钟打一次电话问:“到了吗?→ 结果:快递员烦死了,你还未必第一时间知道。回调(Callback):留个电话说:“到了告诉我。→ 快递员一到门口就给你打电话,即时、省事、不打扰别人。在技术上,这叫“事件驱动架构”——不再由客户端驱动流程,而是由事件触发行为。end.注意这个 GUID!它是接口的唯一身份标识,就像身份证号一样重要。
Delphi 三层框架 DataSnap 的服务器端设置
elphi 三层框架 DataSnap 的服务器端设置: DataSnap 框架有三个模块:DataSnap Server,ServerModule,DataSnap Client Module。 当创新新的DataSnap Server时,会产生三个文件,分别是: 1)ServerForm 窗口文件; ----- 可以扩展了此功能,使得ServerContain...
DataSnap综合演示程序
DataSnap Demo:TFDConnection、最大连接数、客户端回叫功能、多线程模拟、压力测试等,编译环境XE6 Update 1
关于TScreen::TDataModule没有互斥,在Datasnap中引出的BUG
Datasnap中的TDSServerModule是继承于TDataModule,TDSServerModule实例的Destory,没有做互斥 destructor TDSServerModuleBase.Destroy; begin //TDataModule if OldCreateOrder then DoDestroy; if Assigned(RemoveData
李维_Delphi_XE程序设计系列2
李维 Delphi XE程序设计系列 2-开发DataSnap/REST服务器 在上次的文章中讨论了如何把传统的Delphi 主从架构应用程序逐渐转换为DataSnap JSON服务器,在本篇文章中让我们正式讨论如何使用Delphi XE开发DataSnap/REST服务器,
手把手教你搭建自己的 API 中转站
本文介绍了如何通过开源工具CLIProxyAPI(CPA)搭建本地AI模型代理服务,解决多工具切换、海外API访问困难等问题。CPA可将OpenAI、Gemini等不同服务的API统一封装,用户只需配置一次账号信息,所有客户端即可通过标准接口访问。文章详细讲解了CPA的下载安装、配置修改、账号导入及客户端连接方法,并强调其经济性、可控性和集中管理优势。通过自建中转站,用户可避免第三方服务的质量风险,实现多账号负载均衡,构建个人AI资源池。最后提供了网络配置等实用建议,帮助开发者高效使用AI编程工具。
DataSnap 2009 系列之二 (方法篇)
在过去客户端要调用远程服务器的方法需要通过在TLB里添加接口并且在服务器对象中实现 在DataSnap 2009中调用远程服务器的方法是基于delphi的RTTI机制的 想要一个类允许被远程调用需要做以下两点 1.把该类和DSServerClass连接在一起 procedureTMainForm.DSServerClassGetClass(DSServerClass:TDSSe...
5GCPE与4G物联网卡兼容实战:通过AT指令修改IMEI实现设备迁移
本文详细介绍了如何通过AT指令修改5GCPE设备的IMEI,实现4G物联网卡的设备迁移。从硬件准备、驱动安装到串口工具配置,再到具体的AT指令操作步骤,提供了全面的实战指南。文章还包含信号优化、APN设置等实用技巧,帮助用户顺利完成设备迁移并提升网络性能。
创建 Delphi DataSnap 程序的问题集萃(3)
(本文所讨论的开发环境,为 Delphi XE5) 本篇介绍如何实现服务器端数据库连接的共享。 常见的数据库连接实现,是为每个数据模块建立一个连接。但这样做将产生大量的数据库连接,并产生很多问题。 在上一篇,我们分析了 Datasnap 客户端连接服务器端时相关事件的执行顺序。其中,ServerContainerUnit1 容器是在服务器端一开始运行时就创建,直到
XDS110 USB Debug Probe连接错误-260:CCS Theia环境下的诊断与修复指南
本文详细解析了CCS Theia环境下XDS110 USB Debug Probe连接错误-260的诊断与修复方法。从硬件连接到驱动状态、固件更新到软件配置,提供了全面的排查指南,帮助开发者快速解决这一常见的调试器通信障碍问题,确保嵌入式开发工作流畅进行。
InTouch历史报警与操作记录高效查询控件V4.0实战指南(一键下载即用)
本文详细介绍了InTouch历史报警与操作记录高效查询控件V4.0的实战应用。该控件针对原生AlmDbViewCtrl控件的查询效率低下、功能单一等问题,提供了智能查询、可视化统计、视图定制和一键导出Excel等强大功能,旨在帮助工程师快速处理海量历史数据,大幅提升工控运维效率。
DataSnap初步二
复习上一篇的内容: 1. 一个典型的DataSnap服务器至少需要三个控件: TDSServer: DataSnap的逻辑核心控件,控制服务器的运行。 TDSServerClass: DataSnap服务端服务导出控件,通过OnGetClass事件来导出服务端的类及方法供客户端的远程调用。 作为服务端导出给客户端远程调用的类需要满足以下两个条件:
Linux yum源配置以及yum命令讲解
前面为大家介绍了RPM二进制包安装软件,RPM包安装的最大的缺点也提到过,就是依赖性太强,一旦遇到依赖问题,则需要我们手动解决包之间具有依赖性的问题,今天为大家介绍一种可自动解决包之间依赖关系的安装方式:yum。 yum 全称“Yellow dog Updater, Modified”,是一个专门为了解决包的依赖关系而存在的软件包管理器。就好像 Windows 系统上我们通常可以通过各种软件管家实现软件的一键安装、升级和卸载,yum就是Linux 系统中的一键安装工具。yum 解决依赖关系的基本逻辑是:yu
datasnap 2010 心跳包,连接断开处理
procedure TMainForm.DSServer1Connect (DSConnectEventObject: TDSConnectEventObject); var // RowIndx: Integer; InVal: TCP_KeepAlive; Ret:
海思ISP调优实战:从实验室到真实场景的IPC相机图像质量优化指南
本文深入探讨海思ISP调优在IPC相机图像质量优化中的实战应用,从实验室标定到真实场景部署的全链路调优方法。重点解决光照动态范围、色温变化和噪声特性等核心问题,提供AE权重表配置、CCM标定、3DNR时域滤波等关键技术方案,帮助实现从理论到实践的图像质量提升。
【产品】 产品设计:如何解决铝合金氧化着色后表面硬度低的问题(硬质氧化)
1、氧化处理技术 1)化学氧化 化学氧化处理所获得的膜层较薄,一般厚度为0.5μm ~4μm,质软不耐磨,抗蚀能力低于阳极氧化膜。 一般不宜单独便用,由于化学氧化膜吸附能力好,主要作用于油漆的底层,化学氧化按其溶液性可分为碱性和酸性两种。按其膜层性质可分为氧化膜,磷酸盐膜、铬酸盐膜及磷酸一铬酸盐膜等(这类型的氧化膜是可导电)。 2)电化学氧化(阳极氧化) 电化学氧化(俗称阳极氧化)是铝及...
delphi互联网消息服务器,Delphi2010中采用DataSnap的三层网络架构服务器获取客户端ip,端口信息...
需要的控件首先要有 TDSServerModule、 TDSServer、TDSTCPServerTransport;TDSServerClass、TDataModule;实现上述功能主要控件如下图所示包含的单元包括SysUtils, Classes,DSTCPServerTransport,DSHTTPCommon, DSHTTP,DSServer, DSCommonServer, Provid...
MTK Meta ISP 工具使用技巧与参数读取路径全解析
在联发科(MediaTek, MTK)平台上进行相机图像调试时,Meta ISP 工具是连接 PC 与设备进行参数调整、寄存器读取和图像输出的重要工具。本文以实战角度出发,系统梳理 Meta ISP 的使用流程、关键模块功能、典型调试技巧与参数读取路径,结合最新版平台(如MTK Genio/Dimensity 系列)架构,帮助工程师掌握联发科图像调优的核心流程。
DataSnap基础
1. DATASNAP 历史 作为MIDAS起始于Delphi3,Delphi4是MIDAS II,Delphi5中是MIDASIII,而后基于COM远程数据模块方式使 用TCP/IP,HTTP,(D)COM构建出强大的通讯能力.从Delphi6开始改名为DataSnap,直到D2007这个框架一直在使 用.D2009重新架构了DataSnap—移除COM依赖,使用TCP/IP以更轻量级的方式生...
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
STM32F407中文手册
STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。
DataSnap数据库连接池,数据集对象池的应用
传统的应用服务器的开发往往是在ServerMethods单元中拖放一堆TDataSet, TDaTaSetProvider控件,这是一个最简单粗暴的开发方向,往往会造成服务端程序文件的臃肿、服务运行期间内存资源消耗过大的问题。因此这种往应用服务器中拖放一堆TDataSet, TDaTaSetProvider控件的做法,非常的笨拙。 当然了,如果我们的系统采用的是以短连接...
Data-Structures-and-Algorithm-Analysis-in-Java.pdf
作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...
1833



被折叠的 条评论
为什么被折叠?



