DCOMConnection与SocketConnection
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相关推荐
- Delphi三层开发小技巧:TClientDataSet的Delta妙用
Delphi三层开发小技巧:TClientDataSet的Delta妙用 Delphi做三层开发时,很多人都会在客户端放一个TClientDataSet,中间层远程数据模块就对应放一个TDataSet ...
- delphi mysql 三层_Delphi XE 10 跨平台三层数据库应用 datasnap
(1)生成DataSnap服务器的框架 初学者都是呆子,还是用向导吧,主菜单"File"->"New"->"Other-"得到& ...
- DapaSnap简介
一.DataSnap(一) DataSnap到了Delphi2010有了很大的变化,已经可以完全抛弃DCOM之类的东西了,在以前版本中建立一个DataSnap,需要使用DCOMConnection或者 ...
- 捕获SocketConnection组件连接异常的几个好贴
1.多层分布式结构中怎样动态的判断客户端与服务器是否断开? 2.请问能捕捉SocketConnection的连接错误事件吗? 3.用SocketConnection开发的三层应用程序,客户端程序关闭时 ...
- [JavaME]手机申请移动分配的动态IP(3)?
获取IP后是否可以和它通讯呢?<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...
- bde oracle 商友的流程_bde oracle 商友的流程_BDE动态连接Oracle数据库
BDE动态连接Oracle数据库 说明:系统是三层架构:数据库是Oracle9, Server采用BDE连接数据库,使用scktsrvr.exe,Client采用SocketConnection连接到 ...
- Android 10.0系统启动之init进程-[Android取经之路]
摘要:init进程是linux系统中用户空间的第一个进程,进程号为1.当bootloader启动后,启动kernel,kernel启动完后,在用户空间启动init进程,再通过init进程,来读取ini ...
- Android SystemProperties系统属性分析
原文地址:https://skytoby.github.io/2019/Android%20SystemProperties%E7%B3%BB%E7%BB%9F%E5%B1%9E%E6%80%A7%E ...
- .net平台下C#socket通信(中)
本文主要讲述: 1.正常通信中握手建立 2.一对多的通信 3.发送接收数据格式转换 4.资源释放 5.开启并保持服务监听 1.握手建立正常的通信通道 项目需要通信的双方(假设是一个上位机.一个下位机) ...
最新文章
- Object.defineProperty()
- python pptp链接_渗透技巧——PPTP口令的获取与爆破
- 参数估计_数据分析|统计之一个总体参数估计(附代码)
- C++成员对齐方式探讨
- wave格式分析,wave音频文件格式分析配程序
- Java核心技术笔记 语言基础
- wifi卡慢延迟高_家里WiFi特别卡,网络延迟高,可能不是网速的问题
- Hadoop核心生态
- 霍尼韦尔发力中国互联市场
- java代码反编译 工具下载及注意事项 xjad下载
- 分库分表面试题及答案
- SAXReader解析
- ppt矩形里面的图片怎么放大缩小_如何在PPT中插入大量图片而又保持其美感?
- 小学生C++趣味编程 2023 01 09 测试
- 天亮说晚安,我们回家
- git worktree 的使用
- 中国石油大学《计算机文化基础》第一次在线作业
- RATER指数(转载)
- 爬取《斗破苍穹》小说全文
- 结构型模式中最能体现扩展性模式的是?
热门文章
- 尚硅谷-MySQL流程控制结构
- MATLAB-medfilt2函数的实现源代码
- java 怎么输入eof_java输入eof
- linux共享内存原IPCS,共享内存相关(ipcs/ipcrm)
- android查看内核版本号,Android获取系统内核版本的方法
- 解决HTML加载时,外部js文件引用较多,影响页面打开速度问题
- [ 云计算 | AWS ] 在控制台创建 Amazon EC2 实例
- 水声功率放大器(频率:150HZ-150KHZ 功率:1千瓦-45千瓦)
- 阿里云云效荣获首个可信云DevOps解决方案国家级标准先进级认证
- 【usb】linux内核USB键盘驱动解析--特殊键值转化及上报