在开发我的 .NET 企业即时通讯软件(InteliIM)的过程中,冒出一个有关基于房间的即时通讯软件架构,翻译成英文即为 Room-based Instant Messenger。
该想法初步考虑是这样的:
通过把谈话过程组织成一个个房间,使谈话过程更加有趣和可定制。
每一个谈话过程都发生在一个房间(Room)里,每个房间都有各自的场景(Scene),场景规定了每个房间(Room)的规则,如是否上锁,是否允许超过三人的对话,是否可以播放背景音乐,是否有其他增值服务等等。
根据每个房间的规定,可以分为如 钟点房(只允许指定时间和/或指定时间段进行对话),标准房,VIP房(可享受各种增值服务,如听音乐,读新闻,和其他个人定制服务),休闲房(如可听音乐,看碟)等等。
通过将谈话过程组织成一个个房间,可以方便地将独立地谈话过程组织和联系起来,从而实现联机会议功能。
根据网络条件的不同,主要分为 Internet 环境和局域网(相对较好的网络环境)两种类型的房间。分别采用 Web 服务和套接字来实现这两种类型的房间。为什么采用 Web 服务来实现基于 Internet的房间呢?尽管牺牲了一部分速度,但是用 Web 服务可以穿透防火墙,可以在现今网络上无障碍地穿行。当然如果有很成熟的防火墙穿透实现也是可以拿来用的。