200高分请 思归、孟子 等 MVP 专家解答 .Net + COM+ 使用分布式方案出现无法解决的实际问题
前言:
实际应用中,若数据量大,分布式用 http,tcp, remoting 经过测试速度远远不如DCOM ;
问题一: 我用 .Net2.0 + COM+ 做服务组件后, 客户端访问应用服务器的名字只能用 计算机名称,而不能用 IP ,那如果我在跨多网段的环境下, 用计算机名不行,如何解决?
问题二: "服务器端 拒绝客户端访问 ", 在网上找了多少天了,唯一能解决的方案是在服务器端建帐号,然后客户也一样建,并且客端要用这个帐号进系统;
以上问题,若在实际应用中不解决,真是麻烦多多,请有过实际使用经验的前辈给点指点,我的 e_mail: jinwmmail@126.com , 问题解决,给多少分没问题!
[解决办法]
COM/COM+/DCOM在.net出来后基本不是主流的了
现在适合拿来和.net做个对比研究,我认为新项目中不应该继续用这个。
remoting 是个不错的选择,搂住认为很慢,这个有多种原因,可能是楼主在这方面花的时间不够,没有找到精髓所在。
当然clr平台耗资源这个是真的。
[解决办法]
建议读一些这方面的书 , 如
C# WEB服务高级编程——使用.NET REMOTING和ASP.NET创建WEB服
里面也讲到如何提高网络通行的性能,如何提高服务的处理能力等等
[解决办法]
你所需的技术很前沿哈
不懂,等孟子那位砖石级的高手来解
等待学习中。。。。。。。。。。。
[解决办法]
占个座先
洗耳恭听
[解决办法]
DCOM 不只是程序...去学习下Active Directory吧...有了基础环境的支持你会发现许多问题都迎刃而解...
[解决办法]
谢谢 vrhero(这个家伙很懒...) 的意见.
当然客户都登录到这台 DCOM 所在的 域控制器 就没题. 但实际上 客户端不一定将这台机台主要域控制器来进入,那企不是要用程序,就要进一下这个域?( 我是不太懂AD);即使这样,那跨多网段的调用用IP可以还是仍要用域中的计算机名?
[解决办法]
友情帮顶
[解决办法]
AD 是企业级架构,不是只有一台 DC(没有主要域控制器),也不是只能在局域网内跑...
AD 可以构建在 Internet 上遍布全球,在整个 AD 森林中是用域名来标识主机的...
这部分很复杂的,不是几句话能说清楚,建议你去看看微软的 Active Directory 相关的资料...
[解决办法]
> 实际应用中,若数据量大,分布式用 http,tcp, remoting 经过测试速度远远不如DCOM ;
这应该与你的实现方式有关,从理论上讲,TCP应该是最快的。你觉得数据量大时太慢,应该是因为你用TCP时想一次性传送所有数据,而DCOM则可能使用了类似自动分页的功能。
DCOM的技术思想过于陈旧了,主要应用于局域网,已经不适合现在的互联网与防火墙的时代了。
[解决办法]
客户端不一定将这台机台主要域控制器来进入,那企不是要用程序,就要进一下这个域?
-----
关于这点,AD 是 SingleLogin,只要登录到任意一台 DC,就会得到整个 AD 森林的安全凭证...
利用 Windows 集成身份验证用户甚至没有显式登录应用程序的过程,因为登录到 Windows 时已经获得安全凭证,在退出登录之前都可以用它来验证...
[解决办法]
我开始做系统是也是在internet上太慢,后来改用ftp传输数据,发现好多了。
[解决办法]
DCOM的技术思想过于陈旧了,主要应用于局域网,已经不适合现在的互联网与防火墙的时代了。
-----------
存在即合理,你没见过真正的企业级应用怎么就敢说“过于陈旧”?互联网也是“局域网”组成的...
[解决办法]
分布式程序瓶颈在网络速度,并不在乎你本地运算速度的差异!你可用 remoting传输二进制数据!
[解决办法]
如果应用环境时internet,你应该考虑的是webservice,至于速度慢,那应该从其它方面想办法解决,比如减少返回的记录数,异步调用,分页,自己使用2进制序列化数据及几种方式组合使用等等来提高效率。
[解决办法]
To vrhero(这个家伙很懒...) :
> 存在即合理,你没见过真正的企业级应用怎么就敢说“过于陈旧”?互联网也是“局域网”组成的...
你怎么知道我没见过真正的企业级应用? 我就是设计与开发企业级软件产品的,我们上一代产品用的就是用的DCOM,不说别的,光是为了DCOM穿越防火墙,就已经头破血流了。
[解决办法]
学习ing ...
[解决办法]
做个标记
[解决办法]
remoting也可穿透防火墙,remoting可配置为Http通道
[解决办法]
说DCOM过时了,说明你根本不懂DCOM,在大数据量的时候,其优点不是什么WEB SERVICE所能比拟的!
问题一: 我用 .Net2.0 + COM+ 做服务组件后, 客户端访问应用服务器的名字只能用 计算机名称,而不能用 IP ,那如果我在跨多网段的环境下, 用计算机名不行,如何解决?---应该可以用IP的,DELPHI的组件就可以
问题二: "服务器端 拒绝客户端访问 ", 在网上找了多少天了,唯一能解决的方案是在服务器端建帐号,然后客户也一样建,并且客端要用这个帐号进系统;---不会吧,开放EVERYONE就可以了
[解决办法]
对了,如果你用Remoting处理大量数据,建议你使用Binary隧道,而非SOAP,SOAP太多标记的东东了
[解决办法]
还有,为什么动则上万条记录那,难道是企业对企业的数据传送,否则的话,恐怕是楼主设计的问题,比如DataSet,直接Serialize后就穿过过去了,是不是没有作优化啊
[解决办法]
帮顶下
[解决办法]
长见识,帮顶一下!
[解决办法]
呵呵,soap是基于xml,而object 序列化为xml本身数据量就很大。所以传输是就比较慢,但soap是通用的,跨平台的协议
[解决办法]
1。IP应该可以的,在服务器与客户端机器间能PING通么?机器间有什么特别配置么?
火墙?代理服务器?
2。参考一下这篇KB文章:
http://support.microsoft.com/kb/810153/zh-cn (中文)
http://support.microsoft.com/kb/810153 (英文)
[解决办法]
大大来了
[解决办法]
大批量的数据传送,你可以用某种压缩算法先压缩,甚至可以直接执行外部winrar,文本数据的压缩量是惊人的.
如果是图像或电影,就当我没说
[解决办法]
用硬件vpn解决 不行吗 dcom在打包 的 时候可以指定 匿名登陆 至少vb可以做到
[解决办法]
AD还是不错.
[解决办法]
up
[解决办法]
我的电脑也是XP_SP2用IP访问服务可以的啊,不知道是不是你的网络什么设置有问题还是你的程序有问题,你去网上下个REMOTING的实例吧,有个简单的remotingchatroom就很好。慢的话有可能要比DCOM慢一点,但也没有你说的那样吧。(其实“新技术”都一般要比旧的慢一点的,呵呵,因为新的是在旧的基础上发展过来的嘛~~,只是随着硬件设备的发展就变得不重要了。)
[解决办法]
up.
[解决办法]
问题一: 我用 .Net2.0 + COM+ 做服务组件后, 客户端访问应用服务器的名字只能用 计算机名称,而不能用 IP ,那如果我在跨多网段的环境下, 用计算机名不行,如何解决?
修改C:\WINDOWS\system32\drivers\etc\hosts文件
问题二: "服务器端 拒绝客户端访问 ", 在网上找了多少天了,唯一能解决的方案是在服务器端建帐号,然后客户也一样建,并且客端要用这个帐号进系统;
没有域是这样的,或者服务器端开放匿名访问。
客户端用什么账号登录系统其实是没关系的,关键是客户端程序用什么账户执行的。
[解决办法]
帮顶.
[解决办法]
算了,结帖,第二个问题那就还是进域吧.
当然如果哪位看到此帖有解决方案,别忘告之 jinwmmial@126.com