通过实例分析WCF Duplex消息交换

 

   我的思路与之相似,需要服务端维护一个Dictionary的集合,用以保存客户端的信息。服务端在发送消息时,可以通过查找Dictionary对象,识别符合条件的客户端。当我还在思考这样的方式能否解决问题时,我在WCF官方网站上偶然发现了一个同样利用Duplex实现聊天室的Sample。

仔细阅读了实例代码,我恍然发现自己在思考程序设计时,并没有理解WCF最核心的价值,那就是“服务”。作为实现SOA体系架构的技术框架,WCF最重要的特征就在于能够定义和提供服务。以聊天室程序为例,虽然服务端会参与消息的交互,但却不应该参与到聊天中。也就是说,客户端与服务端的角色任务是不相同的。通过用例图可以看到两者之间的区别:      

 
图1:正确的用例图
 
图2:错误的用例图

   明确了以“服务”为核心的程序结构,我们才能够更好地利用WCF,定制自己的服务,分清楚服务的边界,定义好消息的格式。虽然,一个聊天室程序无法体现SOA的核心精神,然而树立面向服务的思想确实必要的。正如我们在开始面向对象程序设计时,需要树立面向对象的思想一样。

   该聊天室程序的实现主要通过Duplex来实现,其中又利用了MulticastDelegate与异步调用。其中,服务接口的定义如下:

   

<…………………………………………………………………………

来自:http://www.verydemo.com/demo_c92_i12932.html

猜你喜欢

转载自zhuhongweican301.iteye.com/blog/2072342