none
WPF 网页 RRS feed

  • 问题

  • WPF 如何实现网页同步,即有两个客户端,在一个客户端打开网页,另外一个客户端也要同步显示,并且这两个客户端的网页显示的所有操作都是同步的,谢谢
    2011年7月22日 1:45

答案

  • 屏幕复制一定要考虑图像的质量,因为高质量的图像会增加图像大小,从而导致网络传输问题和再次呈现时候的性能问题。

    如果是网络的话,你一定要做好性能不佳的准备。因为网络上的不稳定因素太多了,不能保证每次都有很好的传输率。不过理论上是可行的。

    我这里给你说说X11这个在Linux Unix中被广泛使用的协议,这个协议适用于Linux Unix显示GUI的,他是一个网络协议,在类Unix系统中,所有的UI操作都可以被序列化成X11数据包,所以你会发现在通过X11远程控制类Unix系统时候,能够得到很好的效果和同步性。原因是,他们并不是通过传输屏幕截图,而是将每一次的操作编码成具体的数据包,进行传输,然后在客户端进行反编码,进行解析,最后呈现出一样的动作。

    这一点是否我们也可以借鉴,通过设计自己的动作规则,将用户的每一次的动作进行编码,然后通过网络传输这个比较轻量级的数据包,最后反编码,进行动作重现。不过设计这个动作协议比较复杂,你需要自己衡量你的需要和消耗。不然就用简单的方式,通过屏幕截图的方式,通过低质量可以接受的图像来进行同步。

    这里我再介绍一种协议 VNC http://zh.wikipedia.org/wiki/VNC,用于远程控制的,  他的For .Net库:http://cdot.senecac.on.ca/projects/vncsharp/

     

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年7月25日 4:09
    版主

全部回复

  • WPF不是做Web开发的,而且你的问题涉及到了自动化UI的东西,简单来讲就是很难去实现。

    如果你能够把具体的需求剥离出来,那么我们还可以讨论下。 比如你使用WebBrowser来显示网页的,你的两个客户端要同时访问同一个站点,这个是可以的。

    但是要所有操作都一样,那还不如做屏幕复制了。

    还有,WPF是UI技术,不涉及一些需求的分析,我相信你也只是用它来做你的UI,不可能用它做数据库操作的对吧?所以问题方向上就偏离论坛性质了。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年7月22日 3:42
    版主
  • 你好 Bob Bao,很高兴看到你的回复,如果我想做到所有操作都一样,并且采取你的建议,使用屏幕复制,我们现在底层使用Socket通讯实现的,我想问一下,这样的复制如何达到效果最高,界面显示或传输都不会出现卡壳的现象,期待你的回复

    2011年7月23日 0:49
  • 屏幕复制一定要考虑图像的质量,因为高质量的图像会增加图像大小,从而导致网络传输问题和再次呈现时候的性能问题。

    如果是网络的话,你一定要做好性能不佳的准备。因为网络上的不稳定因素太多了,不能保证每次都有很好的传输率。不过理论上是可行的。

    我这里给你说说X11这个在Linux Unix中被广泛使用的协议,这个协议适用于Linux Unix显示GUI的,他是一个网络协议,在类Unix系统中,所有的UI操作都可以被序列化成X11数据包,所以你会发现在通过X11远程控制类Unix系统时候,能够得到很好的效果和同步性。原因是,他们并不是通过传输屏幕截图,而是将每一次的操作编码成具体的数据包,进行传输,然后在客户端进行反编码,进行解析,最后呈现出一样的动作。

    这一点是否我们也可以借鉴,通过设计自己的动作规则,将用户的每一次的动作进行编码,然后通过网络传输这个比较轻量级的数据包,最后反编码,进行动作重现。不过设计这个动作协议比较复杂,你需要自己衡量你的需要和消耗。不然就用简单的方式,通过屏幕截图的方式,通过低质量可以接受的图像来进行同步。

    这里我再介绍一种协议 VNC http://zh.wikipedia.org/wiki/VNC,用于远程控制的,  他的For .Net库:http://cdot.senecac.on.ca/projects/vncsharp/

     

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年7月25日 4:09
    版主