现在的位置: 首页 > 综合 > 正文

如何建立一个“远近皆宜”的数据库应用环境

2013年10月08日 ⁄ 综合 ⁄ 共 2989字 ⁄ 字号 评论关闭

兄弟部门要求开发一个多用户的数据库系统,当仁不让,我上了。

VB6+SQL2000 都是很成熟的东西,拿来就用了。
开工到完成,花了一个多月,也包括了调试和测试,最后就是试用了,比较顺利,没出什么问题。
经过一个星期的使用,可了,通过了。
过了几天,新的要求来了。兄弟部门说兄弟单位的部门也要用这系统,并且还要求共享数据。
问题来了。
数据库服务器建的时候是WINDOWS认证,不是SA认证
而兄弟单位和我们单位虽然有专线连接,但是我们属于不同的WINDOWS域。
也就是说,要使用我这个软件,必须登陆到我们的域里面,否则服务器是不让你连的。
虽然说可以给兄弟单位的用户也开个本域的帐号,但是人家也会闲麻烦呀。再说指不定人家也有什么系统是要在对方的域里面才能使用的呢?
(补充一下,其实还有一个问题,即使使用了SA认证,远程用户在专线的速度限制下还是几乎无法使用C/S模式运行客户端的,无论是VPN也好,DDN也好,除非你的数据量非常少,或者你们单位很有钱,有6M以上的光纤接入,否则每一次数据提交或更新都会让你痛不欲生的。有问题的读者不要急着扔西红柿,我是有过实际教训的。)
怎么办?
还有办法:建个应用服务器,让兄弟单位的用户通过这个应用服务器来跑这个软件。
这样做有两个好处:
1:专线的速度。C/S应用对于网络的要求其实比较高,本地网络的用户感觉不到,但是远程用户,哪怕是1M的DDN用户,只要同时开不到十个客户端,就能让他们感觉崩溃。而应用服务器则不同,它只是“假装”在用户端运行,实际上这个客户端软件只是在服务器上运行,它只把界面传到远端的用户显示出来而已。并且WINDOWS在这一点上做得很不错,这个传输的通讯量非常小,一般来说,一个客户端不超过16K(可以优化)
2:夸域运行。即使远端客户不在本地域内,但因为应用服务器是在本地域,所以对软件的使用并没有影响,远端用户只需要通过临时帐号登陆到应用服务器上就可以了。并且不会影响到远端用户本身所在的域内部的操作。
 
实际操作:
1:安装一台应用服务器:我搞了台HP的台式机来用作应用服务器。反正是给别的单位用的,不考虑什么稳定性,再说HP的PC也不算差。系统采用WIN2K SERVER,杀毒软件装好,补丁打齐,安装偶写滴软件,恩,这个是最重要滴。
 
2:添加域用户,(这个是在域控制器上干的事,如果没有域的朋友忽略这步),然后将这几个新建的域用户添加到数据库用户里面,使得应用服务器能以这几个用户的身份连接到数据库服务器。
 
3:安装远程服务:TERMINAL SERVICE 系统自带的,呵呵
这个服务一定要安装成应用服务器模式,你可以在WINDOWS组件里面发现这个东西,(就是添加删除软件那个东西选WINDOWS组件)
 
4:建立终端服务:位于控制面板的管理工具里面(CONTROL PANNAL, ADMIN TOOLS)
里面找一个“终端服务配置”,只要你前面安装了终端服务,这里就能找到。
在“连接”里面新建一个远程,然后配置好“登陆设置”和“环境”这两项,前者指定要登陆的域(以便于远程用户登陆到本地域),没有域的话就不写了。后者写上你要给用户指定运行的应用程序了,比如: C:/PROGRAM FILES/ABC/ABC.EXE 这个最最重要,必填啊,否则你等于叫别人来远程遥控了。当然,还有一种做法是在这里运行一个BAT程序,因为BAT可以做更多的事,比如,你要给这个远程用户临时添加一个文件服务器的网络映射什么的,当然,最后还是要加上面这个ABC.EXE的哦。
 
到这里,基本上服务器端的工作已经完成了,接下来你只需要把服务器的地址告诉远程用户,让他们用“远程桌面”来登陆就可以了。(登陆密码就是你刚才给他们开的域用户密码,如果没有域,那就是你在应用服务器上给他们开的本地用户密码。)
 
常见问题:
1:没有远程桌面怎么办?
WIN2000里面需要下载个软件才能用:mstsc.exe 和mstscax.dll,也可以直接去XP里面找,找到了直接拷过来就能用。XP下面是自带的。
 
2:为什么远程应用覆盖了我的桌面?
这个东西它默认就是全屏的,会把用户的当前窗口给覆盖,需要在连接前设置好:
打开mstsc.exe,点“选项”,在“显示”一栏里面把“全屏”那个勾给去掉。还可以在这里设置默认窗口大小和颜色位(这个很重要,降低窗口大小和颜色位可以极大的降低你的网络消耗),为了这个缘故,我还特的把我的软件在800X600X256色下重新排版了,这样就能在不降低远程用户的使用体验的前提下提高服务器和网络的效率。
 
3:为什么每次打开桌面的时候,程序还是停留在上次推出前的状态?
要教育用户在退出的时候退出“应用程序”,而不是直接关闭远程桌面。
因为虽然在用户来说,他关闭了远程桌面,程序对于他来说已经不存在了,他甚至可以关机走人了,但是实际上应用程序依然“活”在远端的应用服务器的内存里,直到用户下一次打开远程桌面的时候大吃一斤。正确的做法是去退出应用程序,让应用程序结束之后,远程桌面也会自动断开连接关闭窗口的。
否则的话,你只要挑一个肯定不可能有人在上班的时间打开应用服务器的任务管理器,你就会很惊奇的发现:远程用户此时依然还在使用你的软件哦,实际上,它们只是被用户抛弃在服务器的内存里而已。
 
4:当用户过多时你会发现服务器给你一条什么“超过服务器客户端…”之类的信息。
你得去查一下你得WINDOWS SERVER的授权是多少客户端的。当然,如果你用的是盗版的话就不必问了。
 
 
最后补充一下,如果是外网的用户,建议使用VPN方式先接入到内网,然后再用远程桌面连接会比较好。
我们单位同时还有一套非常非常大的系统也是用应用服务器方式使用的,全球几千用户在用,不过采用的是CITRIX接入,本质上来说和WINDOWS自带的远程桌面没什么不同。
另外,对于应用服务器来说,需要有一个比较好的网卡,还要有很大的内存,建议千兆网卡+GB以上的内存,否则当用户较多的时候会影响表现。
其实随着现在企业级的应用越来越多,所设计的功能和数据量也越来越大,B/S结构的局限性也会慢慢显现出来.因为无论C/S也好B/S也好,都是要从服务器端取数据的,这一来一回的,要是数据量一大,效率立刻就变得无比低下了.
个人认为,抛开是否需要安装客户端等一次性的工作不谈,两者在性能上没多少区别,甚至当有密集型计算的时候C/S比B/S方式更有效.
在实际事务中数据量的上升是无法预计的,但是线路带宽的上升却是有限的,因此,我可以断言,在将来的夸区域性质的事务流处理中采用本地数据处理+远程桌面类型的方式会越来越多,至少在高带宽通讯技术(或收费)未取得突破性进展的情况下是如此. 举例:CITRIX就是一种典型的本地计算+远程桌面访问的技术.
远程桌面的通讯只是图片和鼠标键盘动作, 其通讯传输量还是比较稳定的, 从这一点来说, 具有更理想的流量可控性, 如果将之作为远端分公司的业务接入方式, 则能比较简单的估计出所需的通讯线路带宽和线路报价. 而其他方法(无论是B/S还是C/S客户端连接数据库服务器)则均不能预测. 特别是在用户刷新表连接的时候,会产生一个比较高的通讯峰值, (设想一下每天早上9点,几十上百个用户同时打开客户端访问数据库,会是一个什么景象, 这足以让任何一个数据库或网络管理员心惊胆战, 而作为程序员是无法体会到这一点的.)

抱歉!评论已关闭.