在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 高级进阶》系列所有文章

 

 

posted @ 2011-03-07 17:52  zhuweisky  阅读(2249)  评论(1编辑  收藏  举报