两层改三层,访问远端数据库(200)

  • 主题发起人 主题发起人 windz
  • 开始时间 开始时间
W

windz

Unregistered / Unconfirmed
GUEST, unregistred user!
一个C/S结构的应用,数据库本来在同一局域网内,因为最近数据库移到了远端,需要跨广域网连接,数据库端口需要开放在公网上,带来了安全隐患,因此需要更改。考虑了两种方案:1、将两层结构更改为三层结构。应用程序数据访问使用的都是ADOQuery控件,这部分包含有大量的业务逻辑和界面处理,即便改成三层结构也只能用做客户端。更改为标准的三层结构在短时间内恐怕不可能完成。如果能简单地增加一个中间层改为假三层也不知有没有可能。2、在数据库和应用之间安装一个代理软件,转发数据库连接,将暴露的数据库屏蔽下,减少一点安全风险。由于时间很紧,不可能进行较大改动,所以除以上两种方法外不知还有没有更好的方法。如果没有,上面两种方法哪种更为可行?
 
试试快驴,国产,有免费使用的部分。你这种情况,用远程桌面一类的会方便点,可以用windows自带的,不过速度慢,可以找个第三方的远程桌面软件用。利用iis的筛选器或isapi做中间件,对ado组件进行数据交互的实现,升级也方便。
 
多谢Star5。看了快驴,但使用快驴是不是还要对原来的应用进行较大的修改啊?现在关键没太多时间进行修改了。Star5你在北京吗?
 
有方案可以快速切换 QQ:1105154853
 
有方案可以快速切换 QQ:1105154853
 
你有多少时间呢?我可以帮你改,很方便. 我使用kbmMW作为架构平台.
 
从网络层来解决,最方便,不用改程序具体就是远程客户先进行VPN拔号,然后登录。因为你要求解决时间快;而且直接加个代理什么的,性能上也不能满足要求的,因为局域网应用跟Internet应用写代码的方式是有区别的,比如Internet上必须减少数据交互次数。
 
我以前试过的方式,可能对你有用:服务器(1433端口)---服务器端代理软件(加密传输数据、限制连接IP、将1433端口映射为其它端口)-----互联网------------客户端代理软件(加密传输数据、模拟1433端口、将收到的信息发至服务器端代理软件)--------客户端软件(adoquery连接地址为本机)。
 
To:爱妹妹的哥哥 已加你。To:buk 留个联系方式吧?
 
楼主搜索 VNN 即可解决你的问题,程序啥都不用改。
 
xianjun: 建VPN需要买网络设备的吧?估计客户不能够答应。TO:寒风一笑刀 你的方法的确好,但客户端代理功能需要我写在客户端程序中。客户端代理我没写过,这个功能用Delphi好实现吗?
 
VPN也可以用Windows自带的,看你的用户数有多少了,几十个应该没有问题。当然,其实硬件也不是太贵的。如果自己写代理,也不复杂,看看Indy的DEMO就行了。同时也要看你的用户数了,用户数大的话,代理软件要求就高一些,否则它自己本身成了瓶颈。
 
看数据量,视情况而定如果数据量不是很大可以直接改,加中间层就可以了如果单纯的做数据传输的加中间层还不如两层的,那样只能增加网络堵塞的几率。
 
To:xianjun我用的是D7,但在网上查到Indy的资料显示D7自带的Indy不支持代理,是不是我必须下载一个新的重新安装?还有,做SQLServer的代理应该使用什么协议的Indy组件?TO mcs_5152:数据量倒不会特别大。只是直接改的话会不会业务逻辑也都要重写?客户端用的ADOQuery,很多界面显示也都是从ADOQuery中直接取数据显示的,如果改三层的话是不是要用ClientDataSet替换,可是ADOQuery的事务处理用ClientDataSet又怎么办呢?
 
你的问题很容易解决,可惜没有看到你上QQ
 
TO:寒风一笑刀 你的方法的确好,但客户端代理功能需要我写在客户端程序中。客户端代理我没写过,这个功能用Delphi好实现吗? 你无需修改你的客户端,只是在你的客户机上新增一个程序,这个程序模拟出一个1433端口,只是你的客户端的数据库连接的IP是127.0.0.1而已;另delphi很好现实,D7中用serversocket,你找一找,在网上有一个代理源码,你好好看一看...
 
最快的方法就是VPN接入.程序不用改,改网络。
 
多人接受答案了。
 
后退
顶部