Windows服务交互,该如何处理
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:希望大家指教,如果有好的解决方案的,请不吝赐教.
人外姬阿洛
13 years, 7 months ago