跨平台的个人知识管理工具设计思路

来源:互联网 发布:淘宝店铺怎么改店名 编辑:程序博客网 时间:2024/04/30 16:25

目的:

为自己开发一款windows/linux下都能用的个人知识管理工具,同时学习linux的编程。因为很多时候在windows下使用,所以一般用MFC做开发比较好,但为了学习linux开发,就做成跨平台的,GUI使用GTK,数据处理使用linux c。


功能:

1、知识点的增删改搜索

2、知识点分类管理

3、知识点编辑要支持文本基本编辑、文本颜色和字体、插入图片

4、多人共享知识点

5、通信录的增删改搜索

6、行程计划管理,需要采用图形进行显示


基本设计思路:

windows上使用cygwin可能编译linux下的代码,但gtk等图形界面依赖于XFree,显示效果很差。可以使用GTK写界面,GTK的代码可以在windows上直接用mingw直接编译。界面和数据处理部件采用socket进行通信,采用TCP协议。数据部件直接使用linux下的代码,到cygwin下编译,而界面的通信代码部分,采用winsock编写。

数据处理部件需要完成的功能:

1、知识点、通信录、行程计划等数据的管理,单机版使用时,不应该额外部署数据库,所以采用sqlite作为本地数据库。

2、数据处理部件要能同时作为服务器和客户端,服务器负责所有用户数据的同步和存储,客户端负责数据同步和查询

3、为了便于后续利用此框架开发其他程序,需要将通信部分独立作为一个模块开发。

4、数据处理部分要支持日志,以便于后续问题定位实用。

5、多用户管理,用户名可以自行定义,但当同步到服务器上时,会自动检测是否重复,如果重复就要求输入密码,如果密码不对,会提示修改用户名以便以新的用户存入数据。

6、GUI连接本部件,可以在不认证的情况下,查询用户名,最多返回10个用户名,不再这10个中的,需要手工输入。

7、为了考虑性能问题,数据处理部件必须支持本地运行,而非做为服务器使用。


通信模块设计思路:

1、采用TCP方式

2、采用多线程结构,主线程负责客户端接入,其余线程负责单个客户端的具体通信。

3、服务器和本地数据处理采用同一种结构,但需要通过标识区分。




原创粉丝点击