DCOMConnection与SocketConnection

来源:互联网 发布:淘宝账号冻结了怎么办 编辑:程序博客网 时间:2024/05/22 05:13

BORLAND的MIDAS主要是基于MS的技术(因为WINDOWS平台的缘故)。DCOMConnection是基于DCOM的ORPC的,SocketConnection/WebConnection其实只是一个代理,把ORPC通过TCP/HTTP转换为本地COM调用而已。所以本质上还是DCOM。包括早先MIDAS支持的CORBA,其实也是通过CORBA的DII来代理DCOM请求而已,不是真正的CORBA应用。还有新的SoapConnection也是,只是用SOAP来代理DCOM请求而已,但在这里把原来依赖于DCOM的VARIANT类型的ClientDataSet数据包改成了通用的XML数据包,并在Linux下实现了新的独立于平台的ClientDataSet,实现了通过Kylix进行跨平台MIDAS开发,当然目前还仅限于客户端。
135-137等几个端口是Windows用于实现RPC和Windows本身的安全机制的,DCOM的ORPC也是基于RPC的,所以它的实现也要依赖于这些端口。因为Windows本身的安全机制还是比较脆弱的,所以一般连在Internet上的LAN都会在防火墙上关闭这些端口,并且一般只会开放几个需要用得上的端口,而不可能开放所有端口,这样的话,DCOM需要的135端口不能用就不能确定通信所需要的动态端口,而且即使开放了135也不够,由于不知道它会用什么端口进行RPC,又不可能全部开放,所以RPC还是不能进行,这就是DCOM不能用于Internet的原因。VPN等于是一个虚拟的远程LAN,可以就当作LAN(因为VPN的Tunnel中一般可以把全部端口打开,没有关系,Internet访问是进不了Tunnel的),当然可以用。但如果要直接用于Internet,唯一的办法就是打开防火墙的所有端口,那防火墙就形同虚设,所以是行不通的。这不是高手的问题,是安全的问题。
DCOM的安全机制完全依赖于Windows的域用户管理机制,在实际应用中很不方便,不只是配置的问题,很多用户的网络根本就没有域,这样DCOM就没法用了。要编程进行安全配置的前提是要能连通,那就要降低DCOM的安全级别,开放WINDOWS的安全验证,但在很多情况下,DCOM即使用GUEST也连不通,这种情况下用编程来进行安全配置也就没有意义了。
如果安全性要求不高,用SocketConnection是最好的,也是我用得最多的一种方式。不过它还是有一些问题的,比如对Callbacks的支持就有问题,还好我从来不用Callbacks,所以一般把SocketConnection的SupportCallbacks设置为false,情况就好很多。当然,除此之外,对不同的应用情况,还会有一些其它的问题,这就需要修改Scktsrvr和Socketconnection的源码,基本上都是可以解决的,比起DCOM来说,还是要好很多。不过即使安全性要求不高,也最好做一些简单的保护措施,最简单的就是修改SocketConnection的端口号,改一个较大的数,不要用默认的211。另外就是用Intercept,那就看你的水平了,想做到多安全都可以。