500分讨论.客户端如何知道中间层已经关闭?好像还没什么好的方法.(200分)

  • 主题发起人 主题发起人 marknew
  • 开始时间 开始时间
M

marknew

Unregistered / Unconfirmed
GUEST, unregistred user!
三层架构.无论通过何种方式连接,如果手工或意外关闭中间层.客户端程序调用中间层方法时就会出错,如何判断中间层是否已关闭?
 
学习。。。
 
欢迎大家踊跃发言,分是小意思,再加500分都可以.
 
呵呵。。。
客户端程序调用中间层方法时就会出错,捕捉异常不就可以判断中间层关闭吗?
 
为什么需要判断呢?中间层如果关闭了还是会自动打开的。
 
“客户端程序调用中间层方法时就会出错”
这句话还不能判断中间层是否关闭吗?
 
to hotyei:手工关闭中间层后,中间层不会自动打开的,我测试过的,前提是客户端不退出.
即使通过“客户端程序调用中间层方法时就会出错”来判断,又如何在客户端去重启中间层?
如果是服务器DOWN机呢?
客户端程序调用中间层方法时就会出错也不一定就是中间层关闭了,希望大家能深入一点.不知各位真正搞过没有.
 
目前只能判断是否连接成功。
 
总而言之连不上出难看的错误的(当然可以在try..except中处理).我的目的是想告诉客户到底是什么原因出错的,是由于他手痒关闭了中间层,还是服务器死机或是其它原因.我记得以前有人问过这个问题,结果是不了了之.解决这个问题我认为还是很有意义的.大家不要人云亦云,一定是有解决办法的.
如果实在不行到时也只好发分.
 
我觉得还是应该在中间层进行控制,如果当前还有用户在连线,则不要退出。
 
如果关闭再打开客户端连接应该可以重启服务器吧
 
看样子又是一个无言的结局.
 
我觉得这个问题没有太好的方法,因为出错原因太多了,sqlserver 如果连不上的话好像也只是提示什么server不可访问云云,也没具体提示是服务停了还是server关等具体原因。
实在要做的话,可以调用异常之后ping一下服务器,可以确定服务器是否可以访问。
 
在界面上放个ApplicationEvents1 然后通过捕捉E.message的错误信息进行相应的错误处理就得啦!
 
就这样了?还有没有什么建设性的想法?谢谢各位
 
服务器关闭后,可不可以给客户端发个消息,告诉客户端,服务器已经关闭?
 
这个问题是一个很复杂的问题,marknew老大也不要这么急着有结论:)
在分布式领域里应该说至今还没有完美解决许多问题,这个问题只能说是其中一个而已,比如说经典的分布式7种错误假设:
•
网络是可靠的。
•
延迟(latency)是零。
•
带宽(Bandwith)是无限的。
•
网络是安全的。
•
拓扑(Topology)不变。
•
只有一个管理员。
•
传输无代价。
永远无战争,而且电压稳定:)这条是我胡乱加的
每一个情况都会引起难以处理的难题!
废话扯远了。
对于怎么知道中间层的意外不可到达,我提一个建议:就是建立一个“心跳周期”
其实好多系统也是这样做的哦,欢迎指正
 
其實你可以多架幾個中間層,如果一個中間層不行了,則用另一個中間層。用負載平衡實現。
 
好好!欢迎继续!终于听到了一些不一样的东西了
 
后退
顶部