CYQ.Data数据框架通过在内部所有数据库的操作方法中,内置2两个AOP方法,来实现方法的拦截调整,简单的方法体如下:
public bool Fill( object where , params object [] aopInfo) { _Aop.Begin(Aop.AopEnum.Fill,_TableName, aopInfo);//AOP开始时的拦截 bool result = 正常的方法体代码及操作结果 _Aop.End(Aop.AopEnum.Fill, result, aopInfo);//AOP在方法结束时再一个调用 return result; } 通过这样的简单的拦截,可以轻松的在数据库操作前,先处理事情,在数据库操作后,再处理事情。 2:当我来到其它平台交流时,我只要选择授权挂靠就好了。
是不是有点像微博?博客园发展为数据平台,像51cto,csdn等,只要变成API开发者平台就行了,授权后数据直接对接过去,也省的两边发文章,是不?
因此,如果让我重新设计一个新的博客系统,我可能会考虑[单]用户组装形式,这样方便数据独立[进行外挂、内接、或私有成独立单用户博客系统]。
基于“文本数据库”减压方案的延申,如果,把每个用户的文章独立分散,而每个用户的文章又能自由的查询排序,最终的效果就是:
为每个用户建一个sqlite数据库文件保存数据。 这样的话,等于每个用户产生一个1个独立数据库,因此,除了首页,其它访问都变成了单用户博客系统,基本上也就没什么压力了。
<add key="Aop" value="Web.Aop,Web.Aop.AopAction"/>
A:当写完SQLite数据库后,将文章内容写成json输入到临时文本中。
C:定时器,定时从文本中按顺序执行插入或修改的内容。
/// <summary>
/// Aop函数的处理结果
/// </summary>
public enum AopResult
{
/// <summary>
/// 本结果将执行原有事件,但跳过Aop.End事件
/// </summary>
Default,
/// <summary>
/// 本结果将继续执行原有事件和Aop.End事件
/// </summary>
Continue,
/// <summary>
/// 本结果将跳过原有事件,但会执行Aop End事件
/// </summary>
Break,
/// <summary>
/// 本结果将直接跳出原有函数的执行
/// </summary>
Return,
由于Access已改装成队列式执行,因此更新流程需比插入多了一步要考虑的:
如:用户更新了A字段,这时队列还没更新进数据库,然后用户又更新了B字段。
这时候,只能产生2个更新文件到队列中,后者B不能直接复盖A,不然会造成A的修改丢失。