互联网游戏当然离不开通信技术的支持,对于Silverlight,哪一种通信技术最适合开发MMORPG游戏呢?本文通过比较Silverlight支持的几种主要的通信技术的特性和适用环境,选择一款最适合我们的。

1 Socket

提到开发游戏,性能和速度当然是第一位的,Socket应该是首选的通信技术。因为所有的Silverlight通信技术都是基于TCP/IP的,Socket可以直接控制TCP/IP的连接和数据传输,对于网络游戏开发者来说,可以提供最大的灵活度和可控性,不过编程也是最复杂的。
对于专业的Silverlight网络游戏来说,毫无疑问Socket是首选了。然而对于业余游戏开发者来说,Socket的缺点也是致命的。首先,如果使用Socket,必须在服务器端运行TCP Server程序,只有租用独立主机的环境才可能部署,对于大多数共享的web空间是不允许的。而租用独立主机的价格是共享的web空间的几十倍,不是普通人可以承受的。对于广大的业余游戏开发爱好者,例如笔者,使用Socket的成本太高,不得不放弃。有的朋友可能会说,我们可以在自己的机器上部署,然后通过宽带共享出来。虽然这也是一个选择,但是家庭用宽带的质量实在不能恭维,无论是反应速度,传输速度还是可靠性都比专业的web租用环境差许多。笔者以前曾经用自家的2M的cable宽带(比ADSL质量好)做过试验,从外面连接家里的web服务器,打开一个简单的网页都很慢,支持游戏就更不用想了。
其次,Silverlight可以使用的TCP端口为4502–4534,很可能被终端用户的防火墙所屏蔽,导致游戏无法连接。尽管用户可以关闭防火墙或者打开这些TCP端口,不过这无形中增加了用户使用该游戏的复杂度,违背了web游戏‘打开浏览器就能玩’的原则。
结论是Socket可以提供最好的性能,但是只适合于专业Silverlight游戏开发。对于业余Silverlight游戏开发fans,只能从众多的基于web的服务中选择一个了。

2 Web Service

基于SOAP协议的Web Service应该是大家再熟悉不过的了,古朴,简单,通用,跨平台,优点一大堆。如果没有特殊需要,Web Service是很不错的选择。不过缺点也显而易见,SOAP协议封装带来不少传输开销,效率不高,用来开发游戏不太适合。

3 REST

REST Web服务主要用来从服务器读取大量文本信息,例如XML文档。简单但是不太易用,因为无法通过Visual Studio来自动添加服务,生成代理代码。尽管REST与Web Service相比减少了SOAP协议封装开销,但未经过压缩的数据量依然不小。同时编程的不便也是放弃该技术的原因之一。

4 WCF

自从.Net 3.0开始,就有了WCF。WCF是微软主打的解决网络通信问题的万能钥匙,也就是说,如果你使用Window平台,微软希望你首选WCF。WCF很强大,也很灵活,通过不同的Binding方式,可以满足不同的需要,这里仅讨论Silverlight支持的几种Binding方式。
首先是BasicHttpBinding,Silverlight 2唯一支持的方式,基本上与普通的Web Service完全相同。也就是说,从客户端的角度看不出什么差别。当然Web Service的优缺点也就一并继承过来。结论也一样,不适合游戏开发。
从Silverlight 3开始支持WCF CustomBinding,缺省支持Binary Encoding。数据不再用明文传输,而是压缩后用二进制方式传输,据统计可以减少30-50%的传输量。与前面提到的技术相比较,WCF Binary Encoding是不错的选择。
WCF Duplex services支持服务器与客户端的双向通信,即不仅是客户端发起服务请求,服务器也可以主动发送消息。对于某些类服务,例如证券交易信息,外汇牌价信息,天气预报等服务,是很适合的。然而WCF Duplex services在服务器端的开销是很大的,因为其实现机制是对于每个客户服务,每次通信完毕后并不关闭连接,所以服务器可以通过该连接主动发送下一个消息。显而易见,如果很多用户连接该服务,服务器承受的压力是很大的。因此WCF Duplex services比较适合在Intranet环境,最大连结数控制在几十个。对于Silverlight游戏开发就不太适合了。
从Silverlight 4开始支持WCF net.tcp binding。其性能堪比Socket,同时享有WCF编程的便利,真是好东东啊。不过很遗憾,与Socket一样,我们业余fans无法享用该技术。首先,需要IIS设置上使能net.tcp协议。笔者的web hosting服务商回答:在shared web host上不支持该协议,如果需要该协议,建议租用独立主机。lots of $$$...其次WCF net.tcp binding与Socket一样有TCP端口的限制。可想而知,结论和Socket也一样,不是业余fans的选择。

5 WCF RIA Services

最后让我们来看一下Silverlight的新宠,Silverlight 4的明星:WCF RIA Services。尽管它是基于WCF的,但是我们根本不用意识到这一点。通过Visual Studio给我们提供的巨大便利,我们几乎可以通过傻瓜的方式来从客户端(Silverlight) 来直接操作服务器端的数据库,所有的中间过程(类的生成,建立连接等)都由Visual Studio代劳了。对于Silverlight商用软件来说,WCF RIA Services简直方便极了,就像linq一样,一旦用起来,就再也舍不得放下。还有一个原因,WCF RIA Services是为Silverlight量身定做的产品,实为Silverlight通信技术的首选啊。不过等等,对于Silverlight游戏开发,WCF RIA Services同样那么美好吗?经过反复思量,笔者得出相反结论。原因如下:
首先,WCF RIA Services略嫌臃肿,有点牛刀的感觉。对于斤斤计较的Siverlight游戏,几百KB额外的传输量有点不太划算。
其次,WCF RIA Services适合于大量的数据库select/insert/update/delete操作,对于游戏简单逻辑来说有点大材小用。
最后,尽管没有找到佐证,由于WCF RIA Services相当于在WCF上包装了一层,性能上相信比WCF要损失一些。
综上所述,对于业余Silverlight游戏开发者来说,笔者认为最合适的技术是WCF Binary Encoding。同时使用起来也是最简单的,因为缺省的Silverlight-Enabled WCF Service就是Binary Encoding。当然这只是笔者的看法,如果大家有什么不同见解,欢迎一起讨论。

转载于:https://www.cnblogs.com/erichan/archive/2010/06/04/1751694.html

面向Web服务的游戏设计1:选择适合的Silverlight通信技术相关推荐

  1. 选择适合的Silverlight通信技术

    互联网游戏当然离不开通信技术的支持,对于Silverlight,哪一种通信技术最适合开发MMORPG游戏呢?本文通过比较Silverlight支持的几种主要的通信技术的特性和适用环境,选择一款最适合我 ...

  2. SOA 设计原则和 Web 服务中的数据传输

    SOA 被翻译为面向服务架构,它应该是创建从自治服务生成系统的一个架构方法,它的目的是更方便地进行集成. SOA是Web 服务的一个自然延伸,因为Web 服务只是解决了异构系统之间的互操作,并没有降低 ...

  3. 以 OSGi 包的形式开发和部署 Web 服务

    简介 OSGi 是一个面向 Java 的动态模块系统.OSGi Alliance(请参见 参考资料)发布了模块系统的规范.一些受欢迎的 OSGi 容器包括 Eclipse Equinox(请参见 参考 ...

  4. 将文件传递到Web服务

    Web服务协议的发展已从支持具有简单参数的非常简单的请求发展为完全支持现代的面向对象的语言. XML-RPC可以说是Web服务的最早形式之一,它仅支持简单类型-字符串,整数,布尔值等. SOAP通过其 ...

  5. 一文讲透推荐系统提供web服务的2种方式

    作者丨gongyouliu 编辑丨zandy 来源 | 大数据与人工智能(ID: ai-big-data) 推荐系统是一种信息过滤技术,通过从用户行为中挖掘用户兴趣偏好,为用户提供个性化的信息,减少用 ...

  6. 在ASP.NET AJAX 1.0框架中访问Web服务

    一. 简介     如今,微软最新推出的AJAX框架为ASP.NET AJAX 1.0(下载地址为[url]http://ajax.asp.net/downloads/default.aspx[/ur ...

  7. 用SVG技术实现动态图形输出的嵌入式Web服务

    摘   要  本文结合控制系统对嵌入式Web服务器的要求,分析了嵌入式Web服务器的基本原理.动态内容实现方法,并结合实例着重介绍了基于SVG技术实现动态图形输出的方法. 关键字  嵌入式系统  SV ...

  8. Web服务與.NET Remotin的選擇

    使用 Microsoft .NET 建立分布式应用程序 Priya Dhawan Tim Ewald Microsoft Developer Network 2002 年 9 月 适用于: Micro ...

  9. [收集] Web服务相关的, 介绍框架(framework)类的论文

    收集了部分Web服务相关的, 介绍框架(framework)类的论文 <RECORD 1> WSCF: A framework for web service-based applicat ...

最新文章

  1. 新CCIE笔记之'口口相传'路由协议
  2. dsp广告和信息流广告区别_一文搞懂DSP-蘑菇街DSP广告实践
  3. 科大星云诗社动态20210321
  4. poj2431 Expedition
  5. linux ssh 远程会话保存,远程SSH会话和流程在断开后运行的5种方法
  6. strictmath_Java StrictMath cos()方法与示例
  7. 中移4G模块-ML302-OpenCpu开发-HTTP
  8. 看下资深架构师平时需要解决的问题,对比你离资深架构师还有多少距离——再论技术架构的升级之路...
  9. notepad++ 技巧
  10. 微软公布Netgear 固件严重漏洞详情,可盗取用户身份并攻陷系统
  11. android点击图片跳转页面底部,【报Bug】安卓底部选项卡webview模式下 点击跳转到某个页面后,会出现底部重叠的问题...
  12. (HDU)1061 --Rightmost Digit( 最右边的数字)
  13. Oracle数据库中dml提交,奇怪,ORACLE的触发器的DML操作,没有COMMIT,居然也能真正的提交掉???...
  14. NuxtJS快速入门
  15. php paypal支付接口文档,php 实现PayPal支付
  16. 如何用计算机求特征值特征向量,利用QR算法求解矩阵的特征值和特征向量
  17. 关于“微信公众平台测试号管理接口配置信息配置失败”的问题解决办法
  18. 什么是千行代码缺陷率?
  19. matlab导入origin,matlab导入origin
  20. 如何在微信小程序里实现聊天室功能?

热门文章

  1. 全新三网免挂码支付系统/微信金额免输入/源支付2.2/thinkphp开发的聚合免签支付系统
  2. Win7桌面怎么显示我的电脑图标
  3. 银行案例启示:莫把客户投诉当小事
  4. G1与CMS垃圾回收
  5. 电脑如何调整分辨率大小查看网页
  6. 记录一下大三找实习的过程
  7. 用 bat 批处理命令启动 Android Studio 自带模拟器
  8. 【解决方案】英文论文投稿提交中显示“ unauthorized content”——投稿系统Editorial Manager
  9. springboot红色吕梁网站的设计与开发毕业设计源码150923
  10. 【毕业设计】基于深度学习的图像超分辨率重建 - opencv python cnn