【问题标题】:Best practice to handle large WCF service处理大型 WCF 服务的最佳实践
【发布时间】:2009-06-24 15:19:14
【问题描述】:

我正在使用 WPF 开发一个 4 人网络游戏,并在此过程中学习 WCF。到目前为止,为了处理网络通信,我遵循了YeahTrivia game on Coding4Fun游戏的建议:我使用dualHttpBinding,并使用CallbackContract接口向客户端发送回消息。效果很好。

但是,我的服务变得非常庞大。它有方法/回调来处理游戏本身,还有聊天系统、登录/注册过程、匹配、花名册/玩家信息等。服务器和客户端都变得难以维护,因为一切都绑定到一个单一界面。例如,在客户端上,我必须将回调重定向到游戏页面、大厅页面等,我觉得这非常乏味。我希望能够处理游戏页面上的游戏回调、聊天窗口上的聊天回调等。

那么最好的处理方法是什么?我想过很多事情,但不确定哪个最好:将服务拆分为多个,在我的服务上有多个“端点”,或者是否有其他技巧可以在适当的情况下部分实现服务?

谢谢

【问题讨论】:

    标签: wcf service-design


    【解决方案1】:

    您应该有多个组件,每个组件都应该被限制为一个职责 - 不一定是一种方法,而是处理您正在处理的对象之一的状态。当您将所有内容都集中在一项服务中时,您的服务将与自身完美耦合。理想情况下,每个组件应尽可能独立。

    我想说的是,从有意义的地方开始拆分,事情应该更易于管理。

    【讨论】:

    • 我对 WCF 有点陌生,我该如何做到这一点?我不确定如何将我的服务拆分为多个组件。
    • 只需将您的服务合同接口拆分为多个新的服务合同接口。如果您不使用接口作为服务合同,那么我建议您查看方法签名并为要拆分的每个集合创建新接口。使这些接口中的每一个成为服务合同。有意义吗?
    • 谢谢,我会试试的。我不确定拆分合同并拥有多个端点是要走的路,因为我在多个端点上找到的所有样本似乎都说它为同一份合同。
    • Anthony,我强烈建议您获取 Juval Lowy 的“Programming WCF Services”的副本。这是 O'Reilly 的一本书,几乎是 WCF 圣经。它非常密集且技术性很强,但它是所有 WCF 事物的宝库。
    【解决方案2】:

    我会支持 Terry 的回应 - 你绝对应该将你的大界面分成几个较小的界面。

    此外,您可以将某些操作(例如注册和/或登录过程)隔离到更简单的服务中 - 对您的游戏一无所知,我认为这很可能是一个简单的非双工服务,例如提供一个有效的“玩家令牌”作为其输出,然后其他服务可以使用该令牌对玩家进行身份验证。

    多个更小、更精简的界面还使您可以选择创建单独的专用前端(例如,在 Silverlight 中或其他东西中),这些前端仅针对/处理整个系统的某些部分。

    马克

    【讨论】:

      猜你喜欢
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多