InChatter客户端的开发可以说是目前系统的阶段性结尾了。很抱歉的是,这篇文章来的这么晚,迟到了这么久。

在客户端的开发主要针对两个方面:

  1. 消息的传输与处理
  2. 消息的UI交互处理

一、消息的传输与处理

消息的传输示意图如下:

所有的消息的接受将首先通过事件发送到消息池,消息池接受消息做进一步处理。如果消息是发送给当前交互对象(系统消息或正在聊天的目标),消息将直接转发给交互窗体进行显示;否则,将弹出消息提示窗体,告知用户消息的到达。在此基础上,对于未读消息和离线消息也进行了对应的处理,这也是在上一节之后,系统的诸多变更之初,具体可参见源码部分。

理解了消息交互的整个流程,我们便可以更好的把握客户端部分的基础思路,因为目前的交互设计只是很简单和单调的一种,同样也由于本人水平有限,目前未想到更好的架构和思路,能够帮助使用者轻松解决客户端的UI交互部分的问题。

二、UI交互部分

(1)消息控件的界面显示部分

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

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

这里提供的只是一种方式,更多的表现形式还是看用户自己的系统要求和UI交互规范,所以客户端更多的是需要用户自己重新定制开发,我也会尽力在未来解决这个问题,哪怕提供更多的交互方式,目前仅支持WPF客户端,WinForm客户端敬请期待

三、小结

这是我的第一个开源项目,从去年接触到开源社区就一直心神向往,只是一直未找到合适的方向。最近由于工作需要,涉及到这样的一个项目,就拿出来跟大家分享下。

针对与Inchatter的客户端开发可以算是一个小的终结,是基础版本的终结,但却也是新的开始。在以后的开发将针对使用中的体验以及bug进行修正,同时不断的融入新的功能,所以现在更可以说是开发,像一个产品一样的开始。在此,欢迎大家就体验和功能以及bug和未来的功能进行讨论并提出宝贵意见。最大的希望能够在项目开发中能够帮到朋友们。

由于最初没有一个好的功能模型,所以一直是我自己在开发和维护。现在基础功能已初具雏形,欢迎喜欢开源、热爱开源的朋友一起为开源贡献自己的力量。有希望一起维护本项目的,也可以和我联系。

最后是分享下我的格言:开源、创新、博学、奉献。

期待在路上遇见你,一起为开源社区贡献我们的力量。

InChatter系统之客户端实现原理与阶段小结的更多相关文章

  1. InChatter系统之客户端消息处理中心

    一.模块结构 首先来看下客户端消息处理中心模块的简单结构: ChatCallback:服务器端我们定义的回调接口IChatCallback的客户端实现 ChatMsgCenter:服务端的消息处理中心 ...

  2. 【转】深入分析 iBATIS 框架之系统架构与映射原理

    深入分析 iBATIS 框架之系统架构与映射原理 iBATIS 通过 SQL Map 将 Java 对象映射成 SQL 语句和将结果集再转化成 Java 对象,与其他 ORM 框架相比,既解决了 Ja ...

  3. 团队项目-北航MOOC系统Android客户端 NABC

    北航MOOC系统Android客户端 NABC (N) Need 需求 MOOC的全名是Massive Open Online Course,被称作大型开放式网络课程.2012年,美国的顶尖大学陆续设 ...

  4. InChatter系统之服务器开发(二)

    现在我们继续进行InChatter系统的服务器端的开发,今天我们将实现服务契约同时完成宿主程序的开发,今天结束之后服务器端将可以正常运行起来. 系统的开发是随着博客一起的,颇有点现场直播的感觉,所有在 ...

  5. [课程设计]Scrum 3.1 多鱼点餐系统开发进度(第三阶段项目构思与任务规划)

    Scrum 3.1 多鱼点餐系统开发进度(第三阶段项目构思与任务规划) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到 ...

  6. Scrum 3.1 多鱼点餐系统开发进度(第三阶段项目构思与任务规划)

    Scrum 3.1 多鱼点餐系统开发进度(第三阶段项目构思与任务规划) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到 ...

  7. 广告系统中weak-and算法原理及编码验证

    wand(weak and)算法基本思路 一般搜索的query比较短,但如果query比较长,如是一段文本,需要搜索相似的文本,这时候一般就需要wand算法,该算法在广告系统中有比较成熟的应 该,主要 ...

  8. iOS系统及客户端软件测试的基础介绍

    iOS系统及客户端软件测试的基础介绍 iOS现在的最新版本iOS5是10月12号推出,当前版本是4.3.5 先是硬件部分,采用iOS系统的是iPad,iPhone,iTouch这三种设备,其中iPho ...

  9. Netty学习——服务器端代码和客户端代码 原理详解

    服务器端代码和客户端代码 原理详解:(用到的API) 0.Socket 连接服务器端的套接字 1.TcompactProtocol   协议层2.TFrameTransport   传输层3.THsh ...

随机推荐

  1. #include "*.c"文件的妙用

    今天我在看代码的时候突然看到在一个.c文件里包括了#include "*.c"代码,这个让我非常诧异,然后google了一下.才发现是这么回事情.以下我写了一个測试代码.我相信你看 ...

  2. Codeforces 757 D. Felicity's Big Secret Revealed 状压DP

    D. Felicity's Big Secret Revealed   The gym leaders were fascinated by the evolutions which took pla ...

  3. JSON使用总结

    参考网站 官网: http://www.json.org/ 菜鸟教程:http://www.runoob.com/json/json-tutorial.html 什么是 JSON ? JSON 指的是 ...

  4. 系统队列中的Windows错误报告

  5. 用css解决Unigui在IE系列浏览器中字体变小的问题(设置UniServeModule的customcss属性)

    Unigui运行在chrome浏览器下可以有最佳的效果,但用ie打开用unigui做的项目会发现字体明显小一截,可以用自定义css来解决这个问题. 可以在UniServeModule的customcs ...

  6. 加载之ready和onload

    页面加载完成有两种事件,一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件),二是onload,指示页面包含图片等文件在内的所有元素都加载完成. 真不知道这个标题该怎么取,暂时就先凑 ...

  7. Lightoj 1017 - Brush (III)

    1017 - Brush (III)    PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Sam ...

  8. YTU 2887: D--机器人Bill

    2887: D--机器人Bill 时间限制: 1 Sec  内存限制: 128 MB 提交: 112  解决: 22 题目描述 最近,Dr. Jiang 新设计一个机器人Bill.Bill很聪明,会做 ...

  9. linux永久或临时修改dns

    1.临时修改网卡DNS地址 sudo vim /etc/resolv.conf 改为如下内容: nameserver 8.8.8.8 #修改成你的主DNS nameserver 8.8.4.4 #修改 ...

  10. redhat输入用户名密码后又跳回到登录

    一.如果忘记密码,可以进入single模式修改密码: 1.进入linux启动界面之后按e进入如下界面 2.按选择kernel /vmlinuz-2.4.20-8 ro root=LABEL=/ 项,按 ...