InChatter系统之客户端实现原理与阶段小结
InChatter客户端的开发可以说是目前系统的阶段性结尾了。很抱歉的是,这篇文章来的这么晚,迟到了这么久。
在客户端的开发主要针对两个方面:
- 消息的传输与处理
- 消息的UI交互处理
一、消息的传输与处理
消息的传输示意图如下:

所有的消息的接受将首先通过事件发送到消息池,消息池接受消息做进一步处理。如果消息是发送给当前交互对象(系统消息或正在聊天的目标),消息将直接转发给交互窗体进行显示;否则,将弹出消息提示窗体,告知用户消息的到达。在此基础上,对于未读消息和离线消息也进行了对应的处理,这也是在上一节之后,系统的诸多变更之初,具体可参见源码部分。
理解了消息交互的整个流程,我们便可以更好的把握客户端部分的基础思路,因为目前的交互设计只是很简单和单调的一种,同样也由于本人水平有限,目前未想到更好的架构和思路,能够帮助使用者轻松解决客户端的UI交互部分的问题。
二、UI交互部分
(1)消息控件的界面显示部分

(2)消息交互主窗体包括系统消息和即时通信消息

(3)消息池部分。所有的消息的接受将首先通过事件发送到消息池,消息池接受消息做进一步处理。(消息池体现在消息提醒部分)

这里提供的只是一种方式,更多的表现形式还是看用户自己的系统要求和UI交互规范,所以客户端更多的是需要用户自己重新定制开发,我也会尽力在未来解决这个问题,哪怕提供更多的交互方式,目前仅支持WPF客户端,WinForm客户端敬请期待
三、小结
这是我的第一个开源项目,从去年接触到开源社区就一直心神向往,只是一直未找到合适的方向。最近由于工作需要,涉及到这样的一个项目,就拿出来跟大家分享下。
针对与Inchatter的客户端开发可以算是一个小的终结,是基础版本的终结,但却也是新的开始。在以后的开发将针对使用中的体验以及bug进行修正,同时不断的融入新的功能,所以现在更可以说是开发,像一个产品一样的开始。在此,欢迎大家就体验和功能以及bug和未来的功能进行讨论并提出宝贵意见。最大的希望能够在项目开发中能够帮到朋友们。
由于最初没有一个好的功能模型,所以一直是我自己在开发和维护。现在基础功能已初具雏形,欢迎喜欢开源、热爱开源的朋友一起为开源贡献自己的力量。有希望一起维护本项目的,也可以和我联系。
最后是分享下我的格言:开源、创新、博学、奉献。
期待在路上遇见你,一起为开源社区贡献我们的力量。
InChatter系统之客户端实现原理与阶段小结的更多相关文章
- InChatter系统之客户端消息处理中心
一.模块结构 首先来看下客户端消息处理中心模块的简单结构: ChatCallback:服务器端我们定义的回调接口IChatCallback的客户端实现 ChatMsgCenter:服务端的消息处理中心 ...
- 【转】深入分析 iBATIS 框架之系统架构与映射原理
深入分析 iBATIS 框架之系统架构与映射原理 iBATIS 通过 SQL Map 将 Java 对象映射成 SQL 语句和将结果集再转化成 Java 对象,与其他 ORM 框架相比,既解决了 Ja ...
- 团队项目-北航MOOC系统Android客户端 NABC
北航MOOC系统Android客户端 NABC (N) Need 需求 MOOC的全名是Massive Open Online Course,被称作大型开放式网络课程.2012年,美国的顶尖大学陆续设 ...
- InChatter系统之服务器开发(二)
现在我们继续进行InChatter系统的服务器端的开发,今天我们将实现服务契约同时完成宿主程序的开发,今天结束之后服务器端将可以正常运行起来. 系统的开发是随着博客一起的,颇有点现场直播的感觉,所有在 ...
- [课程设计]Scrum 3.1 多鱼点餐系统开发进度(第三阶段项目构思与任务规划)
Scrum 3.1 多鱼点餐系统开发进度(第三阶段项目构思与任务规划) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到 ...
- Scrum 3.1 多鱼点餐系统开发进度(第三阶段项目构思与任务规划)
Scrum 3.1 多鱼点餐系统开发进度(第三阶段项目构思与任务规划) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到 ...
- 广告系统中weak-and算法原理及编码验证
wand(weak and)算法基本思路 一般搜索的query比较短,但如果query比较长,如是一段文本,需要搜索相似的文本,这时候一般就需要wand算法,该算法在广告系统中有比较成熟的应 该,主要 ...
- iOS系统及客户端软件测试的基础介绍
iOS系统及客户端软件测试的基础介绍 iOS现在的最新版本iOS5是10月12号推出,当前版本是4.3.5 先是硬件部分,采用iOS系统的是iPad,iPhone,iTouch这三种设备,其中iPho ...
- Netty学习——服务器端代码和客户端代码 原理详解
服务器端代码和客户端代码 原理详解:(用到的API) 0.Socket 连接服务器端的套接字 1.TcompactProtocol 协议层2.TFrameTransport 传输层3.THsh ...
随机推荐
- 2016/05/19 thinkphp 3.2.2 文件上传
显示效果: 多文件上传. 这里是两个文件一起上传 上传到文件夹的效果: ①aa为调用Home下common文件夹下的function.php 中的rname方法 实现的 ②cc为调用与Home ...
- Apsara Clouder专项技能认证:实现调用API接口 (笔记)
- Django框架之ORM
1,字段和字段的参数 1.1>ORM的概念:对象映射模型(Objects Relational Model)是一种为了解决面向对象和关系型数据库存在的互不匹配的现象和技术,简单的说,ORM是通过 ...
- Educational Codeforces Round 18 C. Divide by Three DP
C. Divide by Three A positive integer number n is written on a blackboard. It consists of not more ...
- Tomcat 安装错误
安装tomcat时,遇到"failed to install tomcat6 service check your settings and permissions"的问题 安装时 ...
- mongodb05---游标
游标cursor: 通俗的说,游标不是查询结果,而是查询的返回资源,或者接口. 通过这个接口,你可以逐条读取.就像php中的fopen打开文件,得到一个资源一样, 通过资源,可以一行一行的读文件. v ...
- javascript base64 编码,兼容ie6789
用Javascript进行base64编码,在高版本的IE浏览器(IE9以上版本),和firefox,chrome浏览器里是非常方便的.这些浏览器的window对象中内置了base64的编码和解码方法 ...
- snnu1120: 划分数(DP计数问题)
1120: 划分数 Time Limit: 8 Sec Memory Limit: 128 MBSubmit: 6 Solved: 3[Submit][Status][Web Board] Des ...
- .NET获取汉字首字母
/// <summary> /// 获取汉字首字母(可包含多个汉字) /// </summary> /// <param name="strText" ...
- Mysql操作符号
1.比较运算符: = 相等 <> 不等于 != 这个也可以 > 大于 < 小于 >= 大于等于 <= 小于等于 2.逻辑运算符: is null ...