请参与讨论,如何花最小代价改进CS程序为可远程稳定快速运行的? ( 积分: 300 )

  • 主题发起人 主题发起人 JohnSun2002
  • 开始时间 开始时间
J

JohnSun2002

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,现有一Delphi开发的C/S两层程序,数据访问使用的全部是TADOConnection和TADOQuery,如何可以用最小的代价(最短的时间,最小的程序改动量)使其快速稳定的运行在Internet远程服务器环境下,也就是有异地的10来个分支机构要使用客户端软件来操作和查询数据库服务器上的数据。数据量:有的表只有几千行,有的表却有1万~10万行记录之间。<br>欢迎讨论,知无不言。
 
如果有域名或固定IP映射数据库服务器端口,再改一下联接字符串,不过直接开放数据库端口后相对不是太安全,另外还要解决数据流量问题,不能将数据全读到客户端。还有一个是用微软的终端服务,客户端用远程桌面,其它好像还有使用VPN。
 
好象就是VPN
 
请看http://www.rfinfo.cn&nbsp;,他们公司的产品就是为解决C/S系统应用在互联网上而开发的.现在有很多大公司正在使用他们的产品,如金蝶,用友等.有兴趣可以和他们联系一下.
 
asta解决你的一切问题。
 
用VPN方式,&nbsp;不用改代码
 
数据量不是很大,主要考虑的网络瓶颈问题,你的代码中不要下载没有用的数据,减少下载量,这样就可以快些,尤其是大家喜欢使用select&nbsp;*,这是很不好的,正常输入只要必须的,查询更是如此
 
我想可以这样,为安全起见,在你本地放一个DB,然后将你的ADO连到本地DB中,再写一中间件去同步本地与远程的DB.这样在查询不花很长时间,而同步数据是在后台进行用户也就看不到了.
 
www.dbanywhere.cn<br>更容易解决
 
提前一下,大家讨论讨论,
 
頂一下。。。。。。
 
1、修改程序至面向对象的程序,界面与逻辑翻开<br>2、进一步重构,将接口抽象的清晰,程序独立性良好,耦合极低。<br>3、选择internet的通讯方式,例如上面所说的asta,或者自己写socket,或者借鉴好的开源项目,个人建议用asta类型的就可以,server和client都是实现接口而已。令介绍JSON用来传输数据。<br>4、将程序分为server和client。
 
unit&nbsp;RevoteTable;<br><br>interface<br><br>uses<br>&nbsp;&nbsp;Windows,&nbsp;Messages,&nbsp;SysUtils,&nbsp;Classes,&nbsp;DB,&nbsp;DBClient,ADODB,SConnect;<br><br>type<br>&nbsp;&nbsp;TRevoteTable&nbsp;=&nbsp;class(TCLIentDataSet)<br>&nbsp;&nbsp;private<br>&nbsp;&nbsp;&nbsp;&nbsp;SocketConnection1:&nbsp;TSocketConnection;<br>&nbsp;&nbsp;&nbsp;&nbsp;FTableName:&nbsp;string;<br>&nbsp;&nbsp;&nbsp;&nbsp;FSQL:&nbsp;TStrings;<br>&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;SetTableName(const&nbsp;Value:&nbsp;string);<br>&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;SetSQL(const&nbsp;Value:&nbsp;TStrings);<br>&nbsp;&nbsp;protected<br>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;Protected&nbsp;declarations&nbsp;}<br><br>&nbsp;&nbsp;public<br>&nbsp;&nbsp;&nbsp;&nbsp;constructor&nbsp;Create(AOwner:&nbsp;TComponent);&nbsp;&nbsp;override;<br>&nbsp;&nbsp;&nbsp;&nbsp;destructor&nbsp;Destroy;&nbsp;override;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;execSQL;<br>&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;calcField(aTable:TDataSet);<br>&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;open;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;Public&nbsp;declarations&nbsp;}<br>&nbsp;&nbsp;published<br>&nbsp;&nbsp;&nbsp;&nbsp;property&nbsp;SQL:&nbsp;TStrings&nbsp;read&nbsp;FSQL&nbsp;write&nbsp;SetSQL;<br>&nbsp;&nbsp;&nbsp;&nbsp;property&nbsp;TableName:&nbsp;string&nbsp;read&nbsp;FTableName&nbsp;write&nbsp;SetTableName;<br>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;Published&nbsp;declarations&nbsp;}<br>&nbsp;&nbsp;end;<br>var<br>&nbsp;&nbsp;&nbsp;g_IP&nbsp;:&nbsp;string;<br>&nbsp;&nbsp;&nbsp;g_Port&nbsp;:&nbsp;Integer;<br>implementation<br><br>基本原理:<br>做个新类,继承TCLIentDataSet,实现TADOQuery,TadoTable的用到的接口,再用TRevoteTable替换TAdoQuery即可,其它代码基本不用修改
 
数据库做远程连接,客户端还是按原来配置连接,正在尝试通过oracle实现。关注此贴!<br>另外http://www.rfinfo.cn这个多少价位,知情人介绍一下。这个公司的网站有毛病,很多东西都没介绍,也没实际应用给看看。<br>www.dbanywhere.cn的产品看过介绍也看过演示,不过还是希望复杂点的实际应用,这样较有说服力。
 
to&nbsp;wwa:<br>这类方法工作量太大,技术上也需要考虑的比较细。估计考虑到这方面的需求很少有人会采纳吧。
 
我当前也正因为C/S程序只能在局域网中使用困惑着。这样太有局限性了。所以我也想将其变为internet程序。<br><br>现在准备用三层来实现。
 
10来个点,采用windows远程终端,程序&quot;几乎&quot;是不需要修改,速度快,什么VPN,三层根本没法与终端比速度,投资小.这是我的亲身经历,不是瞎说的
 
直接通公网完成远程终端?你得考虑安全问题,哪天帐号泄了,全世界人民都直接登到你服务器了。:)<br>无论如何,VPN还是要的。
 
直接通公网完成远程终端?你得考虑安全问题,哪天帐号泄了,全世界人民都直接登到你服务器了。:)<br>无论如何,VPN还是要的。
 
远程系统要求的是稳定,速度,安全,特别是原来的c/s直接改造过来,更要求速度,因为很多人写的程序都是直接时时的连接数据库的,对于网络反应要求非常高,在内网的时候,这个根本就不是问题,但放到外网,速度就不好说了,一般都是不快的.<br>愿意一起讨论,QQ:&nbsp;67189250
 
后退
顶部