处理大型WCF服务的最佳实践

时间:2009-06-24 15:19:15

标签: wcf service-design

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

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

那么处理这个问题的最佳方法是什么?我已经想到了很多东西,但不确定哪个是最好的:将服务分成多个,在我的服务上有多个“端点”,还是有其他技巧可以在适当的时候部分实现服务?

由于

2 个答案:

答案 0 :(得分:4)

你应该有多个组件,每个组件应该限制为一个责任 - 不一定是一个方法,而是处理你正在处理的一个对象的状态。如果您拥有一切服务,那么您的服务就非常适合自己。最理想的是,每个组件应尽可能独立。

我会先说将它拆分到有意义的地方,事情应该更容易管理。

答案 1 :(得分:1)

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

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

多个更小,更精简的界面还为您提供了可能创建单独的专用前端(例如在Silverlight或其他东西中)的选项,这些前端将定位/处理整个系统的某些部分。

马克

相关问题