[导入]MSN工作模式的探讨
最近在做MSN在线状态查询器,在网上看了一些MSN的文章和一些网络方面的知识。现在谈一下我所了解的一点MSN的工作模式。由于资料不多,大部分是在英文网站上东看一句西看一句的,所以有些东西完全属于我的个人想象。
MSN messenger有两种工作模式:作为企业IM应用的LCS服务器模式和广为人知的公网passport服务器模式。在LCS服务器里的MSN messenger是由一台LCS服务器所管理的,LCS服务器只存储着用户的帐号和这个用户的“允许和阻止人名单”。在用户登陆服务器的时候,通过了AD认证,从服务器上取到“允许和阻止人名单”,然后断开和服务器的连接。
当用户注销或者做添加好友等变更好友名单操作的时候,用户会把自己机器上的“允许和阻止人名单”发送给LCS服务器,同步LCS服务器上的数据。登陆后用户得到了所有的buddy的ID,通过AD获得这些BUDDY的位置。再通过SIP协议和这些好友保持联系。如果对方的状态变动就会触发自己的MSN的BUDDY-STATUS—CHANGE事件。在外网没有AD服务器,我想可能是passport服务器担当这好友定位这一功能的。可以是这样操作,当用户登陆时记录一下登陆时的地址,当用户的好友登陆时获取到这个地址,然后再由类似SIP的点对点协议来交互。一旦上线就会发起一次对话。至于SIP(对话发起协议)具体的工作原理我还是不太清楚。
现在关于MSN的编程的接口有很多,我试过MSN自己提供的API,效果不错。微软还提供了一套LCS API。另外还有一个好像是第三方开发的RTC组件,我在用这个做MSN在线状态查询器。我用的方法是设置一个用户,强制所有人都允许他查看自己的状态。但是这样就要求经常要去AD里面设置用户的“允许和阻止人名单”,这点很麻烦,不知道谁有比较高明的方法。
我对MSN的认识还比较肤浅,很多地方属于猜想,有什么错的地方希望懂这方面知识的兄弟指正。
文章来源:http://www.agilelabs.cn/blogs/tian_fei/archive/2006/01/11/516.aspx