如何从internet网或广域网上存取放在局域网内的数据库。如能完全解决,1000分奉上。 (300分)

  • 主题发起人 HunterTeam
  • 开始时间
我的方案:
面对以下问题:
1。客户IP地址可能有代理或者防火墙,所以服务器端可能不能知道客户的IP
2。客户端可能不能PING,此命令可能被禁止PING外网
3。数据库服务器IP地址一般是不可PING的,也就是说指定IP地址肯定是行不通的
4。数据库服务器最可能是的通过一个应用程序服务器来访问的(DCOM,CORBA等),
而客户端是与应用程序服务器连接的
5。应用程序服务器也是不可PING
针对以上问题,解决方案如下:
客户端---HTTP/SOAP---应用程序服务器(DCOM/CORBA)----ADO/RPC---数据库服务器
优点:
不用使用IP地址,只要有域名就可以了(当然有IP地址也可以),传输使用XML,这样
可以给你足够的灵活性来设计应用程序服务器,而应用程序服务器和数据库服务器的带
宽是宽的,所以采用RPC连接来进行数据的操作。
一般说来,客户端一般都允许HTTP协议,不会封它的端口,所以一般是不存在问题的,
可以避开代理和防火墙问题
IP地址不可见问题也得到解决了。
如,我的一个项目需要INTERNET上访问SQL SERVER数据库,大用户,应用程序操作界面
,用户状态不能估计--拨号的,代理的,防火墙后。。。。。,我采用的方案就是:

客户端---通过SOAP访问----WEB SERVICE(转接服务器)---通过RPC访问---
应用程序服务器(DCOM)----通过ADO访问--MS SQL SERVER2000

WEB SERVICE:数据I/O接口和实现分布应用程序服务器的负载平衡--一个或多个
应用程序服务器:应用逻辑处理--------一个或者多个
MS SQL SERVER2000:数据服务--------一个或者多个

能够比较完善的解决你的问题,根据需要你可以减少层次!
给分吧,少了可不行
 
windbell
的方法只能使用固定IP而且可以PING,不然就需要装代理软件,
代理软件的制约性对开发人员是难以克服的---没有源码
有许多代理服务器和防火墙根本不可能让你通过TSOCKETCONNECTION
或TDCOMCONNECTION连接,这个方案再INTERNERT上不能使用
----要不MS要。NET干嘛
 
jasper老兄给出的方法似乎是可行的,我这就试试。至于分数嘛,这帖的分数现在还不能
就开出,留着继续讨论,我先在别的帖子给你300分(lid=1274979),不够只管再讲,还有
要向你讨教的地方呢。
 
to jasper:
VPN是否服务器端必须有固定IP地址?
我的服务器通过ADSL连接INTENET后可以在客户端PING通.
 
你说的VPN指的是(虚拟专用网,Virtual Private Network)吗?
如果是就不能保证有固定IP地址,除非ISP给你一个
当然你ADSL连接是可以PING的,但是有两个问题:
1。ISP可以封掉PING,来保证安全
2。你公司可能采用封掉别人PING的安全策略
3。用户可能根本就不能使用PING指令PING外
所以依靠可PING的IP是不健壮的假设条件
 
to jasper:
我说的VPN就是指虚拟专用网.虽然我的ADSL没有固定IP,但连接后可以多天不断开,并且你
说的那些问题在我们的网上也都不存在.
->1。ISP可以封掉PING,来保证安全
这是用本地电信的,它们也不可能封掉PING
->2。你公司可能采用封掉别人PING的安全策略
我们公司这个服务器就是由我管理的,我不会封掉别人的PING
->3。用户可能根本就不能使用PING指令PING外
现在就是我一个人使用,没有别人.
所以这种情况不知您有什么好的解决办法,能够用VPN连接.配置就象上面所说.如果能通过的话
我开个贴给你加分
 
通过广域网的VPN连接
 
你没有固定的IP地址,即使几天不变IP,但是几天以后就不能说了,
所以IP地址变化是必须解决的,你不能一个一个通知客户吧!
但是由于你有了以上前提条件,所以方案就比较多了:
1。假设C-S之间的带宽比较宽(至少100K以上)而且数据传输量比较大,
这样可以采用以DCOM或CORBA为主的方案
(1)首先:解决IP地址用户透明
方法:如果利用给定的IP地址(或上次的IP地址)无法连接
COM/CORBA应用服务器,使用WEBSERVICE从WEB SERVER上获取IP地址
(2)使用COM/CORBA的连接接口连接应用程序服务器
(3)COM/CORBA应用程序服务器连接数据库服务器
优点:开发非常简单,可以负载平衡(返回多个可用的应用服务器的IP地址)
不需要应用服务器连接代理
缺点:1,2,3条件必须满足,要不很麻烦(需要代理软件)

即:COM----通过DCOM连接----应用服务器-----ADO---数据库服务器
CORBA的也一样

2。假设你的数据服务量要求不多,比如基本上是发布和检索信息,那么全部采用
SOAP就可以了
客户端----通过SOAP连接应用程序服务器--通过DBX--连接数据库服务器
就是WEB SERVICE直接作为应用程序服务器使用

优点:体系集成非常好,SOAP的优点全部体现,只是负载平衡需要广域资源大

3。假设你就需要一个宽带的大数据的数据库系统,那么
(1)首先:解决IP地址用户透明
方法:如果利用给定的IP地址(或上次的IP地址)无法连接
COM/CORBA应用服务器,使用WEBSERVICE从WEB SERVER上获取IP地址
(2)客户端直接通过IP连接远程数据库

缺点,1具备的它都有,还有商业逻辑负载平衡难,维护难,安全隐患多。。。。。。
优点:开发非常简单,C/S两层

其他还有不少,基本上凡是C/S可以的,在这个条件下都可以,这是效率和体系的健壮
性差别很大
 
建议你用ASTA,作中间服务器
详细请看:www.astatech.com
 
方案1。其实就是反向代理,或者称为 IP 转发,装一个双网卡的代理服务器/防火墙,
很多代理服务器/防火墙都支持(包括微软的老掉牙的 MS Proxy 2.0),自己编也可以
关键是转发 IP (内部服务器的 IP)设置, 不是自己编的一般要手工设,
如果内部 IP 不经常变化可以用现成的。
如果内部 IP 经常变化(动态IP)最好是自编程序来实现。
方案2.如果提高安全性,不想暴露内部 IP,可以再加一层自编程序先主动外连中间服务器。。。两端都要写程序,
有点类似木马机制,很多证券商的网络隔离就是采用这种机制。
 
利用VPN实现,我公司很多分支机构就采用的。
数据库在公司的居域网内,对外不可见的,同时在网内安装FIREWALL(我们用CHECKPOINT的产品),
在FIREWALL上有一INTERNET的IP地址。FIREWALL进行一系列的设置后就可以(关于CHECKPOINT的产品
你可以去www.checkpoint.com看)。各分支机构采用拨号或ADSL拨号到INTERNET,同时要安装CHECKPOINT
的SECUREMOTE(设置比较简单,需要SERVER的认证),通过之后,就可以访问公司内部的IP地址了。
这种方式是最省的,而且你的分支机构在世界各地都可以。
 
方法:
1、最简单的方法,其实就是上面所说的代理方式,其实只要在局域网的服务器上作端口映射就可以了
2、VPN拨入,使用win 2k的路由和远程访问,很简单,跟着向导做就可以了
3、使用Webservice,做一个DataModule,在局域网的服务器上运行
 
对于你的服务器是否有固定IP地址

没有的话去
dns2go.com或者sharella.com
申请一个免费的动态域名就好了

只是要通过域名连接
 
如果你的操作系统是windows 就很简单了,你在你的数据库服务器上,配置一个远程访问服务器,
客户端,直接拨号登陆道你的数据库服务器,登陆成功的话,你远程登陆的客户端在逻辑上被视为局域网内的
一个工作站,这样你以前的程序在不改动的情况下就可以用起来

 
如果有固定的IP那就容易多了,我刚做的一个管理系统就是在Internet网上管理远程的数据库,
我用的数据库是MSSQL2000,要在服务器上配置,配置的时候要注意服务器的安全问题就是,
因为涉汲到远程管理,所以要添加一个具有远程访问权限的用户,连接数据库用TCP/IP协议,
ORACLE数据库应该也能实现……
配置好了服务器,程序实现上和局域网管理数据库一样,不需要用到VPN和多层系统
 
多谢各位的积极参与,帖子我就先结了,以后再出现问题再与大家讨论。
 
 提提!!!
 
顶部