根据微软WCF开发经理Tomasz Janczuk所述,相对于HTTP Duplex来说,Net.TCP在如下方面进行了重大的改进:
* 吞吐量:对于UI线程来说提升了5.5倍,对于worker线程来说提升了870倍。
* 最大的客户端数量:服务器可支持的连接客户端数量是之前的5-6倍。
看来自己又OUT了到现在才开始做DEMO,于是在上网找资料,找啊找…“找啊找啊找朋友,找到一个好朋友…”最近这个歌唱多了。
先给出资源列表:
- Self-hosted NET.TCP WCF for Silverlight 4
- WCF NET.TCP Protocol in Silverlight
- Network Security Access Restrictions in Silverlight
- Silverlight4中用net.tcp双工方式进行通信
差不多了准备开工,按照《Silverlight4中用net.tcp双工方式进行通信》这篇文章第一个问题很快出来了,我的VS2010下面在线模板没有”silverlight tcp socket policy(cs)“这个模板,你们能找到不,反正我是没找到。
于是直接下载人家的代码把里面的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> 测试一切正常。找啊找啊找朋友,找到一个好朋友…