delphi三层架构
我们的delphi程序很多是以前开发的,采用典型的CS架构,由程序直接连接数据库。现在需要改成在外网可以直接操作软件。先把数据库搬到了阿里云上,测试发现直接连数据库和VPN连接测试速度很慢,直连还容易掉线。服务器申请大的带宽又太贵。把数据访问和一些业务逻辑改写成服务,由于软件太大,开发和测试需要投入大量工作,也不现实。最后通过使用SATRDA解决了问题。
SATRDA 服务器和客户端通过HTTP实现通讯,只有需要数据交互的时候才与服务器通讯,解决了连接掉线的问题。通过提供ODBC驱动的方式,使得客户端代码不需要改变,就实现了两层到三层的转换。
SATRDA使用过程
1. 首先打开server/config目录下的dbconfig文件,
- {
- "mssql": {
- "DBType": "odbc",
- "Provider": "driver=sql server;server=127.0.0.1;uid=sa;pwd=sql;database=test"
- },
- "orcl": {
- "DBType": "odbc",
- "Provider": "driver=Oracle in OraDb10g_home1;SERVER=ORCL;uid=system;pwd=sql;EXC=T"
- }
- }
修改数据库连接设置。其中 mssql是客户端连接的名字,可以随意取,DBType为odbc是固定的。server对应数据库服务名,uid为用户名,pwd为密码,database为数据库名,
2. 运行satserver.exe
3. 修改连接字符串如下。
- server := '127.0.0.1:5555';
- db := 'mycon1';
- ADOConnection1.ConnectionString := 'driver=Smart ODBC Driver;server=' + server + ';DB_NAME=' + db + ';Uid=1;Pwd=;HTTPS=0;PB=0;' ;
- ADOConnection1.CursorLocation := clUseClient; //注意需要设置为clUseClient
- ADOStoredProc1.Connection := ADOConnection1;
完成后,其它操作都和原来一样。
阿里云单核1M带宽检索10W条记录,直连65秒,satrda不到3秒。
下载地址:
QQ群:374683171 (交流、下载最新版本)
delphi三层架构的更多相关文章
- delphi 三层架构简单例子(经测试成功)
delphi 三层架构简单例子(经测试成功) 转载 2013年12月19日 09:48:57 1100 所谓三层: (1) 客户端 (2) 服务器端 (3) 数据库 在数据访问时,使得客户端必须通过服 ...
- delphi三层架构(使用SATRDA改造,客户端代码不变)
我们的delphi程序很多是以前开发的,采用典型的CS架构,由程序直接连接数据库.现在需要改成在外网可以直接操作软件.先把数据库搬到了阿里云上,测试发现直接连数据库和VPN连接测试速度很慢,直连还容易 ...
- Delphi三层网络架构代码实现
Delphi三层网络架构代码实现 1 .三层网络的概念 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为: 表现层(UI).业务逻辑层(BLL).数据访 ...
- Delphi数据库的三层架构的问题和解决方法
Delphi数据库的三层架构的问题和解决方法 原创 2014年03月26日 16:26:03 标签: Delphi / 数据库三层架构 / DCOM / DCOMConnection 790 //-- ...
- Delphi 三层TDataSetProvider
在Delphi想使用三层架构或者使用TClientDataSet控件,一般都需要引用TDataSetProvider控件,现对TDataSetProvider控件的Options属性值做一个简单的分析 ...
- 论DELPHI三层的数据序列格式的变化
论DELPHI三层的数据序列格式的变化 要窥三层的数据序列格式,我们可以通过观察DELPHI官方的客户端内存表. 早先流行的是TClientDataSet,它的Data和Delta属性的数据类型都是: ...
- asp.net三层架构 及其中使用泛型获取实体数据介绍
asp.net中使用泛型获取实体数据可以发挥更高的效率,代码简洁方便,本例采用三层架构.首先在model层中定义StuInfo实体,然后在 DAL层的SQLHelper数据操作类中定义list< ...
- 关于三层架构与MVC的一些理解
刚毕业的时候,参与了一个上位机的系统开发.上位机所使用的是.net Windows Form技术. 当时,和一个北理的姑娘在一个项目组里.因为她来公司时间比较长,而且经验比较丰富,所以,上位机的架构由 ...
- 架构和模式的区别:三层架构和MVC在应用开发中的位置
架构是系统层面的,可以是多层架构,也可以是事件驱动架构,也可以是微服务架构. 模式是GUI应用的一种职责分离设计. 三层架构(包含多层架构)和 MVC模式(包含MVP, MVVM) 没什么关系,它们不 ...
随机推荐
- SQl_update,case_when,end
627.Given a table salary, such as the one below, that has m=male and f=female values. Swap all f and ...
- C++ set容器
STL中的set容器的一点总结:(元素唯一,且排序) 1.关于set (头文件:<set>) C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, strin ...
- 【spring源码学习】spring的事务管理的源码解析
[一]spring事务管理(1)spring的事务管理,是基于aop动态代理实现的.对目标对象生成代理对象,加入事务管理的核心拦截器==>org.springframework.transact ...
- c++封装继承多态
面向对象的三个基本特征 封装.继承.多态.其中,封装可以隐藏实现细节,使得代码模块化:继承可以扩展已存在的代码模块(类):它们的目的都是为了——代码重用.而多态则是为了实现另一个目的——接口重用 封装 ...
- Linux之 手动释放内存
我们在进程中要怎样去描述一个文件呢?我们用目录项(dentry)和索引节点(inode).它们的定义如下: 所谓"文件", 就是按一定的形式存储在介质上的信息,所以一个文件其实包含 ...
- 6.Python使用Pandas小案例
1.使用以下命令引入Pandas和xlrd,引入成功后在pycharm的setting导入即可使用(pip3是由于个人python版本为3.6)==在dos命令行输入以下信息 pip3 install ...
- checkstyle简单使用说明
checkstyle对检查代码规范问题的总结,虽然还不够只能,但已经比较强大.1.Cyclomatic Complexity is X (max allowed is X). 问题说明:圈复杂度过高. ...
- oracle的时间
今天发现之前从oracle导出的数据时间格式很奇怪: "ACTIVETIME","ACTIVITYID" "2018-08-10 06:08:43&q ...
- JVM内存管理之GC算法精解(五分钟让你彻底明白标记/清除算法)
相信不少猿友看到标题就认为LZ是标题党了,不过既然您已经被LZ忽悠进来了,那就好好的享受一顿算法大餐吧.不过LZ丑话说前面哦,这篇文章应该能让各位彻底理解标记/清除算法,不过倘若各位猿友不能在五分钟内 ...
- yii 获取当前ip
<?php //当前域名 echo Yii::app()->request->hostInfo; //除域名外的URL echo Yii::app()->request-> ...