问题描述
客户端A点一下调用服务器B程序中的一个函数fun,fun里面有一个循环,循环的每一步都要把结果反馈给客户端显示,而且速度要很快。socket好像可以解决,但自己封装太太太麻烦了,而且稳定性安全性还不能保证这个功能能用.netremoting实现吗,用里面什么机制,能否给点关键性的代码?效率怎么样?
解决方案
解决方案二:
可以的,效率不知道……
解决方案三:
remoting是同步的,就是说你一次调用,只能返回一次,不能象你想象的那样,调一次,不停的往客户端返回数据,做不到的,remoting其实也是一个request然后一个response同样原理的.楼上说的可以,可能是使用remoting事件,它不稳定不建议使用,楼主的想法是用SOCKETS也不容易,我也想不出用什么办法好.帮你顶吧.
解决方案四:
可以用TCP/IP,不过可以改改需求,不要查询那么频繁
解决方案五:
不要用函数调用,直接用socket通讯,你可以考虑用完成端口IO模型
解决方案六:
建立socket通讯比较合适。
解决方案七:
在客户端实现一个异步委托或线程用于接收服务端的数据.对于收到的数据的处理自然是在异步结果方法中处理了.以下是说明(源于vs随机文档):除了配置和.NET远程处理本身的要求外,远程处理方案中的异步编程与单个应用程序域或上下文中的异步编程相同。有关使用.NET远程处理以及同步和异步委托的完整示例,请参见远程处理示例:异步远程处理。如同单个应用程序域异步编程一样,在.NET远程处理方案中使用异步编程意味着:调用方决定一个特定远程调用是否为异步的。远程类型不必显式支持它们的客户端的异步行为。运行库强制实施完整的类型安全。必须适当使用System.Threading对象等待或同步您的方法。但是,在一个跨应用程序域或上下文边界进行调用的应用程序中,.NET远程处理要求您配置.NET远程处理系统,并且要求确保客户端编程模型也符合作为远程调用目标的条件。其原因很简单:如果使用异步调用,则可能会使用.NET远程处理系统将从服务器中调用的回调函数。例如,如果您将委托传递给(不能远程处理的)静态方法,或忘记将信道端口设置为“0”(以便使系统能够为您选择客户端端口),对服务器的调用可以完成,但因为对客户端的回调无法完成,您将无法得到结果。客户端不需要自行扩展MarshalByRefObject或配置任何远程类型,但除此之外,它必须与任何要成为服务器的远程类型遵循相同的规则:实例必须接收回调函数。信道必须注册以侦听回调函数。
解决方案八:
像你这种情况应该使用Socket这样效率更高一些如果你要使用Remoting实现的话,你可以像六楼说的那样在客户端实现一个异步委托或线程用于接收服务端的数据.通俗点说就是客户端定阅服务器的事件,这个例子也有很多,在网上就能找到的
解决方案九:
该回复于2008-04-08 09:43:18被版主删除
解决方案十:
TCP/IP
解决方案十一:
关注,学习!
解决方案十二:
切身体会,千万不要用Remoting,这个冬冬真的很难说。我自己用Remoting实现了一个简单的C/S结构,客户端可以登录、登出并查询一定的信息、服务器端可以查看登陆的用户列表,查看列表的活动情况,手动或者自动踢掉长时间不活动的客户端,客户端和服务器端可以互相发消息。那段时间我花了很大的精力在remoting的学习上,但是,就在我把整个框架搭到现在这个程度,看起来比较完善的程度的时候,我放弃了,重新用socket开发系统。我的问题和你的一样,实际上还是比较注重实时性的,用remoting实现c/s不是合理的选择,socket要成熟许多。如果你需要的话留下邮箱,我把我已经实现的这个框架源码发给你。最后建议你一定要用socket解决,并不很复杂,效率也要高很多!====================================◆◆◆◆◆◆====================================◆◆◆◆◆◆====================================
解决方案十三:
纠正一下2楼说的,是可以做到“调一次,不停的往客户端返回数据”的,用委托,可以实现。但是效率不高。
解决方案十四:
学习了