Welcome

首页 / 软件开发 / .NET编程技术 / A2D Framework - 看如何精简业务逻辑 - 缓存子系统

A2D Framework - 看如何精简业务逻辑 - 缓存子系统2014-06-15 cnblogs AaronA2D中一项功能是关于Cache的,能够将判断、获取、删除cache的代码缩减到 最少量,如下是Order业务逻辑的demo示范:

interface IOrder{[Cachable("Order.GetMessage", "Default", ExpireType = CacheExpireType.Absolutely, Increment = 5)]string GetMessage();[CacheEvict("Order.GetMessage", "Default")]void UpdateMessage(string userInput);}[AOPServiceEnabled]class OrderImpl : ContextBoundObject, IOrder{private string msg = "not changed message";public string GetMessage(){Thread.Sleep(2000); //模仿重负载处理,延时2秒return string.Format("{0}-{1}", msg, DateTime.Now);}public void UpdateMessage(string userInput){msg = userInput;}}
在OrderImpl(业务逻辑实现类)中,没有看到判断、更新、获取cache的代码 ,非常简洁(控制cache的代码写在了接口部分)。

那如何调用这个Order逻辑呢?

ObjectFactory.Register<IOrder, OrderImpl>();       //IoC注册
var o1 = ObjectFactory.Resolve<IOrder>();          //获取IOrder实例

ObjectFactory是A2D的IoC控制器,能进行两种方式的注入:普通Instance以 及单例。

看看主demo程序:

static void Main(string[] args){A2DConfig.LoadConfig();//A2D的配置文件,稍后给出ObjectFactory.Register<IOrder, OrderImpl>();var o1 = ObjectFactory.Resolve<IOrder>();int i = 1;while (true){if (i % 11==0)o1.UpdateMessage("changed at"+DateTime.Now); //调用这个函数后,会强制delete GetMessage所对应的缓存Thread.Sleep(1000);Console.WriteLine(o1.GetMessage());i++;}}
运行效果图: