日期:2014-05-20  浏览次数:20816 次

Windows服务交互
现有一项目,服务端宿主采用Windows服务处理客户端提交的数据,客户端的请求出现异常的,会把该异常请求追加到一个全局队列.出于人工管理的需要,假若某时刻管理员A启动一个WinForm程序,要求该WinForm程序能读取Windows服务中的异常队列中的请求,并能将请求的异常部份进行修改再提交回Windows服务再次处理.
先说我的思路.

A.不使用全局队列,使用数据库存贮异常请求.启动WinForm时从数据库读取.
  预计问题:没有真正的交互,修改后再次处理请求时WinForm将会模拟成客户端,也就是说该管理程序将包含所有客户端功能,以后升级客户端时,必需将该WinForm同步.

B.使用MSMQ存贮异常请求信息.
  预计问题:同上. 除此之外,由于消息队列的特性,读取之后MSMQ消息将不存在,很容易丢失异常信息.

C.服务端开启两个监听线程,一个用于监听客户端请求,另一个用于监听管理程序.
  预计问题:性能损失;其他未知.

D.直接由服务产生一个GUI管理程序,启动时隐藏.
  预计问题:不太可取,GUI程序是否会在Windows未登录而服务已经启动时引发问题?

总结:
问题A:异常请求的存贮方案.
 PS:好像WebService程序会为每个请求单独创建一个服务对象,以达到负载均衡,Windows服务能否考虑Windows服务多线程处理方式?采用全局队列存贮是否会有影响?

问题B:交互或者再次处理异常的解决方案.

End:希望大家指教,如果有好的解决方案的,请不吝赐教.

------解决方案--------------------
关注...
------解决方案--------------------
为什么客户端不保存自己的异常信息,当下次启动的时候读取异常信息,然后重新发送上次出错的信息
------解决方案--------------------
做过类似的,与LZ一样也没有好的解决方案,等待好的解决方案的出现~
------解决方案--------------------
我是来打酱油接分的
------解决方案--------------------
学习
------解决方案--------------------
gz
------解决方案--------------------
mq用来存储消息是不合适的

最好还是用其他方式存储异常消息
------解决方案--------------------
GZ
------解决方案--------------------
用方法A,客户端做成b/s,管理程序和客户端一体,只是登录权限不同
------解决方案--------------------
UP
------解决方案--------------------
up!! 学习!!!!
------解决方案--------------------
推荐用A,+web
------解决方案--------------------
up!! 学习!!!!
------解决方案--------------------
up
------解决方案--------------------
up
------解决方案--------------------
文本日志保存 程序的运行日志一直是软件的常态.
------解决方案--------------------
对于异常,除了存根,当然就是处理.

存根,处理 有N个方法,其中有X个方法被大家公认为比较靠谱,比较in,比较流行,比较通俗...就不例举了.
------解决方案--------------------

------解决方案--------------------
顶,学习,关注!!!!!!!!!!!!
------解决方案--------------------
感觉A好些.....
------解决方案--------------------
用.net remoting将windows服务提供给客户端调用即可实现客户端与windows服务的实时交互
------解决方案--------------------
进来学习的,竟然90%是垃圾回复~~~csdn变化真大
------解决方案--------------------
我之前做的似乎是你所说的A,B的合体:启动时从DB读取(同时读取MQ的线程也启动),MQ的线程启动后会去读取相关信息,再处理。另外,为了确保没有装MQ服务的机器也能正确处理相关数据,后来又增加了个FTP服务读写数据的线程。
------解决方案--------------------
我的思路和A差不多
windows服务里收到客户端消息后立即存入数据库或者存入hash中再二进制序列化到文件里,然后判断该消息是否为异常消息,将判断结果反馈客户端,并更新数据库或文件
服务端的管理winform依赖数据库或文件