本文共 4027 字,大约阅读时间需要 13 分钟。
上一节: 中,
我们解决了TXT数据存储和Json的交互问题,本节,看一下后台的业务逻辑:
爱说说: [当前版本已增加了音乐和表情]
先看Page_Load事件:
说明:通过分支,调用了不同的方法,最后通过outHtml输出Json到客户端。
下面进行详细的分支解说:
一:数据提交:[用户发布消息或回应消息时提交的数据]
参数约定:
类型参数:t=1
文本参数:v="这是提交的内容";
昵称参数:n="路过秋天"
回应参数:pid=-1,[回应时带回应消息的ID,非回应则为-1]
逻辑代码:
二:数据删除:[用户删除指定ID数据]
参数约定:
类型参数:t=2
行ID参数:v=88 [被删除行的ID]
逻辑代码
三:数据加载[首次加载及点击“浏览更多时”加载]
参数约定:
类型参数:t=3
值ID参数:v=id [最小ID,加载时都是取的最新的数据,每次都从后面取,所以比较最小ID]
分页参数:s=20[每次20条消息]
逻辑代码
四:定时数据加载[定时多少秒取一次数据]
参数约定:
类型参数:t=4
值ID参数:v=id,[最大ID,每次根据最大ID进行查询最新消息]
逻辑代码
五:总体规划[其它逻辑代码]
1:全局的定义:
说明:
maxRowID,这是为了保证每条数据都有一个不重复的ID。
_Table:定义为静态的,简单的就叫内存表。
day:由于TXT文本只保存一天数据,提交时需要判断是过天,如果是,需要新建新的TXT。
2:方法属性
2.1:内存表:
public MDataTable Table { get { if (_Table == null || day != Now.Day)//首次/缓存失效/第二天 { if (_Table != null) { _Table.Rows.Clear();//第二天,清除前一天数据行 } else { day = Now.Day; } //尝试加载文件 _Table = MDataTable.LoadFromJson(LoadText());//从文本加载 if (_Table.Columns.Count == 0) { _Table.Columns.Add("ID", SqlDbType.Int);//ID标识 _Table.Columns.Add("ParentID", SqlDbType.Int);//>0说明是回贴 _Table.Columns.Add("UserID", SqlDbType.Int); _Table.Columns.Add("NickName", SqlDbType.NVarChar); _Table.Columns.Add("Body", SqlDbType.NVarChar);//内容 _Table.Columns.Add("CreatedOn", SqlDbType.DateTime);//创建日期 AppendText(_Table.Columns.ToJson());//首行写表架构信息 } } return _Table; } }
2.2:最大行ID
2.3:文件的保存路径:这个不多解释了
public string FilePath { get { string path = AppDomain.CurrentDomain.BaseDirectory + "txtFile/" + Now.ToString("yyyyMM") + "/"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } path = path + Now.Day + ".txt"; if (!File.Exists(path)) { File.Create(path).Close(); } return path; } }
3: 的Select函数介绍:可以方便查询满足条件的行
/// <summary>
/// 表查询[支持分页与单个条件] /// </summary> /// <param name="pageIndex">页索引</param> /// <param name="pageSize">每页多少条</param> /// <param name="reverse">反转排序</param> /// <param name="column">条件列</param> /// <param name="op">条件符号</param> /// <param name="value">条件过滤值</param> /// <returns>返回新的MDataTable</returns> public MDataTable Select(int pageIndex, int pageSize, bool reverse, string column, Op op, object value)
最后总结:
本节的后台逻辑代码就到此结束。
当然“”后面扩展和完善了很多,本文就不纠结的一个一个讲了,
只把大体功能讲完,就开源了,大伙再细看细节方面代码。
下一节我们讲客户端调用及优化等注意事项,敬请关注。
版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:
http://www.cnblogs.com/cyq1162/archive/2011/04/27/2030446.html