您的位置:程序门 -> .net技术 -> c#



200高分请 思归、孟子 等 mvp 专家解答 .net + com+ 使用分布式方案出现无法解决的实际问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


200高分请 思归、孟子 等 mvp 专家解答 .net + com+ 使用分布式方案出现无法解决的实际问题[已结贴,结贴人:kingtech]
发表于:2007-03-28 15:38:19 楼主
前言:
实际应用中,若数据量大,分布式用   http,tcp,   remoting   经过测试速度远远不如dcom   ;

问题一:   我用   .net2.0   +   com+   做服务组件后,   客户端访问应用服务器的名字只能用   计算机名称,而不能用   ip   ,那如果我在跨多网段的环境下,   用计算机名不行,如何解决?

问题二: "服务器端   拒绝客户端访问   ",   在网上找了多少天了,唯一能解决的方案是在服务器端建帐号,然后客户也一样建,并且客端要用这个帐号进系统;

以上问题,若在实际应用中不解决,真是麻烦多多,请有过实际使用经验的前辈给点指点,我的   e_mail:   jinwmmail@126.com   ,   问题解决,给多少分没问题!
发表于:2007-03-28 15:54:111楼 得分:3
com/com+/dcom在.net出来后基本不是主流的了
现在适合拿来和.net做个对比研究,我认为新项目中不应该继续用这个。

remoting   是个不错的选择,搂住认为很慢,这个有多种原因,可能是楼主在这方面花的时间不够,没有找到精髓所在。
当然clr平台耗资源这个是真的。


发表于:2007-03-28 15:57:092楼 得分:3
建议读一些这方面的书   ,   如
c#   web服务高级编程——使用.net   remoting和asp.net创建web服

里面也讲到如何提高网络通行的性能,如何提高服务的处理能力等等
发表于:2007-03-28 16:01:373楼 得分:0
xiaxilin(good   good   study,   day   day   up!)     说的是有道理,我当然想过,

可是我的用户,一些查询动刚几万条记录,   我用   dcom   试过在局域网内不觉得慢,可是用   remoting     的   http,tcp   慢很多.  

想到花了很多心血做个应用,在实际中反应太慢,用户抱怨就太大,那这个项真是失败.那如果我能用dcom   就好了.
发表于:2007-03-28 16:09:264楼 得分:3
你所需的技术很前沿哈
不懂,等孟子那位砖石级的高手来解
等待学习中。。。。。。。。。。。
发表于:2007-03-28 16:18:035楼 得分:0

难道就没有人   将   .net   +   dcom   作实际应用?!

如有那是怎么解决上面2个问题呢?

只好自已顶啊!
发表于:2007-03-28 16:26:446楼 得分:3
占个座先
洗耳恭听
发表于:2007-03-28 16:35:297楼 得分:3
dcom   不只是程序...去学习下active   directory吧...有了基础环境的支持你会发现许多问题都迎刃而解...
发表于:2007-03-28 16:43:388楼 得分:3
谢谢   vrhero(这个家伙很懒...)     的意见.

当然客户都登录到这台   dcom   所在的   域控制器   就没题.   但实际上   客户端不一定将这台机台主要域控制器来进入,那企不是要用程序,就要进一下这个域?(   我是不太懂ad);即使这样,那跨多网段的调用用ip可以还是仍要用域中的计算机名?
发表于:2007-03-28 16:48:489楼 得分:3
友情帮顶
发表于:2007-03-28 16:53:0610楼 得分:3
ad   是企业级架构,不是只有一台   dc(没有主要域控制器),也不是只能在局域网内跑...
ad   可以构建在   internet   上遍布全球,在整个   ad   森林中是用域名来标识主机的...
这部分很复杂的,不是几句话能说清楚,建议你去看看微软的   active   directory   相关的资料...
发表于:2007-03-28 16:57:3111楼 得分:3
>   实际应用中,若数据量大,分布式用   http,tcp,   remoting   经过测试速度远远不如dcom   ;
这应该与你的实现方式有关,从理论上讲,tcp应该是最快的。你觉得数据量大时太慢,应该是因为你用tcp时想一次性传送所有数据,而dcom则可能使用了类似自动分页的功能。

dcom的技术思想过于陈旧了,主要应用于局域网,已经不适合现在的互联网与防火墙的时代了。
发表于:2007-03-28 17:02:5312楼 得分:3
客户端不一定将这台机台主要域控制器来进入,那企不是要用程序,就要进一下这个域?
-----
关于这点,ad   是   singlelogin,只要登录到任意一台   dc,就会得到整个   ad   森林的安全凭证...
利用   windows   集成身份验证用户甚至没有显式登录应用程序的过程,因为登录到   windows   时已经获得安全凭证,在退出登录之前都可以用它来验证...
发表于:2007-03-28 17:04:3813楼 得分:3
我开始做系统是也是在internet上太慢,后来改用ftp传输数据,发现好多了。
发表于:2007-03-28 17:05:5814楼 得分:3
dcom的技术思想过于陈旧了,主要应用于局域网,已经不适合现在的互联网与防火墙的时代了。
-----------
存在即合理,你没见过真正的企业级应用怎么就敢说“过于陈旧”?互联网也是“局域网”组成的...
发表于:2007-03-28 17:24:1615楼 得分:3
分布式程序瓶颈在网络速度,并不在乎你本地运算速度的差异!你可用   remoting传输二进制数据!
发表于:2007-03-28 17:24:3216楼 得分:3
如果应用环境时internet,你应该考虑的是webservice,至于速度慢,那应该从其它方面想办法解决,比如减少返回的记录数,异步调用,分页,自己使用2进制序列化数据及几种方式组合使用等等来提高效率。
发表于:2007-03-28 17:38:2617楼 得分:3
to   vrhero(这个家伙很懒...)   :
>   存在即合理,你没见过真正的企业级应用怎么就敢说“过于陈旧”?互联网也是“局域网”组成的...

你怎么知道我没见过真正的企业级应用?   我就是设计与开发企业级软件产品的,我们上一代产品用的就是用的dcom,不说别的,光是为了dcom穿越防火墙,就已经头破血流了。
发表于:2007-03-28 17:46:0718楼 得分:3
学习ing   ...
发表于:2007-03-28 17:53:4319楼 得分:3
做个标记
发表于:2007-03-28 18:07:0920楼 得分:3
remoting也可穿透防火墙,remoting可配置为http通道
发表于:2007-03-28 19:13:0521楼 得分:0
在这里我再次表达一下我的需求:

        我只是想认我的应用在局域网内(至少暂时),   但要跨多个网段,   而且一次查询   2w+-的记录速度不应太慢.

我的重点是想解决帖子提的两个问题.

说实话我现在维护着一个   c++   builder   5.0   写的三层架构应用,只是中间层没源码我们才想自已用   c#   2.0   重写.
发表于:2007-03-28 19:22:4222楼 得分:3
说dcom过时了,说明你根本不懂dcom,在大数据量的时候,其优点不是什么web   service所能比拟的!


问题一:   我用   .net2.0   +   com+   做服务组件后,   客户端访问应用服务器的名字只能用   计算机名称,而不能用   ip   ,那如果我在跨多网段的环境下,   用计算机名不行,如何解决?---应该可以用ip的,delphi的组件就可以

问题二: "服务器端   拒绝客户端访问   ",   在网上找了多少天了,唯一能解决的方案是在服务器端建帐号,然后客户也一样建,并且客端要用这个帐号进系统;---不会吧,开放everyone就可以了
发表于:2007-03-28 19:58:3423楼 得分:3
对了,如果你用remoting处理大量数据,建议你使用binary隧道,而非soap,soap太多标记的东东了
发表于:2007-03-28 20:00:5524楼 得分:3
还有,为什么动则上万条记录那,难道是企业对企业的数据传送,否则的话,恐怕是楼主设计的问题,比如dataset,直接serialize后就穿过过去了,是不是没有作优化啊
发表于:2007-03-28 20:45:0625楼 得分:3
帮顶下
发表于:2007-03-28 21:16:1626楼 得分:3
长见识,帮顶一下!
发表于:2007-03-28 21:34:3127楼 得分:0
谢谢   ok999ok(freeman)     的回答:

  1   用ip是不行,我实际试了,网上也有很这样的问题;

  2   在我知道的信息内,我当然会开通   everyone,   还有   anymouns   ...,   但还是不行.   网上也有很多类似的帖子.

有同感,   delphi   和   c++   builder   就不会这样!

我想第二个问题应该可以决,   总是会在哪个策略或属性改一改就可以了,可惜我找了好久我不知道.   急啊!   经理正要为这事定案,到底是用   dcom,   还是remoting.  
上面有前辈说的是实话,dcom快,   没什么过时.   而且是很多大项目应用了的.
发表于:2007-03-28 21:37:0928楼 得分:3
呵呵,soap是基于xml,而object   序列化为xml本身数据量就很大。所以传输是就比较慢,但soap是通用的,跨平台的协议
发表于:2007-03-28 22:54:3029楼 得分:3
1。ip应该可以的,在服务器与客户端机器间能ping通么?机器间有什么特别配置么?
火墙?代理服务器?

2。参考一下这篇kb文章:
http://support.microsoft.com/kb/810153/zh-cn   (中文)
http://support.microsoft.com/kb/810153   (英文)
发表于:2007-03-28 23:16:3830楼 得分:3
大大来了
发表于:2007-03-28 23:43:1931楼 得分:3
大批量的数据传送,你可以用某种压缩算法先压缩,甚至可以直接执行外部winrar,文本数据的压缩量是惊人的.

如果是图像或电影,就当我没说
发表于:2007-03-29 07:57:4132楼 得分:3
用硬件vpn解决   不行吗     dcom在打包   的   时候可以指定   匿名登陆   至少vb可以做到
发表于:2007-03-29 08:38:2333楼 得分:3
ad还是不错.
发表于:2007-03-29 08:48:2534楼 得分:0
saucer(思归)     终于出来了,谢谢!

      "1。ip应该可以的 "     ip   不行,   我的环境   xp_sp2   客户端,   w2003_sp1   服务器;     同在一个局域网网段,   当我将客户端上的   dcom   代理指向的服务器改为ip时,   运行程序马上提示   服务没启动,   当再改回服务器的计算机名时,   就可以了;   (   这样要是在不用域的情况下,跨网段如何用   dcom   ?   )
       
谢谢   zyg0(影子(加班,加班,再加班)   的提示:

"dcom在打包   的   时候可以指定   匿名登陆 "   我当然已将权限降到我能做到的低了.
 
我上次看到有个   blog   说只有   xp   _   sp2   做   服端时才有这个问题,其实我现在是   w2003_sp1   做服务端还是一样.
发表于:2007-03-29 08:56:4635楼 得分:2
up
发表于:2007-03-29 09:39:0136楼 得分:3
我的电脑也是xp_sp2用ip访问服务可以的啊,不知道是不是你的网络什么设置有问题还是你的程序有问题,你去网上下个remoting的实例吧,有个简单的remotingchatroom就很好。慢的话有可能要比dcom慢一点,但也没有你说的那样吧。(其实“新技术”都一般要比旧的慢一点的,呵呵,因为新的是在旧的基础上发展过来的嘛~~,只是随着硬件设备的发展就变得不重要了。)
发表于:2007-03-29 11:21:4337楼 得分:0
javak()   不知你说的ip可以访问是指   remoting   ,   还是   dcom+   服务.
 
remoting   当然可以啊!   我说的是     .net   2.0   +   com+   服务的   分布式应用.

发表于:2007-03-29 11:35:5138楼 得分:3
up.
发表于:2007-03-29 11:39:5839楼 得分:3
问题一:   我用   .net2.0   +   com+   做服务组件后,   客户端访问应用服务器的名字只能用   计算机名称,而不能用   ip   ,那如果我在跨多网段的环境下,   用计算机名不行,如何解决?

修改c:\windows\system32\drivers\etc\hosts文件

问题二: "服务器端   拒绝客户端访问   ",   在网上找了多少天了,唯一能解决的方案是在服务器端建帐号,然后客户也一样建,并且客端要用这个帐号进系统;

没有域是这样的,或者服务器端开放匿名访问。
客户端用什么账号登录系统其实是没关系的,关键是客户端程序用什么账户执行的。
发表于:2007-03-29 14:28:1640楼 得分:0
有点收获,   问题一已解决,可以用   com   客户端可以用   ip   访问   com   服务器;

我刚又用大数据量测试了数据传输速度,   仅仅重复运行同一个程序的响映速度,   com   都比   remoting   快十倍(估计);

用remoting   的方式,重复运行同一个程序,插入一条记录至数据,每次也要运行几秒才有反映!
而用   dcom   ,   运行同一个程序,   人能看到画面,数据已插入数据库了!!!!

有兴趣的可以作个测试试试.     现在是第二个问题没有解决,急啊!
我本想用   .net+   dcom+     重写原来用   bcb   5.0   写的应用.   毕竟   c#     写别的方面还是很方便.
发表于:2007-03-29 14:28:2441楼 得分:0
有点收获,   问题一已解决,可以用   com   客户端可以用   ip   访问   com   服务器;

我刚又用大数据量测试了数据传输速度,   仅仅重复运行同一个程序的响映速度,   com   都比   remoting   快十倍(估计);

用remoting   的方式,重复运行同一个程序,插入一条记录至数据,每次也要运行几秒才有反映!
而用   dcom   ,   运行同一个程序,   人能看到画面,数据已插入数据库了!!!!

有兴趣的可以作个测试试试.     现在是第二个问题没有解决,急啊!
我本想用   .net+   dcom+     重写原来用   bcb   5.0   写的应用.   毕竟   c#     写别的方面还是很方便.
发表于:2007-03-29 14:37:3142楼 得分:0
对了,   .net企业服务框架:应用.net企业服务开发分布式业务解决方案        
    (美)christian   nagel(克里斯琴内格尔)著;夏桅   金雪根   译
这本书作者提到了
 
发表于:2007-03-29 18:54:0943楼 得分:1
帮顶.
发表于:2007-03-29 18:54:3044楼 得分:1
算了,结帖,第二个问题那就还是进域吧.

当然如果哪位看到此帖有解决方案,别忘告之   jinwmmial@126.com


快速检索

最新资讯
热门点击