其实也可以在SQL中存入XML数据
查询时用select * from table for xml auto等形式
http://msdn.microsoft.com/zh-cn/library/ms189887.aspx
流水号生成法,如果你的服务器永远不会挂掉,那么就这个
public static class SerialGenerator
{
private static DateTime currentDate;
private static long identity;
private static readonly object locker = new object();
public static string Generate()
{
lock (locker)
{
if (currentDate != DateTime.Today)
{
currentDate = DateTime.Today;
identity = 1;
}
identity++;
return String.Format("{0:yyyyMMdd}{1:########}", currentDate, identity);
}
}
}
这个类应该能生成16位唯一ID,但要求这个类只能部署在一台服务器上,不可集群
如果你的服务器会挂掉,请随时把currentDate和identity找个可持久化的地方(数据库、文件系统之类的)保存起来
如果你的服务器会集群,请找一台服务器专门负责这个类,然后用WebService或者RPC或者随便什么的方法集中调用,切不可在多台服务器上部署这功能
最简单的方式是使用时间格式(yyyyMMddmmss)
如果仅仅是想进行缓存(空间换时间)的话,可能你的逻辑搞复杂了。生成某xml作为数据库数据计算后的结果缓存,在有效期内不经计算直接返回该xml。可设定固定的过期时间,一旦超过该时间就重新生成该xml,而不管数据库是否发生了变化。这样做的好处是系统间关联小,缓存文件不用关心数据库的业务逻辑,只是简单对时间进行监控;风险是,会发生一定的不同步情况。
作为变态手段,可在数据库发生修改时强制生成该文件,那么就可以免除不同步的困扰,同时过期时间变为无限期。缺点是,对数据库发生变化的事件监听要求过于苛刻。