我目前正处于使用Silverlight设计基于浏览器的游戏的早期阶段。该游戏将有2-4位玩家(可能甚至多达8位)的许多比赛,并且将基于回合。

前端是Silverlight 3.0,因为我在那里有一些经验。我试图弄清楚后端应该是什么。由于游戏是回合制,因此它不需要像实时游戏那样频繁地轮询服务器。服务器端将包括某种中间层,该中间层在客户端和后端之间进行通信。后端将是基于C#的Windows服务,该服务将根据用户操作(攻击,防御,移动,技能,练级等)执行验证和计算。

Silverlight 3.0客户端与服务器上的C#Windows服务之间的中间通信层,以下内容的优缺点是什么?

  • 套接字
  • WCF/WCF双工服务
  • .Net RIA服务

  • 目前,我对上述三个选项一无所知,但是我过去创建过ASP.Net Web服务,在大学里,我做了一些套接字编程,而这些编程我大多都忘了。

    最佳答案

    这是我对事情的看法:

    socket :
    好的方面是,这可以表现得非常好。缺点是在客户端和服务器上实现都有些脆弱和复杂。除非没有其他方法,否则我会避免这种情况(例如,您需要非常高的性能)。

    WCF/WCF双工:
    如果只花十分钟考虑要来回发送的内容,则WCF非常容易实现。性能良好且易于部署。这将是我选择在线游戏的首选。

    WCF Duplex稍微复杂一些。关于如何使它起作用,有一些很好的教程,但是我发现存在一些陷阱,可能不值得为此付出努力。如果不需要很高的轮询间隔,我会坚持使用常规的WCF。据我所知,WCF Duplex也可以进行轮询,因此它并不是真正的双工。

    .NET RIA服务:
    我不确定这一点,但是我认为在拥有大量流量的情况下,开销并不是您所需要的。同样从论坛问题中我了解到,自定义不是那么容易,而WCF更灵活。

    结论:
    除非有一些令人信服的理由不这样做,否则我会坚持使用WCF。

    10-02 04:26