zoukankan      html  css  js  c++  java
  • 在Silverlight中使用ESFramework-- ESFramework 4.0 快速上手(05)

      Silverlight已经到4.0版本了,已经相当成熟了,在Silverlight中使用socket与服务器进行通信也是常见的需求,所以,作为.NET平台的通信框架,ESFramework支持Silverlight开发是必须的。

          ESFramework.SL 即是ESFramework提供的Silverlight开发组件,其完整实现了基于流的TCP客户端网络引擎,并与其非Silverlight的接口完全一致(即是ESFramework 4.0 快速上手文中提到的IRapidPassiveEngine)。也就是说,我们完全可以将ESFramework 4.0 快速上手 一文中提到的客户端引擎替换为ESFramework.SL的引擎来讲解,仍然是正确的。这两个Rapid客户端引擎,一个工作于windows应用程序,一个工作于Silverlight应用程序。但是,它们都可以共用同一个Rapid服务端引擎(IRapidServerEngine)。

    一.Silverlight 安全验证

      如同flash的socket编程的安全策略一样,在Silverlight中使用Socket,也需要安全策略验证。我们的服务器上必须启动Silverlight策略服务器程序监听943端口。SilverLight内置的Socket会在连接目标TCP端口之前先自动连接943端口以获取验证,通过验证后,才会去连接目标端口。

      比如说,我们的服务端应用程序在192.168.0.20的机器上使用TCP端口4530提供服务,当Silverlight的Socket连接4530端口之前,该Socket会自动先连接192.168.0.20的943端口,以进行安全验证,验证的过程是这样的:该Socket与192.168.0.20的943端口的TCP连接建立成功后,会发送"<policy-file-request/>"(UTF-8编码)给Silverlight策略服务器程序,策略服务器程序收到后,给客户端回复下面的内容以表示验证通过:

    <?xml version="1.0" encoding ="utf-8"?>
    <access-policy>
        
    <cross-domain-access>
            
    <policy>
                
    <allow-from>
                    
    <domain uri="*" />
                
    </allow-from>
                
    <grant-to>
                    
    <socket-resource port="4502-4534" protocol="tcp" />
                
    </grant-to>
            
    </policy>
        
    </cross-domain-access>
    </access-policy>

      客户端的Socket接收到这段回复后,才确认已经通过安全验证了。接下来,才会正式去连结192.168.0.20的4530端口。

      这个安全验证的过程,是由Socket自动完成的。针对ESFramework.SL.RapidPassiveEngine来说,就是在调用其Initialize方法时,自动发生的。

         要注意一点,服务器回复的策略文件的内容中包含“<socket-resource port="4502-4534" protocol="tcp" />” ,其含义是允许客户端以TCP的方式连接本服务器的4502-4534端口。所以,我们的服务端应用程序必须使用4502到4534之间的端口提供服务。

    二.Silverlight 策略服务器

      客户端的Socket的安全验证是自动完成的,但是安全验证的服务端程序必须由我们自己写。从上面的描述来看,所有的Silverlight安全验证都可以使用同一个服务端程序,所以,ESFramework 提供了Silverlight策略服务器程序ESFramework.SLPolicyServer.exe(从ESFramework 4.0 概述文末下载),可以直接拿来使用。

      在启动你自己的服务端程序之前,请在同一台机器先启动ESFramework.SLPolicyServer.exe,其运行界面如下:

        

    三.使用ESFramework.SL.RapidPassiveEngine

      ESFramework.SL.RapidPassiveEngine的使用方法与ESPlus.Rapid.RapidPassiveEngine是一样的,详细可以参见ESFramework 4.0 快速上手

          ESFramework.SL 也可以从ESFramework 4.0 概述文末下载。

    ESFramework 4.0 概述 (文末包含最新版本的ESFramework4.0以及相关demo、帮助文档下载)

    《ESFramework 4.0 快速上手》系列所有文章

    《ESFramework 4.0 高级进阶》系列所有文章

  • 相关阅读:
    第二章作业
    算法第五章作业及学期总结
    71 最大子列和问题 | 采用二分法+递归
    算法第一章作业
    算法第四章作业
    算法第三章作业
    Windows charles安装、配置及Android手机ca证书
    git出现fatal: Authentication failed for 'http:xxxx.git/''错误的解决办法
    如何用c#将十六进制转换成字符串?
    系统配置win7(64位),vs2010,没有注册类别 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))
  • 原文地址:https://www.cnblogs.com/zhuweisky/p/1975008.html
Copyright © 2011-2022 走看看