WF4.0实战(十五):伤心聊天室

简介:

大家都知道,一般能使用WCF的Callback Contract能实现聊天室。这篇文章我将使用WF4.0是实现我的伤心聊天室。先看效果,再讲如何实现和使用WF4.0的优势,最后总结。界面很简洁,请见谅。

效果篇:

    首先启动StartAChatRoom项目,开启伤心聊天室如下图:

shangxin001

登录:

shangxin002

聊天主界面:

shangxin003

上图的左边有一个复选框,你可以选择向哪些人发送信息。右上角是离开按钮。点击我要离开,就关闭你的聊天室客户端。

麒麟发送信息:

shangxin004

美女A接受到信息,如下图:

shangxin005

演示就到这里,下面讲述如何实现。

实现篇:

本文是利用了WF4.0里面的WCF服务的双工通信实现的,WF4.0里面的双工通信与WCF里面的实现方法不一样。详细见下面两篇文章:

Workflow 4 Services and duplex communications译文

More Workflow 4 Services and duplex communications译文

说到这里,你应该很清楚是如何实现的了。对,还是利用了WCF技术。不过我还是要讲述一下如何用WF4.0去实现的,这样也能加深你对WCF和WF的了解和以及它们之间的区别。

下图是我的代码的项目结构图:

shangxin006

ChatRoomService是WCF Workflow Service Application项目

ChatRoom_Client是WindowsForm项目

StartAChatRoom是控制台应用程序。

下面我就说一下核心的逻辑,其他的部分详见代码。

我假设你和我一样,对WCF稍微有些了解。否者就很难进行下去。:)

看下图:

shangxin007

上图可以看到伤心聊天室的逻辑了。它一共有6个方法:

1、开启聊天室。

2、加入聊天室。

3、离开聊天室。

4、将消息发送给所有人。

5、将消息指定发送给某些人。

6、获取本聊天室所有人员。

WF4.0的双工通信的实现部分是在客户段。

我在伤心聊天室的每个客户段开启一个WCF服务,代码如下:

            Random ro = new Random();
            int point = ro.Next(8000, 9999);
            ChatRoomCallback back = new ChatRoomCallback();
            address = "http://localhost:" + point + "/ServiceCallback";
            var serviceCallback = new ChatRoomCallback();
            serviceCallback.MainFrm = this;
            back.UISyncContext = SynchronizationContext.Current;
            var host = new ServiceHost(serviceCallback, new Uri(address));
            host.Open();
看上面代码你就知道,我将客户段的WCF服务的地址当参数传入服务端。如果你对WF稍微有些了解,你就知道可以用Send活动去调用WCF服务。
双击“加入聊天室”,看下面的截图:
 

这样已经很明白了,我的文章都提供了代码下载,直接看代码吧。:)

WF4.0优势可视化编程、直观、简单、设计时无代码或者很少量的代码。

总结:通过使用WF4.0实现了一个简单的聊天室,我想这个Demo还可以扩展。有建议和问题给我留言,谢谢,欢迎加入博客园WF4.0技术交流群。





本文转自麒麟博客园博客,原文链接:http://www.cnblogs.com/zhuqil/archive/2010/05/10/shangxinliaotianshi.html,如需转载请自行联系原作者

相关文章
|
9月前
|
小程序 数据库
云开发(微信-小程序)笔记(十五)---- 收藏,点赞(下)
云开发(微信-小程序)笔记(十五)---- 收藏,点赞(下)
82 0
|
安全 Android开发
21天打卡Andoid学到的一些小知识-第十九二十二十一天
今天我们学习打卡的内容是:android 10.0 去掉未知来源弹窗 默认授予安装未知来源权限
69 0
|
SQL 开发者 微服务
项目第八天内容介绍 | 学习笔记
快速学习 项目第八天内容介绍
64 0
项目第八天内容介绍 | 学习笔记
|
小程序 前端开发 容器
幼儿园小程序实战开发教程(下篇)
幼儿园小程序实战开发教程(下篇)
幼儿园小程序实战开发教程(下篇)
|
搜索推荐 Python
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十一)
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十一)
159 0
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十一)
|
Python
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十二)
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十二)
110 0
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十二)
|
索引
一起谈.NET技术,Silverlight+WCF 新手实例 象棋 主界面-棋谱-回放-结局(四十)
查看本系列其他相关文章请点击:Silverlight+WCF 新手实例象棋专题索引 在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 在Silverlight+WCF 新手实例 象棋 主界面-棋谱-回放(三十九)中,我们实现了用户的棋谱回放,在文章的下面,我们曾留下了两...
924 0
|
图形学 atlas 索引