 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,那就看你的水平了,想做到多安全都可以。

DCOMConnection与SocketConnection相关推荐

  1. Delphi三层开发小技巧:TClientDataSet的Delta妙用

    Delphi三层开发小技巧:TClientDataSet的Delta妙用 Delphi做三层开发时,很多人都会在客户端放一个TClientDataSet,中间层远程数据模块就对应放一个TDataSet ...

  2. delphi mysql 三层_Delphi XE 10 跨平台三层数据库应用 datasnap

    (1)生成DataSnap服务器的框架 初学者都是呆子,还是用向导吧,主菜单"File"->"New"->"Other-"得到& ...

  3. DapaSnap简介

    一.DataSnap(一) DataSnap到了Delphi2010有了很大的变化,已经可以完全抛弃DCOM之类的东西了,在以前版本中建立一个DataSnap,需要使用DCOMConnection或者 ...

  4. 捕获SocketConnection组件连接异常的几个好贴

    1.多层分布式结构中怎样动态的判断客户端与服务器是否断开? 2.请问能捕捉SocketConnection的连接错误事件吗? 3.用SocketConnection开发的三层应用程序,客户端程序关闭时 ...

  5. [JavaME]手机申请移动分配的动态IP(3)?

    获取IP后是否可以和它通讯呢?<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...

  6. bde oracle 商友的流程_bde oracle 商友的流程_BDE动态连接Oracle数据库

    BDE动态连接Oracle数据库 说明:系统是三层架构:数据库是Oracle9, Server采用BDE连接数据库,使用scktsrvr.exe,Client采用SocketConnection连接到 ...

  7. Android 10.0系统启动之init进程-[Android取经之路]

    摘要:init进程是linux系统中用户空间的第一个进程,进程号为1.当bootloader启动后,启动kernel,kernel启动完后,在用户空间启动init进程,再通过init进程,来读取ini ...

  8. Android SystemProperties系统属性分析

    原文地址:https://skytoby.github.io/2019/Android%20SystemProperties%E7%B3%BB%E7%BB%9F%E5%B1%9E%E6%80%A7%E ...

  9. .net平台下C#socket通信(中)

    本文主要讲述: 1.正常通信中握手建立 2.一对多的通信 3.发送接收数据格式转换 4.资源释放 5.开启并保持服务监听 1.握手建立正常的通信通道 项目需要通信的双方(假设是一个上位机.一个下位机) ...

最新文章

  1. Object.defineProperty()
  2. python pptp链接_渗透技巧——PPTP口令的获取与爆破
  3. 参数估计_数据分析|统计之一个总体参数估计(附代码)
  4. C++成员对齐方式探讨
  5. wave格式分析,wave音频文件格式分析配程序
  6. Java核心技术笔记 语言基础
  7. wifi卡慢延迟高_家里WiFi特别卡,网络延迟高,可能不是网速的问题
  8. Hadoop核心生态
  9. 霍尼韦尔发力中国互联市场
  10. java代码反编译 工具下载及注意事项 xjad下载
  11. 分库分表面试题及答案
  12. SAXReader解析
  13. ppt矩形里面的图片怎么放大缩小_如何在PPT中插入大量图片而又保持其美感?
  14. 小学生C++趣味编程 2023 01 09 测试
  15. 天亮说晚安,我们回家
  16. git worktree 的使用
  17. 中国石油大学《计算机文化基础》第一次在线作业
  18. RATER指数(转载)
  19. 爬取《斗破苍穹》小说全文
  20. 结构型模式中最能体现扩展性模式的是?

热门文章

  1. 尚硅谷-MySQL流程控制结构
  2. MATLAB-medfilt2函数的实现源代码
  3. java 怎么输入eof_java输入eof
  4. linux共享内存原IPCS,共享内存相关(ipcs/ipcrm)
  5. android查看内核版本号,Android获取系统内核版本的方法
  6. 解决HTML加载时,外部js文件引用较多,影响页面打开速度问题
  7. [ 云计算 | AWS ] 在控制台创建 Amazon EC2 实例
  8. 水声功率放大器(频率:150HZ-150KHZ 功率:1千瓦-45千瓦)
  9. 阿里云云效荣获首个可信云DevOps解决方案国家级标准先进级认证
  10. 【usb】linux内核USB键盘驱动解析--特殊键值转化及上报