用WCF实现对无人终端的远程监控

最近在项目中,遇到了一个需要在远程监视自动运行软件的实时情况的例子。因为MS面向服务方面有 WCF,而且看了一些资料,觉得WCF比较适合这个应用。因此决定用WCF来实现这个功能。

首先,先说一下具体的应用,监控,顾名思义,有两个方面的意思,一方面是”监”,也就是远程要 能实时查看终端的各种情况。这里其实指的就是被监控的要能主动的,实时的向远程控制端发送自己的情 况。另一方面是控,即远程端能够发布命令控制终端进行执行。并由终端返回一定的执行信息。

而且这里是一种一对一对多的关系,即一个终端可以被多个管理端监控。实际上一个管理端也可以监 控多个终端,在是这种分析中,我们可以明白,真正运行服务的是终端,而不是管理端。

简单起见,假定远程发送命令的操作是void Operation(),终端更新的操作是UpdateStatus();

这个想法,从设计到实现,经历以下三种阶段的变形。

最初的想法,是一个Service类。一个接口。即

即控制端调用operation发送命令,终端调用UpdateStatus更新状态。

对应的,要有一定的回调,即控制端发送Operation时,终端要有一个callBack进行接收,相应的,当 终端用UpdateStatus时,控制端也要有一个callBack进行接收。

当这两种操作被集成到一个服务中时,我们的wcf接口变成了如下结构。

namespace Geyunfei.WCF
{
    [ServiceContract(

    SessionMode = SessionMode.Required
   ,
  CallbackContract = typeof(ISeviceCallBack)
         )]
    public interface IService
    {
        [OperationContract]
        /// <summary>
        /// 远程发送控制命令
        /// </summary>
        ///
        void Operation();

        [OperationContract]
        /// <summary>
        /// 更新状态
        /// </summary>
        void UpdateStatus();
    }
   
    public interface ISeviceCallBack
    {

     
        void ReceiveStatus();
       
        void ReceiveCommand();
    }
    public static class Global
    {
        public static List<ISeviceCallBack> callBacks = new List<ISeviceCallBack>();
    }
    [ServiceBehavior]
    public class Service : IService,IDisposable
    {
        ISeviceCallBack callBack;
        #region IService Members
        public Service()
        {
            callBack = System.ServiceModel.OperationContext.Current.GetCallbackChannel<ISeviceCallBack> ();

            Global.callBacks.Add(callBack);
          
        }

        /// <summary>
        /// 当服务端调用这个时,向终端发命令
        /// </summary>
        public void Operation()
        {

            foreach (var r in Global.callBacks)
            {
                r.ReceiveCommand();
            }
        }
        /// <summary>
        /// 当终端调用时,向服务端发命令
        /// </summary>
        public void UpdateStatus()
        {
            foreach (var r in Global.callBacks)
            {
                r.ReceiveStatus();
            }
        }

        #endregion

        #region IDisposable Members

        public void Dispose()
        {
            Global.callBacks.Remove(this.callBack);
        }

        #endregion
    }
}

时间: 2024-12-23 18:54:05

用WCF实现对无人终端的远程监控的相关文章

艾伟:用WCF实现对无人终端的远程监控

最近在项目中,遇到了一个需要在远程监视自动运行软件的实时情况的例子.因为MS面向服务方面有WCF,而且看了一些资料,觉得WCF比较适合这个应用.因此决定用WCF来实现这个功能. 首先,先说一下具体的应用,监控,顾名思义,有两个方面的意思,一方面是"监",也就是远程要能实时查看终端的各种情况.这里其实指的就是被监控的要能主动的,实时的向远程控制端发送自己的情况.另一方面是控,即远程端能够发布命令控制终端进行执行.并由终端返回一定的执行信息. 而且这里是一种一对一对多的关系,即一个终端可以

使用树莓派实现微信远程监控

关键字:树莓派 微信公众平台 硬件 远程监控 远程控制 年初的时候用mk802+arduino做了一个小项目, 实现获取室内温度.湿度,视频监控, 远程开关控制等功能, 用了手机微信做了客户端.后来看见网上介绍有树莓派这个好玩的硬件, 于是想把这个小项目移植到树莓派上.到手后用了一天时间移植了过去(安装配置系统花了不少时间...).   下面我分享一下用树莓派实现微信公共平台服务器的一些心得吧,和大家一起学习研究, 开发树莓派的潜力, 实现更多好玩神奇的功能.教程需要你了解一点python. 1

刀片服务器产品的必杀技远程监控

随着刀片服务器销量的不断增长和刀片服务器部署的不断扩大,如何在预算压力增大.IT服务要求持续提升的压力下,控制刀片服务器的管理成本成了多数 IT 组织的当务之急,而具备远程监控与管理功能则是解决这一问题最根本的途径. 来自IDC的两方面的信息,让我们不得不直面刀片服务器的管理问题. 一方面,IDC估计,从1996年到2008年,全球需要管理的服务器数量将从 500 万台增加到近3500万台.其中在新服务器硬件上的投入预计达到 5000万美元到 7000万美元之间.而在维护方面,IDC估计企业和政

Java VisualVM远程监控JVM

   VisualVM是一个以监控.显示本地或者远程服务器JVM工作情况,进行性能调优的工具.借助VisualVM,我们可以实现对JVM内存各个子池.CPU.垃圾收集器等方面进行监控,从而发现程序代码中潜在的泄露点和配置问题. 远程监控Linux JVM有两种连接方式: CentOS6.5安装:yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel Ubuntu12.04安装:sudo apt-get install java-7-open

JAVA VirtualVM远程监控配置

Virtual VM是JDK6 Update7之后推出的工具,有集合其它JDK工具的倾向,目前JDK7的版本已经支持绝大部分的监控功能,好像还不能像Jprofile和Youkit那样支持实时跟踪内存堆栈来定位内存泄露问题. 对于远程应用的连接,Virtual VM提供两种方式:JMX和jstatd,下面介绍这两种连接的配置. JMX: 在远程服务器上的 jdk 目录下的jre/lib/management下找到jmxremote.password.template文件,然后将其复制为pwd.fi

网络人手把手教你打造远程监控系统

网络人远程控制软件这款利器,对于远程监控环境的打造有自身得天独厚的优势,力求用最简单的操作实现最强大的远程监控功能,从而为用户建立起安全.高效的远程监控体系. 话不多说,下面小编跟大家一起到网络人官网免费下载(http://netman123.cn/download.asp)远程监控软件后,开始一步步地安装,Let's Go! 网络人监控软件安装方法: 要实现远程监控,首先要在控制双方电脑都安装网络人软件.可以到网站上免费下载安装软件.解压后里面有办公版和监控版两个版本,双击安装监控版.默认安装

网络人远程控制软件不记IP实现远程监控的方法

网络人远程控制软件不记IP就能实现远程监控哦!你知道吗?不知道也没关系,在这里我们就回来详细说说这要如何实现! 网络人(Netman)个人版是一款完全免费的远程控制软件,通过输入对方的IP和控制密码,或者申请会员,记住会员号和密码(不用记IP)就能实现远程监控.软件使用UDP协议穿透内网, 网络人远程控制软件不用做端口映射,用户就能在任何一台可以上网的电脑都连接远端电脑,进行远程办公和远程管理.它是正规合法的软件,不会被杀毒软件当作病毒查杀,不会影响系统的稳定性,那网络人远程控制软件不用记IP就

网络人远程监控3步隐蔽监控

网络人是国内惟一获得公安部认证,同时,是国内首款可穿透内网.完全免费.并采用U盾安全加密的远程控制软件;并通过国内外几十款权威杀毒软件的安全检查.网络人可实现远程开机.关机,远程控制电脑,快速上传下载.修改文件,语音文字聊天,远程开启摄像头等功能.下面笔者主要介绍如何利用网络人远程监控软件进行完全隐蔽的监控. 先到网络人官网免费下载远程控制软件并按照教程安装注册好,然后经过下面简单的3步操作即可实现完全隐蔽的监控. ▲"设置"--"常规设置"--"启动会员

怎样操作电脑进行隐蔽的远程监控 

互联网让世界真正开放起来;而免费的网络人远程监控软件在远程监控领域的脱颖而出,无疑是锦上添花之举.使用远程监控软件,你可以轻松享受远程办公生活的高效.便捷,以及即时远程监控带来的前所未有的安全感. 网络人远程控制软件监控版(免费下载地址:http://netman123.cn/download.asp),会员登录后再连接,被控制的远程电脑无任何提示,对方不会发觉.适用范围广,可用于远程监控.远程办公.远程教育.远程维护.远程协助等领域.无论在家还是在旅途中,只要运行远程监控软件,就能够隐蔽.安全