最近有个项目,大致需求是,服务端发送消息通知客户端上传指定的数据,然后处理后一部分显示在服务端界面上。也是在网上胡乱搜索一片,看到一篇Remoting广播事件的博客+Remoting觉得这么还可以做。
大致原理是:通过服务端广播事件,客户端通过调用远程类将数据以参数的方式传给服务端,然后xx服务端界面层的事件就达到双向了。都是靠远程类里的2个事件,一个给服务端,一个给客户端,分别交叉执行。这就相当于: 服务端界面--远程类--客户端界面,远程类起到了一个中间人的作用样,是吧?
先看看服务端封装的Remoting的类
下面2句代码特别的重要是服务端界面能和客户端共同操作的远程类
接下来看看客户端的Remoting是怎么样的
是通过HTTP协议的,如果是域名的话,好像要先解析成IP吧?连接服务端,获取远程对象,给出属性返回让客户端界面能操作远程类
接下来就是客户端连接的代码,连接成功后,取出远程类,关联远程类的事件
上面代码中参数TXT==A,那是我自己胡弄的一个标识,不重要,然后获取客户端的IP和硬盘信息,通过调用AddInfo方法传给服务端原程类。
在远程类中有事件处理的方法,在AddInfo方法内会调用,那么关联服务端界面的方法就会被执行,数据也通过参数传递过去了
上面这个就是原创类了,是继承于接口IMessage
接口和远程类是不同的类库生成的DLL,在服务端2个都会被调用,但是客户端只会调用接口的DLL,中间还有一个事件适配器吧?是这么叫的吧?这个方式源于Remoting服务端事件广播
这2个的关系我到现在还没搞懂的,不过能使用它们就很不错啦
{zh1}看看服务端界面方法关联的远程类事件
接受到参数传递的数据,处理下放到ListView显示出来,不过我记得Remoting远程类所xx的事件都应该是子线程的吧?怎么我这没报错(子线程不能操作主线程的控件)呢?
整个工程大概就是这样的,希望上面的思路不是很乱吧?
posted on 2010-03-17 17:25 阅读(4)