根据微软WCF开发经理Tomasz Janczuk所述,相对于HTTP Duplex来说,Net.TCP在如下方面进行了重大的改进:

    * 吞吐量:对于UI线程来说提升了5.5倍,对于worker线程来说提升了870倍。

    * 最大的客户端数量:服务器可支持的连接客户端数量是之前的5-6倍。

看来自己又OUT了到现在才开始做DEMO,于是在上网找资料,找啊找…“找啊找啊找朋友,找到一个好朋友…”最近这个歌唱多了。

先给出资源列表:

差不多了准备开工,按照《Silverlight4中用net.tcp双工方式进行通信》这篇文章第一个问题很快出来了,我的VS2010下面在线模板没有”silverlight tcp socket policy(cs)“这个模板,你们能找到不,反正我是没找到。

wcf_tcp_SilverlightTCPSocketPolicyServer

于是直接下载人家的代码把里面的policyserver直接弄到自己的工程里。别说,还真好使,编译通过了,监听端口也找到了,于是开始片客户端调用,很快就OK了。开始运行程序,心里这个美…“找啊找啊找朋友,找到一个好朋友…”,下场不用说了,开始报错。报错信息如下:

Could not connect to net.tcp://localhost:4502/MyService. The connection attempt lasted for a time span of 00:00:00.4270427. TCP error code 10013: An attempt was made to access a socket in a way forbidden by its access permissions.. This could be due to attempting to access a service in a cross-domain way while the service is not configured for cross-domain access. You may need to contact the owner of the service to expose a sockets cross-domain policy over HTTP and host the service in the allowed sockets port range 4502-4534.

而且报的是跨域访问的错,我KAO不是吧。在网上查了,有什么写XML文件的,有写代码的,五花八门。我就开始虚心的一个个试啊。能想到的都想到了就是没有结果。还好我装的是英文的IDE,直接把报错信息放到GOOGLE上搜索,我又找到了一个新说法

一句话概括:制作如下XML文件,命名为clientaccesspolicy.xml ,将其放置在IIS根目录下(一定要与程序配置文件中设定的IP一样),采用80端口能够访问。

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

测试一切正常。找啊找啊找朋友,找到一个好朋友…
posted on 2011-05-16 22:41  forrestsun  阅读(834)  评论(1编辑  收藏  举报