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依赖数据库或文件