none
WCF Host端设计的疑惑 RRS feed

  • 问题

  •  刚接触WCF,有设计理念上的疑惑,希望各位大大们帮忙梳理一下~

    -------------------------------------------------------

    我希望做一个分布式的大厅服务(Servers-Lobbies-Rooms-Users结构)

    预期是每个服务器对应一个Server类,可以生成多个Lobby类,用户可以登录到对应Lobby中创建Room

    于是在Contracts这个项目中,写了IUserService接口和UserService实现。

    UserService中有:

    public UserService()
            {
                server.CreateLobby();
            }

    然后在Host项目中

    ServiceHost host = new ServiceHost(typeof(Contracts.UserService));
    host.open()

    结果是,每个Client链接到Host以后,Host都新建了一个server

    所以我猜想其实是对每一个client都调用了UserService的构造函数

    嗯,很自然的,这不是我想要的,我写错了

    现在的困惑在于

    1. 我是否应该把server的生成部分写在Host里,以保证只有一个Server类实例在运行

    2. 如果我这么做了,怎么把Server类的实例传递给UserService?

    3. 还是说我应该再写一个ServersController类,作为服务器端,接受现在的UserService访问生成一个Server类,然后Client再连接UserService;这样做的话,在效率以及实现(UserService既做服务端又做客户端)方面会不会有问题?

    谢谢~~~

    2012年9月19日 6:27

答案

  • 你的疑问是不是 server.CreateLobby(); 中的 server 不是同一个实例?

    如果是的话,你可以把 server 设置为 static ;或者设置 InstanceContextMode 为 Single。

    • 已标记为答案 Alex D'oh 2012年9月19日 6:52
    2012年9月19日 6:37

全部回复